Skip to content

Commit

Permalink
Simplify runtime tests (#846)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <[email protected]>
  • Loading branch information
jviotti authored Oct 8, 2024
1 parent 3645cb1 commit 2a6872d
Show file tree
Hide file tree
Showing 23 changed files with 463 additions and 581 deletions.
324 changes: 134 additions & 190 deletions test/runtime/decode_any_test.cc

Large diffs are not rendered by default.

127 changes: 56 additions & 71 deletions test/runtime/decode_array_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,19 @@

TEST(JSONBinPack_Decoder, FIXED_TYPED_ARRAY_0_1_2__no_prefix_encodings) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x00, 0x01, 0x02};
InputByteStream stream{0x00, 0x01, 0x02};
Decoder decoder{stream};
const sourcemeta::jsontoolkit::JSON result = decoder.FIXED_TYPED_ARRAY(
const auto result = decoder.FIXED_TYPED_ARRAY(
{3,
std::make_shared<Encoding>(BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 10, 1}),
{}});
const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ 0, 1, 2 ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ 0, 1, 2 ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, FIXED_TYPED_ARRAY_0_1_true__semityped) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x00, 0x01, 0x01};
InputByteStream stream{0x00, 0x01, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
Expand All @@ -32,230 +31,216 @@ TEST(JSONBinPack_Decoder, FIXED_TYPED_ARRAY_0_1_true__semityped) {
Encoding first{BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 10, 1}};
Encoding second{BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 10, 1}};

