Skip to content
This repository was archived by the owner on Mar 17, 2025. It is now read-only.

Commit 1bb5527

Browse files
committed
firebaseobject: fix number decoding
1 parent 80eda4e commit 1bb5527

File tree

2 files changed

+34
-16
lines changed

2 files changed

+34
-16
lines changed

src/FirebaseObject.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@ bool FirebaseObject::getBool(const String& path) {
3434

3535
int FirebaseObject::getInt(const String& path) {
3636
JsonVariant variant = getJsonVariant(path);
37-
if (!variant.is<int>()) {
38-
error_ = "failed to convert to int";
37+
if (!variant.is<int>() && !variant.is<float>()) {
38+
error_ = "failed to convert to number";
3939
return 0;
4040
}
4141
return static_cast<int>(variant);
4242
}
4343

4444
float FirebaseObject::getFloat(const String& path) {
4545
JsonVariant variant = getJsonVariant(path);
46-
if (!variant.is<float>()) {
47-
error_ = "failed to convert to float";
46+
if (!variant.is<float>() && !variant.is<int>()) {
47+
error_ = "failed to convert to number";
4848
return 0;
4949
}
5050
return static_cast<float>(variant);

test/FirebaseArduino_test.cpp

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,37 @@ TEST(FirebaseObjectTest, GetBool) {
2626
}
2727

2828
TEST(FirebaseObjectTest, GetInt) {
29-
FirebaseObject obj("42");
30-
EXPECT_EQ(42, obj.getInt());
31-
EXPECT_TRUE(obj.success());
32-
EXPECT_FALSE(obj.failed());
33-
EXPECT_EQ(obj.error(), "");
29+
{
30+
FirebaseObject obj("42");
31+
EXPECT_EQ(42, obj.getInt());
32+
EXPECT_TRUE(obj.success());
33+
EXPECT_FALSE(obj.failed());
34+
EXPECT_EQ(obj.error(), "");
35+
}
36+
{
37+
FirebaseObject obj("42.0");
38+
EXPECT_EQ(42, obj.getInt());
39+
EXPECT_TRUE(obj.success());
40+
EXPECT_FALSE(obj.failed());
41+
EXPECT_EQ(obj.error(), "");
42+
}
3443
}
3544

3645
TEST(FirebaseObjectTest, GetFloat) {
37-
FirebaseObject obj("43.0");
38-
EXPECT_EQ(43, obj.getFloat());
39-
EXPECT_TRUE(obj.success());
40-
EXPECT_FALSE(obj.failed());
41-
EXPECT_EQ(obj.error(), "");
46+
{
47+
FirebaseObject obj("43.0");
48+
EXPECT_EQ(43, obj.getFloat());
49+
EXPECT_TRUE(obj.success());
50+
EXPECT_FALSE(obj.failed());
51+
EXPECT_EQ(obj.error(), "");
52+
}
53+
{
54+
FirebaseObject obj("43");
55+
EXPECT_EQ(43, obj.getFloat());
56+
EXPECT_TRUE(obj.success());
57+
EXPECT_FALSE(obj.failed());
58+
EXPECT_EQ(obj.error(), "");
59+
}
4260
}
4361

4462
TEST(FirebaseObjectTest, GetString) {
@@ -66,15 +84,15 @@ TEST(FirebaseObjectTest, GetIntFailure) {
6684
EXPECT_EQ(obj.getInt(), 0);
6785
EXPECT_FALSE(obj.success());
6886
EXPECT_TRUE(obj.failed());
69-
EXPECT_EQ(obj.error(), "failed to convert to int");
87+
EXPECT_EQ(obj.error(), "failed to convert to number");
7088
}
7189

7290
TEST(FirebaseObjectTest, GetFloatFailure) {
7391
FirebaseObject obj("{\"foo\":\"bar\"}");
7492
EXPECT_EQ(obj.getFloat(), 0);
7593
EXPECT_FALSE(obj.success());
7694
EXPECT_TRUE(obj.failed());
77-
EXPECT_EQ(obj.error(), "failed to convert to float");
95+
EXPECT_EQ(obj.error(), "failed to convert to number");
7896
}
7997

8098
TEST(FirebaseObjectTest, GetBoolFailure) {

0 commit comments

Comments
 (0)