TEST(FirebaseObjectTest, JsonLiteral) {
  EXPECT_EQ(bool(FirebaseObject("true")), true);
  EXPECT_EQ(bool(FirebaseObject("false")), false);
  EXPECT_EQ(int(FirebaseObject("42")), 42);
  EXPECT_EQ(float(FirebaseObject("43.0")), 43.0);
  EXPECT_EQ(String(FirebaseObject("\"foo\"")), "foo");
}
TEST(FirebaseObjectTest, JsonObject) {
  {
    const JsonObject& obj = FirebaseObject("{\"foo\":\"bar\"}");
    String foo = obj["foo"];
    EXPECT_EQ(foo, "bar");
  }
  {
    String foo = FirebaseObject("{\"foo\":\"bar\"}")["foo"];
    EXPECT_EQ(foo, "bar");
  }
}
float FirebaseArduino::getFloat(const String& path) {
  auto get = FirebaseGet(host_, auth_, path.c_str(), http_.get());
  error_ = get.error();
  if (failed()) {
    return 0.0f;
  }
  return FirebaseObject(get.response().c_str()).getFloat();
}
FirebaseObject FirebaseArduino::readEvent() {
  auto client = http_->getStreamPtr();
  String type = client->readStringUntil('\n').substring(7);;
  String event = client->readStringUntil('\n').substring(6);
  client->readStringUntil('\n'); // consume separator
  FirebaseObject obj = FirebaseObject(event.c_str());
  obj.getJsonVariant().asObject()["type"] = type;
  return obj;
}