const sourcemeta::jsontoolkit::JSON result = decoder.FIXED_TYPED_ARRAY(
const auto result = decoder.FIXED_TYPED_ARRAY(
{3,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{std::move(first), std::move(second)}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ 0, 1, true ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ 0, 1, true ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, FIXED_TYPED_ARRAY_empty__no_prefix_encodings) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{};
InputByteStream stream{};
Decoder decoder{stream};
const sourcemeta::jsontoolkit::JSON result = decoder.FIXED_TYPED_ARRAY(
const auto result = decoder.FIXED_TYPED_ARRAY(
{0,
std::make_shared<Encoding>(BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 10, 1}),
{}});
const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[]");
const auto expected = sourcemeta::jsontoolkit::parse("[]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder,
BOUNDED_8BITS_TYPED_ARRAY_true_false_true__no_prefix_encodings) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x03, 0x01, 0x00, 0x01};
InputByteStream stream{0x03, 0x01, 0x00, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result =
decoder.BOUNDED_8BITS_TYPED_ARRAY(
{0,
3,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{}});
const auto result = decoder.BOUNDED_8BITS_TYPED_ARRAY(
{0,
3,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, true ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, true ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder,
BOUNDED_8BITS_TYPED_ARRAY_true_false_true__same_max_min) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x00, 0x01, 0x00, 0x01};
InputByteStream stream{0x00, 0x01, 0x00, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result =
decoder.BOUNDED_8BITS_TYPED_ARRAY(
{3,
3,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{}});
const auto result = decoder.BOUNDED_8BITS_TYPED_ARRAY(
{3,
3,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, true ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, true ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, BOUNDED_8BITS_TYPED_ARRAY_true_false_5__1_3) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x02, 0x01, 0x00, 0x05};
InputByteStream stream{0x02, 0x01, 0x00, 0x05};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result =
decoder.BOUNDED_8BITS_TYPED_ARRAY(
{1,
3,
std::make_shared<Encoding>(
BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 255, 1}),
{BYTE_CHOICE_INDEX{choices}, BYTE_CHOICE_INDEX{choices}}});
const auto result = decoder.BOUNDED_8BITS_TYPED_ARRAY(
{1,
3,
std::make_shared<Encoding>(BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 255, 1}),
{BYTE_CHOICE_INDEX{choices}, BYTE_CHOICE_INDEX{choices}}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, 5 ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, 5 ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, BOUNDED_8BITS_TYPED_ARRAY_complex) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x03, 0x01, 0x01, 0x66, 0x6f, 0x6f, 0xfa, 0x01};
InputByteStream stream{0x03, 0x01, 0x01, 0x66, 0x6f, 0x6f, 0xfa, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result =
decoder.BOUNDED_8BITS_TYPED_ARRAY(
{0,
10,
std::make_shared<Encoding>(FLOOR_MULTIPLE_ENUM_VARINT{-2, 4}),
{BYTE_CHOICE_INDEX{choices},
FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED{3}}});
const auto result = decoder.BOUNDED_8BITS_TYPED_ARRAY(
{0,
10,
std::make_shared<Encoding>(FLOOR_MULTIPLE_ENUM_VARINT{-2, 4}),
{BYTE_CHOICE_INDEX{choices},
FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED{3}}});

const sourcemeta::jsontoolkit::JSON expected =
const auto expected =
sourcemeta::jsontoolkit::parse("[ true, \"foo\", 1000 ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder,
FLOOR_TYPED_ARRAY_true_false_true__no_prefix_encodings) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x03, 0x01, 0x00, 0x01};
InputByteStream stream{0x03, 0x01, 0x00, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result = decoder.FLOOR_TYPED_ARRAY(
const auto result = decoder.FLOOR_TYPED_ARRAY(
{0,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, true ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, true ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, FLOOR_TYPED_ARRAY_true_false_5__1_3) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x02, 0x01, 0x00, 0x05};
InputByteStream stream{0x02, 0x01, 0x00, 0x05};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result = decoder.FLOOR_TYPED_ARRAY(
const auto result = decoder.FLOOR_TYPED_ARRAY(
{1,
std::make_shared<Encoding>(BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 255, 1}),
{BYTE_CHOICE_INDEX{choices}, BYTE_CHOICE_INDEX{choices}}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, 5 ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, 5 ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, FLOOR_TYPED_ARRAY_complex) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x03, 0x01, 0x01, 0x66, 0x6f, 0x6f, 0xfa, 0x01};
InputByteStream stream{0x03, 0x01, 0x01, 0x66, 0x6f, 0x6f, 0xfa, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result = decoder.FLOOR_TYPED_ARRAY(
const auto result = decoder.FLOOR_TYPED_ARRAY(
{0,
std::make_shared<Encoding>(FLOOR_MULTIPLE_ENUM_VARINT{-2, 4}),
{BYTE_CHOICE_INDEX{choices},
FLOOR_VARINT_PREFIX_UTF8_STRING_SHARED{3}}});

const sourcemeta::jsontoolkit::JSON expected =
const auto expected =
sourcemeta::jsontoolkit::parse("[ true, \"foo\", 1000 ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder,
ROOF_TYPED_ARRAY_true_false_true__no_prefix_encodings) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x03, 0x01, 0x00, 0x01};
InputByteStream stream{0x03, 0x01, 0x00, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result = decoder.ROOF_TYPED_ARRAY(
const auto result = decoder.ROOF_TYPED_ARRAY(
{6,
std::make_shared<Encoding>(BYTE_CHOICE_INDEX{std::move(choices)}),
{}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, true ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, true ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, ROOF_TYPED_ARRAY_true_false_5__1_3) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x02, 0x01, 0x00, 0x05};
InputByteStream stream{0x02, 0x01, 0x00, 0x05};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result = decoder.ROOF_TYPED_ARRAY(
const auto result = decoder.ROOF_TYPED_ARRAY(
{5,
std::make_shared<Encoding>(BOUNDED_MULTIPLE_8BITS_ENUM_FIXED{0, 255, 1}),
{BYTE_CHOICE_INDEX{choices}, BYTE_CHOICE_INDEX{choices}}});

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse("[ true, false, 5 ]");
const auto expected = sourcemeta::jsontoolkit::parse("[ true, false, 5 ]");
EXPECT_EQ(result, expected);
}

TEST(JSONBinPack_Decoder, ROOF_TYPED_ARRAY_complex) {
using namespace sourcemeta::jsonbinpack;
InputByteStream<char> stream{0x03, 0x01, 0x01, 0x66, 0x6f, 0x6f, 0xfa, 0x01};
InputByteStream stream{0x03, 0x01, 0x01, 0x66, 0x6f, 0x6f, 0xfa, 0x01};
Decoder decoder{stream};

std::vector<sourcemeta::jsontoolkit::JSON> choices;
choices.emplace_back(false);
choices.emplace_back(true);

const sourcemeta::jsontoolkit::JSON result = decoder.ROOF_TYPED_ARRAY(
const auto result = decoder.ROOF_TYPED_ARRAY(
{6,
std::make_shared<Encoding>(FLOOR_MULTIPLE_ENUM_VARINT{-2, 4}),
{BYTE_CHOICE_INDEX{choices}, ROOF_VARINT_PREFIX_UTF8_STRING_SHARED{3}}});

const sourcemeta::jsontoolkit::JSON expected =
const auto expected =
sourcemeta::jsontoolkit::parse("[ true, \"foo\", 1000 ]");
EXPECT_EQ(result, expected);
}
Loading

0 comments on commit 2a6872d

Please sign in to comment.