✅ improved test coverage
This commit is contained in:
parent
9e07e9b4ec
commit
99ecca55c4
6 changed files with 269 additions and 5 deletions
2
Makefile
2
Makefile
|
@ -85,7 +85,7 @@ coverage:
|
||||||
mkdir build_coverage
|
mkdir build_coverage
|
||||||
cd build_coverage ; CXX=g++-5 cmake .. -GNinja -DJSON_Coverage=ON -DJSON_MultipleHeaders=ON
|
cd build_coverage ; CXX=g++-5 cmake .. -GNinja -DJSON_Coverage=ON -DJSON_MultipleHeaders=ON
|
||||||
cd build_coverage ; ninja
|
cd build_coverage ; ninja
|
||||||
cd build_coverage ; ctest -j10
|
cd build_coverage ; ctest -E '.*_default' -j10
|
||||||
cd build_coverage ; ninja lcov_html
|
cd build_coverage ; ninja lcov_html
|
||||||
open build_coverage/test/html/index.html
|
open build_coverage/test/html/index.html
|
||||||
|
|
||||||
|
|
|
@ -1359,8 +1359,8 @@ class binary_reader
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
result = std::size_t(-1);
|
auto last_token = get_token_string();
|
||||||
return true;
|
return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, "byte after '#' must denote a number type; last byte: 0x" + last_token));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1393,6 +1393,10 @@ class binary_reader
|
||||||
get_ignore_noop();
|
get_ignore_noop();
|
||||||
if (JSON_UNLIKELY(current != '#'))
|
if (JSON_UNLIKELY(current != '#'))
|
||||||
{
|
{
|
||||||
|
if (JSON_UNLIKELY(not unexpect_eof()))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
auto last_token = get_token_string();
|
auto last_token = get_token_string();
|
||||||
return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, "expected '#' after UBJSON type information; last byte: 0x" + last_token));
|
return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, "expected '#' after UBJSON type information; last byte: 0x" + last_token));
|
||||||
}
|
}
|
||||||
|
|
|
@ -5699,6 +5699,7 @@ class binary_reader
|
||||||
using json_sax_t = json_sax<BasicJsonType>;
|
using json_sax_t = json_sax<BasicJsonType>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/// the supported binary input formats
|
||||||
enum class binary_format_t { cbor, msgpack, ubjson };
|
enum class binary_format_t { cbor, msgpack, ubjson };
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -7016,8 +7017,8 @@ class binary_reader
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
result = std::size_t(-1);
|
auto last_token = get_token_string();
|
||||||
return true;
|
return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, "byte after '#' must denote a number type; last byte: 0x" + last_token));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7050,6 +7051,10 @@ class binary_reader
|
||||||
get_ignore_noop();
|
get_ignore_noop();
|
||||||
if (JSON_UNLIKELY(current != '#'))
|
if (JSON_UNLIKELY(current != '#'))
|
||||||
{
|
{
|
||||||
|
if (JSON_UNLIKELY(not unexpect_eof()))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
auto last_token = get_token_string();
|
auto last_token = get_token_string();
|
||||||
return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, "expected '#' after UBJSON type information; last byte: 0x" + last_token));
|
return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, "expected '#' after UBJSON type information; last byte: 0x" + last_token));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1292,6 +1292,10 @@ TEST_CASE("CBOR")
|
||||||
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x62, 0x60})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x62, 0x60})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x7F})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x7F})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x7F, 0x60})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x7F, 0x60})), json::parse_error&);
|
||||||
|
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x82, 0x01})), json::parse_error&);
|
||||||
|
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0x9F, 0x01})), json::parse_error&);
|
||||||
|
CHECK_THROWS_AS(json::from_cbor(std::vector<uint8_t>({0xBF, 0x61, 0x61, 0xF5})), json::parse_error&);
|
||||||
|
|
||||||
|
|
||||||
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0x18})),
|
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0x18})),
|
||||||
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
||||||
|
@ -1331,6 +1335,12 @@ TEST_CASE("CBOR")
|
||||||
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
||||||
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0x7F, 0x60})),
|
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0x7F, 0x60})),
|
||||||
"[json.exception.parse_error.110] parse error at 3: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 3: unexpected end of input");
|
||||||
|
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0x82, 0x01})),
|
||||||
|
"[json.exception.parse_error.110] parse error at 3: unexpected end of input");
|
||||||
|
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0x9F, 0x01})),
|
||||||
|
"[json.exception.parse_error.110] parse error at 3: unexpected end of input");
|
||||||
|
CHECK_THROWS_WITH(json::from_cbor(std::vector<uint8_t>({0xBF, 0x61, 0x61, 0xF5})),
|
||||||
|
"[json.exception.parse_error.110] parse error at 5: unexpected end of input");
|
||||||
|
|
||||||
CHECK(json::from_cbor(std::vector<uint8_t>({0x18}), true, false).is_discarded());
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x18}), true, false).is_discarded());
|
||||||
CHECK(json::from_cbor(std::vector<uint8_t>({0x19}), true, false).is_discarded());
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x19}), true, false).is_discarded());
|
||||||
|
@ -1351,6 +1361,9 @@ TEST_CASE("CBOR")
|
||||||
CHECK(json::from_cbor(std::vector<uint8_t>({0x62, 0x60}), true, false).is_discarded());
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x62, 0x60}), true, false).is_discarded());
|
||||||
CHECK(json::from_cbor(std::vector<uint8_t>({0x7F}), true, false).is_discarded());
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x7F}), true, false).is_discarded());
|
||||||
CHECK(json::from_cbor(std::vector<uint8_t>({0x7F, 0x60}), true, false).is_discarded());
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x7F, 0x60}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x82, 0x01}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_cbor(std::vector<uint8_t>({0x9F, 0x01}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_cbor(std::vector<uint8_t>({0xBF, 0x61, 0x61, 0xF5}), true, false).is_discarded());
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("unsupported bytes")
|
SECTION("unsupported bytes")
|
||||||
|
|
|
@ -54,6 +54,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("boolean")
|
SECTION("boolean")
|
||||||
|
@ -67,6 +68,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("false")
|
SECTION("false")
|
||||||
|
@ -78,6 +80,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,6 +114,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,6 +145,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,6 +179,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,6 +214,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,6 +257,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,6 +308,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,6 +340,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,6 +357,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("-32768..-129 (int 16)")
|
SECTION("-32768..-129 (int 16)")
|
||||||
|
@ -379,6 +390,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -423,6 +435,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,6 +485,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -504,6 +518,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -536,6 +551,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -569,6 +585,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -610,6 +627,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,6 +677,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -679,6 +698,7 @@ TEST_CASE("MessagePack")
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
CHECK(json::from_msgpack(result) == v);
|
CHECK(json::from_msgpack(result) == v);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -727,6 +747,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -758,6 +779,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -790,6 +812,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -824,6 +847,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -839,6 +863,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("[null]")
|
SECTION("[null]")
|
||||||
|
@ -850,6 +875,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("[1,2,3,4,5]")
|
SECTION("[1,2,3,4,5]")
|
||||||
|
@ -861,6 +887,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("[[[[]]]]")
|
SECTION("[[[[]]]]")
|
||||||
|
@ -872,6 +899,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("array 16")
|
SECTION("array 16")
|
||||||
|
@ -886,6 +914,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("array 32")
|
SECTION("array 32")
|
||||||
|
@ -909,6 +938,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -923,6 +953,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("{\"\":null}")
|
SECTION("{\"\":null}")
|
||||||
|
@ -934,6 +965,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("{\"a\": {\"b\": {\"c\": {}}}}")
|
SECTION("{\"a\": {\"b\": {\"c\": {}}}}")
|
||||||
|
@ -948,6 +980,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("map 16")
|
SECTION("map 16")
|
||||||
|
@ -971,6 +1004,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("map 32")
|
SECTION("map 32")
|
||||||
|
@ -1001,6 +1035,7 @@ TEST_CASE("MessagePack")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_msgpack(result) == j);
|
CHECK(json::from_msgpack(result) == j);
|
||||||
|
CHECK(json::from_msgpack(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1019,10 +1054,12 @@ TEST_CASE("MessagePack")
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>()), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>()), json::parse_error&);
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>()),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>()),
|
||||||
"[json.exception.parse_error.110] parse error at 1: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 1: unexpected end of input");
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>(), true, false).is_discarded());
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("too short byte vector")
|
SECTION("too short byte vector")
|
||||||
{
|
{
|
||||||
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0x87})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcc})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcc})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcd})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcd})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcd, 0x00})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcd, 0x00})), json::parse_error&);
|
||||||
|
@ -1038,7 +1075,11 @@ TEST_CASE("MessagePack")
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), json::parse_error&);
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})), json::parse_error&);
|
||||||
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xa5, 0x68, 0x65})), json::parse_error&);
|
||||||
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0x92, 0x01})), json::parse_error&);
|
||||||
|
|
||||||
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0x87})),
|
||||||
|
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xcc})),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xcc})),
|
||||||
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xcd})),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xcd})),
|
||||||
|
@ -1069,6 +1110,29 @@ TEST_CASE("MessagePack")
|
||||||
"[json.exception.parse_error.110] parse error at 8: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 8: unexpected end of input");
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})),
|
||||||
"[json.exception.parse_error.110] parse error at 9: unexpected end of input");
|
"[json.exception.parse_error.110] parse error at 9: unexpected end of input");
|
||||||
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xa5, 0x68, 0x65})),
|
||||||
|
"[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0x92, 0x01})),
|
||||||
|
"[json.exception.parse_error.110] parse error at 3: unexpected end of input");
|
||||||
|
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0x87}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcc}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcd}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcd, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xce}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xce, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xce, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xce, 0x00, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xa5, 0x68, 0x65}), true, false).is_discarded());
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0x92, 0x01}), true, false).is_discarded());
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("unsupported bytes")
|
SECTION("unsupported bytes")
|
||||||
|
@ -1078,9 +1142,12 @@ TEST_CASE("MessagePack")
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xc1})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xc1})), json::parse_error&);
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xc1})),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xc1})),
|
||||||
"[json.exception.parse_error.112] parse error at 1: error reading MessagePack; last byte: 0xC1");
|
"[json.exception.parse_error.112] parse error at 1: error reading MessagePack; last byte: 0xC1");
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xc6}), true, false).is_discarded());
|
||||||
|
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xc6})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0xc6})), json::parse_error&);
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xc6})),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0xc6})),
|
||||||
"[json.exception.parse_error.112] parse error at 1: error reading MessagePack; last byte: 0xC6");
|
"[json.exception.parse_error.112] parse error at 1: error reading MessagePack; last byte: 0xC6");
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0xc6}), true, false).is_discarded());
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("all unsupported bytes")
|
SECTION("all unsupported bytes")
|
||||||
|
@ -1098,6 +1165,7 @@ TEST_CASE("MessagePack")
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({static_cast<uint8_t>(byte)})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({static_cast<uint8_t>(byte)})), json::parse_error&);
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({static_cast<uint8_t>(byte)}), true, false).is_discarded());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1107,6 +1175,7 @@ TEST_CASE("MessagePack")
|
||||||
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0x81, 0xff, 0x01})), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(std::vector<uint8_t>({0x81, 0xff, 0x01})), json::parse_error&);
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0x81, 0xff, 0x01})),
|
CHECK_THROWS_WITH(json::from_msgpack(std::vector<uint8_t>({0x81, 0xff, 0x01})),
|
||||||
"[json.exception.parse_error.113] parse error at 2: expected a MessagePack string; last byte: 0xFF");
|
"[json.exception.parse_error.113] parse error at 2: expected a MessagePack string; last byte: 0xFF");
|
||||||
|
CHECK(json::from_msgpack(std::vector<uint8_t>({0x81, 0xff, 0x01}), true, false).is_discarded());
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("strict mode")
|
SECTION("strict mode")
|
||||||
|
@ -1123,6 +1192,7 @@ TEST_CASE("MessagePack")
|
||||||
CHECK_THROWS_AS(json::from_msgpack(vec), json::parse_error&);
|
CHECK_THROWS_AS(json::from_msgpack(vec), json::parse_error&);
|
||||||
CHECK_THROWS_WITH(json::from_msgpack(vec),
|
CHECK_THROWS_WITH(json::from_msgpack(vec),
|
||||||
"[json.exception.parse_error.110] parse error at 2: expected end of input");
|
"[json.exception.parse_error.110] parse error at 2: expected end of input");
|
||||||
|
CHECK(json::from_msgpack(vec, true, false).is_discarded());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("boolean")
|
SECTION("boolean")
|
||||||
|
@ -67,6 +68,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("false")
|
SECTION("false")
|
||||||
|
@ -78,6 +80,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,6 +143,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,6 +190,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,6 +224,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,6 +245,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("-128..-1 (int8)")
|
SECTION("-128..-1 (int8)")
|
||||||
|
@ -269,6 +276,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,6 +309,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,6 +342,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,6 +377,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,6 +420,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,6 +469,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -492,6 +505,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,6 +538,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,6 +572,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,6 +614,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -645,6 +662,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -665,6 +683,7 @@ TEST_CASE("UBJSON")
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
CHECK(json::from_ubjson(result) == v);
|
CHECK(json::from_ubjson(result) == v);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -703,6 +722,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,6 +755,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -768,6 +789,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -803,6 +825,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -820,6 +843,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -831,6 +855,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -842,6 +867,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -856,6 +882,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -867,6 +894,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -878,6 +906,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -892,6 +921,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -903,6 +933,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -914,6 +945,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -928,6 +960,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -939,6 +972,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -950,6 +984,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -966,6 +1001,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -982,6 +1018,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -993,6 +1030,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1009,6 +1047,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -1027,6 +1066,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -1038,6 +1078,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1055,6 +1096,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -1066,6 +1108,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -1077,6 +1120,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1091,6 +1135,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -1102,6 +1147,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -1113,6 +1159,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1130,6 +1177,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=false")
|
SECTION("size=true type=false")
|
||||||
|
@ -1144,6 +1192,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("size=true type=true")
|
SECTION("size=true type=true")
|
||||||
|
@ -1158,6 +1207,7 @@ TEST_CASE("UBJSON")
|
||||||
|
|
||||||
// roundtrip
|
// roundtrip
|
||||||
CHECK(json::from_ubjson(result) == j);
|
CHECK(json::from_ubjson(result) == j);
|
||||||
|
CHECK(json::from_ubjson(result, true, false) == j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1239,6 +1289,7 @@ TEST_CASE("UBJSON")
|
||||||
SECTION("optimized version (length only)")
|
SECTION("optimized version (length only)")
|
||||||
{
|
{
|
||||||
// create vector with two elements of the same type
|
// create vector with two elements of the same type
|
||||||
|
std::vector<uint8_t> v_TU = {'[', '#', 'U', 2, 'T', 'T'};
|
||||||
std::vector<uint8_t> v_T = {'[', '#', 'i', 2, 'T', 'T'};
|
std::vector<uint8_t> v_T = {'[', '#', 'i', 2, 'T', 'T'};
|
||||||
std::vector<uint8_t> v_F = {'[', '#', 'i', 2, 'F', 'F'};
|
std::vector<uint8_t> v_F = {'[', '#', 'i', 2, 'F', 'F'};
|
||||||
std::vector<uint8_t> v_Z = {'[', '#', 'i', 2, 'Z', 'Z'};
|
std::vector<uint8_t> v_Z = {'[', '#', 'i', 2, 'Z', 'Z'};
|
||||||
|
@ -1252,6 +1303,7 @@ TEST_CASE("UBJSON")
|
||||||
std::vector<uint8_t> v_C = {'[', '#', 'i', 2, 'C', 'a', 'C', 'a'};
|
std::vector<uint8_t> v_C = {'[', '#', 'i', 2, 'C', 'a', 'C', 'a'};
|
||||||
|
|
||||||
// check if vector is parsed correctly
|
// check if vector is parsed correctly
|
||||||
|
CHECK(json::from_ubjson(v_TU) == json({true, true}));
|
||||||
CHECK(json::from_ubjson(v_T) == json({true, true}));
|
CHECK(json::from_ubjson(v_T) == json({true, true}));
|
||||||
CHECK(json::from_ubjson(v_F) == json({false, false}));
|
CHECK(json::from_ubjson(v_F) == json({false, false}));
|
||||||
CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr}));
|
CHECK(json::from_ubjson(v_Z) == json({nullptr, nullptr}));
|
||||||
|
@ -1378,6 +1430,126 @@ TEST_CASE("UBJSON")
|
||||||
CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.112] parse error at 4: expected '#' after UBJSON type information; last byte: 0x02");
|
CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.112] parse error at 4: expected '#' after UBJSON type information; last byte: 0x02");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("strings")
|
||||||
|
{
|
||||||
|
std::vector<uint8_t> vS = {'S'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vS), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vS), "[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vS, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> v = {'S', 'i', '2', 'a'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 5: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(v, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vC = {'C'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vC), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vC), "[json.exception.parse_error.110] parse error at 2: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vC, true, false).is_discarded());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("sizes")
|
||||||
|
{
|
||||||
|
std::vector<uint8_t> vU = {'[', '#', 'U'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vU), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vU), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vU, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vi = {'[', '#', 'i'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vi), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vi), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vi, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vI = {'[', '#', 'I'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vI), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vI), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vI, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vl = {'[', '#', 'l'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vl), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vl), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vl, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vL = {'[', '#', 'L'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vL), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vL), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vL, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> v0 = {'[', '#', 'T', ']'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v0), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v0), "[json.exception.parse_error.113] parse error at 3: byte after '#' must denote a number type; last byte: 0x54");
|
||||||
|
CHECK(json::from_ubjson(v0, true, false).is_discarded());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("types")
|
||||||
|
{
|
||||||
|
std::vector<uint8_t> v0 = {'[', '$'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v0), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v0), "[json.exception.parse_error.110] parse error at 3: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(v0, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vi = {'[', '$', '#'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vi), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vi), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vi, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vT = {'[', '$', 'T'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vT), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vT), "[json.exception.parse_error.110] parse error at 4: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vT, true, false).is_discarded());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("arrays")
|
||||||
|
{
|
||||||
|
std::vector<uint8_t> vST = {'[', '$', 'i', '#', 'i', 2, 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vST), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vST), "[json.exception.parse_error.110] parse error at 8: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vST, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vS = {'[', '#', 'i', 2, 'i', 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vS), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vS), "[json.exception.parse_error.110] parse error at 7: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vS, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> v = {'[', 'i', 2, 'i', 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 6: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(v, true, false).is_discarded());
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("objects")
|
||||||
|
{
|
||||||
|
std::vector<uint8_t> vST = {'{', '$', 'i', '#', 'i', 2, 'i', 1, 'a', 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vST), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vST), "[json.exception.parse_error.110] parse error at 11: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vST, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vT = {'{', '$', 'i', 'i', 1, 'a', 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vT), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vT), "[json.exception.parse_error.112] parse error at 4: expected '#' after UBJSON type information; last byte: 0x69");
|
||||||
|
CHECK(json::from_ubjson(vT, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> vS = {'{', '#', 'i', 2, 'i', 1, 'a', 'i', 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(vS), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(vS), "[json.exception.parse_error.110] parse error at 10: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(vS, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> v = {'{', 'i', 1, 'a', 'i', 1};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v), "[json.exception.parse_error.110] parse error at 7: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(v, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> v2 = {'{', 'i', 1, 'a', 'i', 1, 'i'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v2), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v2), "[json.exception.parse_error.110] parse error at 8: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(v2, true, false).is_discarded());
|
||||||
|
|
||||||
|
std::vector<uint8_t> v3 = {'{', 'i', 1, 'a'};
|
||||||
|
CHECK_THROWS_AS(json::from_ubjson(v3), json::parse_error&);
|
||||||
|
CHECK_THROWS_WITH(json::from_ubjson(v3), "[json.exception.parse_error.110] parse error at 5: unexpected end of input");
|
||||||
|
CHECK(json::from_ubjson(v3, true, false).is_discarded());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("writing optimized values")
|
SECTION("writing optimized values")
|
||||||
|
|
Loading…
Reference in a new issue