MCPcopy Create free account
hub / github.com/dmlc/xgboost / CompareJSON

Function CompareJSON

tests/cpp/test_serialization.cc:46–146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44}
45
46void CompareJSON(Json l, Json r) {
47 switch (l.GetValue().Type()) {
48 case Value::ValueKind::kString: {
49 ASSERT_EQ(l, r);
50 break;
51 }
52 case Value::ValueKind::kNumber: {
53 CompareFloat(get<Number>(l), get<Number>(r));
54 break;
55 }
56 case Value::ValueKind::kInteger: {
57 ASSERT_EQ(l, r);
58 break;
59 }
60 case Value::ValueKind::kObject: {
61 auto const& l_obj = get<Object const>(l);
62 auto const& r_obj = get<Object const>(r);
63 ASSERT_EQ(l_obj.size(), r_obj.size());
64
65 for (auto const& kv : l_obj) {
66 ASSERT_NE(r_obj.find(kv.first), r_obj.cend());
67 // Floating point array saved as a string.
68 if (kv.first == "base_score") {
69 auto l_v = Json::Load(get<String const>(l_obj.at(kv.first)));
70 auto r_v = Json::Load(get<String const>(r_obj.at(kv.first)));
71 CompareJSON(l_v, r_v);
72 } else {
73 CompareJSON(l_obj.at(kv.first), r_obj.at(kv.first));
74 }
75 }
76 break;
77 }
78 case Value::ValueKind::kArray: {
79 auto const& l_arr = get<Array const>(l);
80 auto const& r_arr = get<Array const>(r);
81 ASSERT_EQ(l_arr.size(), r_arr.size());
82 for (size_t i = 0; i < l_arr.size(); ++i) {
83 CompareJSON(l_arr[i], r_arr[i]);
84 }
85 break;
86 }
87 case Value::ValueKind::kF32Array: {
88 auto const& l_arr = get<F32Array const>(l);
89 auto const& r_arr = get<F32Array const>(r);
90 ASSERT_EQ(l_arr.size(), r_arr.size());
91 for (size_t i = 0; i < l_arr.size(); ++i) {
92 CompareFloat(l_arr[i], r_arr[i]);
93 }
94 break;
95 }
96 case Value::ValueKind::kF64Array: {
97 auto const& l_arr = get<F64Array const>(l);
98 auto const& r_arr = get<F64Array const>(r);
99 ASSERT_EQ(l_arr.size(), r_arr.size());
100 for (size_t i = 0; i < l_arr.size(); ++i) {
101 CompareFloat(l_arr[i], r_arr[i]);
102 }
103 break;

Callers 2

CompareJsonModelsFunction · 0.85
TestLearnerSerializationFunction · 0.85

Calls 4

CompareFloatFunction · 0.85
TypeMethod · 0.45
sizeMethod · 0.45
cendMethod · 0.45

Tested by

no test coverage detected