MCPcopy Create free account
hub / github.com/boostorg/json / testAt

Method testAt

test/value.cpp:2244–2300  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2242 }
2243
2244 void
2245 testAt()
2246 {
2247 // object
2248 value jvo{{"k1", "value"}, {"k2", nullptr}};
2249 value const& cjvo = jvo;
2250 BOOST_TEST( cjvo.at("k1").as_string() == "value" );
2251 BOOST_TEST( cjvo.try_at("k1")->as_string() == "value" );
2252
2253 jvo.at("k1") = {1, 2, 3};
2254 BOOST_TEST( cjvo.at("k1") == array({1, 2, 3}) );
2255 BOOST_TEST( *cjvo.try_at("k1") == array({1, 2, 3}) );
2256
2257 auto&& elem1 = std::move(jvo).at("k1");
2258 BOOST_TEST( &elem1 == &jvo.at("k1") );
2259 BOOST_TEST( &elem1 == &*jvo.try_at("k1") );
2260
2261 BOOST_TEST_THROWS_WITH_LOCATION( cjvo.at("null") );
2262 BOOST_TEST( cjvo.try_at("null").error() == error::out_of_range );
2263
2264 // array
2265 value jva{true,2,"3"};
2266 value const& cjva = jva;
2267 BOOST_TEST( cjva.at(1).as_int64() == 2 );
2268 BOOST_TEST( cjva.try_at(1)->as_int64() == 2 );
2269
2270 jva.at(1) = "item";
2271 BOOST_TEST( cjva.at(1) == "item" );
2272 BOOST_TEST( *cjva.try_at(1) == "item" );
2273
2274 auto&& elem2 = std::move(jva).at(1);
2275 BOOST_TEST( &elem2 == &jva.at(1) );
2276 BOOST_TEST( &elem2 == &*jva.try_at(1) );
2277
2278 BOOST_TEST_THROWS_WITH_LOCATION( value({false,2,false}).at(4) );
2279 BOOST_TEST_THROWS_WITH_LOCATION( value({false,2,"3"}).at(4) );
2280 BOOST_TEST_THROWS_WITH_LOCATION( value({false,false}).at(4) );
2281 BOOST_TEST_THROWS_WITH_LOCATION( value({false,2}).at(4) );
2282 BOOST_TEST_THROWS_WITH_LOCATION( value({false,2,"3",nullptr}).at(4) );
2283 BOOST_TEST_THROWS_WITH_LOCATION( value({2,false,"3"}).at(4) );
2284 BOOST_TEST_THROWS_WITH_LOCATION( value({true,2,"3"}).at(4) );
2285
2286 BOOST_TEST(
2287 value({false,2,false}).try_at(4) == error::out_of_range );
2288 BOOST_TEST(
2289 value({false,2,"3"}).try_at(4) == error::out_of_range );
2290 BOOST_TEST(
2291 value({false,false}).try_at(4) == error::out_of_range );
2292 BOOST_TEST(
2293 value({false,2}).try_at(4) == error::out_of_range );
2294 BOOST_TEST(
2295 value({false,2,"3",nullptr}).try_at(4) == error::out_of_range );
2296 BOOST_TEST(
2297 value({2,false,"3"}).try_at(4) == error::out_of_range );
2298 BOOST_TEST(
2299 value({true,2,"3"}).try_at(4) == error::out_of_range );
2300 }
2301

Callers

nothing calls this directly

Calls 2

valueClass · 0.70
arrayClass · 0.50

Tested by

no test coverage detected