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

[FirebaseObject] Error message is never reset #390 #391

Merged
merged 1 commit into from
Nov 20, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 56 additions & 3 deletions contrib/test/FirebaseArduino_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ TEST(FirebaseObjectTest, GetInt) {

TEST(FirebaseObjectTest, GetFloat) {
{
FirebaseObject obj("43.0");
EXPECT_EQ(43, obj.getFloat());
FirebaseObject obj("43.1");
EXPECT_FLOAT_EQ(43.1, obj.getFloat());
EXPECT_TRUE(obj.success());
EXPECT_FALSE(obj.failed());
EXPECT_EQ(obj.error(), "");
}
{
FirebaseObject obj("43");
EXPECT_EQ(43, obj.getFloat());
EXPECT_FLOAT_EQ(43, obj.getFloat());
EXPECT_TRUE(obj.success());
EXPECT_FALSE(obj.failed());
EXPECT_EQ(obj.error(), "");
Expand Down Expand Up @@ -112,6 +112,59 @@ TEST(FirebaseObjectTest, GetStringFailure) {
EXPECT_EQ(obj.error(), "failed to convert to string");
}

TEST(FirebaseObjectTest, GetTwice) {
{
FirebaseObject obj("{\"foo\":\"bar\"}");
EXPECT_EQ(obj.getString("hop"), "");
EXPECT_FALSE(obj.success());
EXPECT_TRUE(obj.failed());
EXPECT_EQ(obj.error(), "failed to convert to string");

EXPECT_EQ(obj.getString("foo"), "bar");
EXPECT_TRUE(obj.success());
EXPECT_FALSE(obj.failed());
EXPECT_EQ(obj.error(), "");
}
{
FirebaseObject obj("{\"foo\": 42}");
EXPECT_EQ(obj.getInt("hop"), 0);
EXPECT_FALSE(obj.success());
EXPECT_TRUE(obj.failed());
EXPECT_EQ(obj.error(), "failed to convert to number");

EXPECT_EQ(obj.getInt("foo"), 42);
EXPECT_TRUE(obj.success());
EXPECT_FALSE(obj.failed());
EXPECT_EQ(obj.error(), "");
}
{
FirebaseObject obj("{\"foo\": true}");
EXPECT_EQ(obj.getBool("hop"), 0);
EXPECT_FALSE(obj.success());
EXPECT_TRUE(obj.failed());
EXPECT_EQ(obj.error(), "failed to convert to bool");

EXPECT_EQ(obj.getBool("foo"), true);
EXPECT_TRUE(obj.success());
EXPECT_FALSE(obj.failed());
EXPECT_EQ(obj.error(), "");
}
{
FirebaseObject obj("{\"foo\": 43.1}");
EXPECT_FLOAT_EQ(obj.getFloat("hop"), 0);
EXPECT_FALSE(obj.success());
EXPECT_TRUE(obj.failed());
EXPECT_EQ(obj.error(), "failed to convert to number");

EXPECT_FLOAT_EQ(obj.getFloat("foo"), 43.1);
EXPECT_TRUE(obj.success());
EXPECT_FALSE(obj.failed());
EXPECT_EQ(obj.error(), "");
}
}



int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
Expand Down
4 changes: 4 additions & 0 deletions src/FirebaseObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ bool FirebaseObject::getBool(const String& path) const {
error_ = "failed to convert to bool";
return 0;
}
error_ = "";
return static_cast<bool>(variant);
}

Expand All @@ -41,6 +42,7 @@ int FirebaseObject::getInt(const String& path) const {
error_ = "failed to convert to number";
return 0;
}
error_ = "";
return static_cast<int>(variant);
}

Expand All @@ -50,6 +52,7 @@ float FirebaseObject::getFloat(const String& path) const {
error_ = "failed to convert to number";
return 0;
}
error_ = "";
return static_cast<float>(variant);
}

Expand All @@ -59,6 +62,7 @@ String FirebaseObject::getString(const String& path) const {
error_ = "failed to convert to string";
return "";
}
error_ = "";
return static_cast<const char*>(variant);
}

Expand Down