Size: 1353 bytes.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// cs/net/json/object_test.cc
#include "cs/net/json/object.hh"

#include <cmath>

#include "gmock/gmock.h"
#include "gtest/gtest.h"

using ::cs::Result;
using ::cs::net::json::Object;
using ::cs::net::json::Type;
using ::testing::Eq;
using ::testing::FloatEq;
using ::testing::IsFalse;
using ::testing::IsTrue;
using ::testing::Matcher;
using ::testing::StrEq;

TEST(ObjectTest, AsFallbacks) {
  Object obj_int(123);
  // as(float) now converts int to float for compatibility
  // with JSON number parsing (JSON numbers can be ints or
  // floats).
  EXPECT_FALSE(std::isnan(obj_int.as(float())));
  EXPECT_EQ(obj_int.as(float()), 123.0f);
  EXPECT_EQ(obj_int.as(bool()), false);
  EXPECT_EQ(obj_int.as(std::string()), "");

  Object obj_str(std::string("value"));
  EXPECT_EQ(obj_str.as(int()), 0);
  EXPECT_TRUE(obj_str.as(Object::KVMap()).empty());
  EXPECT_TRUE(obj_str.as(std::vector<Object>()).empty());
}

TEST(ObjectTest, GetErrors) {
  Object obj_int(1);
  auto non_map = obj_int.get("missing");
  EXPECT_THAT(non_map.ok(), IsFalse());

  Object map = Object::NewMap();
  ASSERT_THAT(map.set("a", Object(1)).ok(), IsTrue());
  auto missing_key = map.get("b");
  EXPECT_THAT(missing_key.ok(), IsFalse());
}

TEST(ObjectTest, SetErrors) {
  Object obj_int(1);
  auto result = obj_int.set("a", Object(2));
  EXPECT_THAT(result.ok(), IsFalse());
}
v0 (commit) © 2025 @p13i.io | Load balancer proxied to: cs-code-viewer-1:8080 in 4ms.