MCPcopy Create free account
hub / github.com/Kitware/CMake / testObject

Function testObject

Tests/CMakeLib/testJSONHelpers.cxx:157–209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155}
156
157bool testObject()
158{
159 auto const subhelper = JSONHelperBuilder::Object<ObjectStruct>().Bind(
160 "subfield"_s, &ObjectStruct::Field2, IntHelper);
161 auto const helper = JSONHelperBuilder::Object<ObjectStruct>()
162 .Bind("field1"_s, &ObjectStruct::Field1, StringHelper)
163 .Bind("field2"_s, subhelper)
164 .Bind<std::string>("field3"_s, nullptr, StringHelper);
165
166 Json::Value v(Json::objectValue);
167 cmJSONState state;
168 v["field1"] = "Hello";
169 v["field2"] = Json::objectValue;
170 v["field2"]["subfield"] = 2;
171 v["field3"] = "world!";
172 v["extra"] = "extra";
173
174 ObjectStruct s1;
175 ASSERT_TRUE(helper(s1, &v, &state));
176 ASSERT_TRUE(s1.Field1 == "Hello");
177 ASSERT_TRUE(s1.Field2 == 2);
178
179 v["field2"]["subfield"] = "wrong";
180 ObjectStruct s2;
181 ASSERT_TRUE(!helper(s2, &v, &state));
182
183 v["field2"].removeMember("subfield");
184 ObjectStruct s3;
185 ASSERT_TRUE(!helper(s3, &v, &state));
186
187 v.removeMember("field2");
188 ObjectStruct s4;
189 ASSERT_TRUE(!helper(s4, &v, &state));
190
191 v["field2"] = Json::objectValue;
192 v["field2"]["subfield"] = 2;
193 v["field3"] = 3;
194 ObjectStruct s5;
195 ASSERT_TRUE(!helper(s5, &v, &state));
196
197 v.removeMember("field3");
198 ObjectStruct s6;
199 ASSERT_TRUE(!helper(s6, &v, &state));
200
201 v = "Hello";
202 ObjectStruct s7;
203 ASSERT_TRUE(!helper(s7, &v, &state));
204
205 ObjectStruct s8;
206 ASSERT_TRUE(!helper(s8, nullptr, &state));
207
208 return true;
209}
210
211bool testObjectInherited()
212{

Callers

nothing calls this directly

Calls 2

removeMemberMethod · 0.80
BindMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…