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

Method testLongNumberOverlfow

test/stream_parser.cpp:1299–1375  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1297 //------------------------------------------------------
1298
1299 void
1300 testLongNumberOverlfow()
1301 {
1302#ifdef BOOST_JSON_EXPENSIVE_TESTS
1303 std::array<char, 1000> zeroes;
1304 zeroes.fill('0');
1305
1306 stream_parser p;
1307 {
1308 p.write("1", 1);
1309
1310 std::size_t count = 0;
1311 while( static_cast<std::size_t>( INT_MAX - zeroes.size() ) > count )
1312 count += p.write( zeroes.data(), zeroes.size() );
1313
1314 system::error_code ec;
1315 p.write(zeroes.data(), zeroes.size(), ec);
1316 BOOST_TEST( ec == error::exponent_overflow );
1317 }
1318
1319 p.reset();
1320 {
1321 p.write("0.", 2);
1322
1323 std::size_t count = 0;
1324 while( static_cast<std::size_t>( INT_MAX - zeroes.size() ) > count )
1325 count += p.write( zeroes.data(), zeroes.size() );
1326
1327 system::error_code ec;
1328 p.write(zeroes.data(), zeroes.size(), ec);
1329 BOOST_TEST( ec == error::exponent_overflow );
1330 }
1331
1332 p.reset();
1333 {
1334 p.write("0.", 2);
1335
1336 int count = INT_MIN;
1337 while( static_cast<int>( count + zeroes.size() ) < 0 )
1338 count += static_cast<int>(
1339 p.write( zeroes.data(), zeroes.size() ));
1340
1341 p.write(zeroes.data(), -2 - count);
1342 p.write("1e", 2);
1343 // at this point we've filled bias to the brim
1344
1345 std::string const int_min = std::to_string(INT_MIN);
1346 p.write( int_min.data(), int_min.size() );
1347
1348 system::error_code ec;
1349 p.finish(ec);
1350 BOOST_TEST( ec == error::exponent_overflow );
1351 }
1352
1353 p.reset();
1354 {
1355 std::string const uint64_max
1356 = std::to_string(18446744073709551615U);

Callers

nothing calls this directly

Calls 5

finishMethod · 0.80
writeMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected