Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions DEPENDENCIES
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
vendorpull https://github.com/sourcemeta/vendorpull 1dcbac42809cf87cb5b045106b863e17ad84ba02
core https://github.com/sourcemeta/core d07b863772ce5ee38e696ebbc8408d4831545a60
blaze https://github.com/sourcemeta/blaze 015713ad9c98fbc4bd9669cffb2ab1fcb37942ea
core https://github.com/sourcemeta/core fe9ef27a95281775fe3a98b9fb8eb4c51837af0a
blaze https://github.com/sourcemeta/blaze fa1310cb51cd7d1afbd08dc47dab5307b0122526
bootstrap https://github.com/twbs/bootstrap 1a6fdfae6be09b09eaced8f0e442ca6f7680a61e
3 changes: 0 additions & 3 deletions cmake/FindCore.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,13 @@ if(NOT Core_FOUND)
set(SOURCEMETA_CORE_LANG_PROCESS OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_LANG_PARALLEL OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_LANG_ERROR OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_LANG_STACKTRACE OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_GZIP OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_JSONL OFF CACHE BOOL "disable JSONL support")
set(SOURCEMETA_CORE_JSONRPC OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_MCP OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_HTTP OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_SEMVER OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_MARKDOWN OFF CACHE BOOL "disable")
set(SOURCEMETA_CORE_YAML ON CACHE BOOL "needed by Blaze")
set(SOURCEMETA_CORE_CONTRIB_GOOGLETEST ${JSONBINPACK_TESTS} CACHE BOOL "GoogleTest")
set(SOURCEMETA_CORE_CONTRIB_GOOGLEBENCHMARK OFF CACHE BOOL "GoogleBenchmark")
add_subdirectory("${PROJECT_SOURCE_DIR}/vendor/core")
include(Sourcemeta)
Expand Down
13 changes: 6 additions & 7 deletions test/compiler/2020_12_compiler_any_test.cc
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#include <gtest/gtest.h>

#include <sourcemeta/core/json.h>
#include <sourcemeta/core/test.h>
#include <sourcemeta/jsonbinpack/compiler.h>

TEST(JSONBinPack_Compiler_Any_2020_12, enum_singleton) {
TEST(enum_singleton) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"enum": [ 2 ]
Expand All @@ -23,7 +22,7 @@ TEST(JSONBinPack_Compiler_Any_2020_12, enum_singleton) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Any_2020_12, const_scalar) {
TEST(const_scalar) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"const": 2
Expand All @@ -43,7 +42,7 @@ TEST(JSONBinPack_Compiler_Any_2020_12, const_scalar) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Any_2020_12, enum_small_top_level) {
TEST(enum_small_top_level) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"enum": [ 1, 2, 3 ]
Expand All @@ -63,7 +62,7 @@ TEST(JSONBinPack_Compiler_Any_2020_12, enum_small_top_level) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Any_2020_12, only_metaschema) {
TEST(only_metaschema) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema"
})JSON");
Expand All @@ -80,7 +79,7 @@ TEST(JSONBinPack_Compiler_Any_2020_12, only_metaschema) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Any_2020_12, empty) {
TEST(empty) {
auto schema = sourcemeta::core::parse_json("{}");

sourcemeta::jsonbinpack::compile(
Expand Down
24 changes: 11 additions & 13 deletions test/compiler/2020_12_compiler_integer_test.cc
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#include <gtest/gtest.h>

#include <sourcemeta/core/json.h>
#include <sourcemeta/core/test.h>
#include <sourcemeta/jsonbinpack/compiler.h>

TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_minimum_8_bit) {
TEST(maximum_minimum_8_bit) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -27,7 +26,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_minimum_8_bit) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_minimum_multiplier_8_bit) {
TEST(maximum_minimum_multiplier_8_bit) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -52,7 +51,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_minimum_multiplier_8_bit) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_minimum_greater_than_8_bit) {
TEST(maximum_minimum_greater_than_8_bit) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -75,8 +74,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_minimum_greater_than_8_bit) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12,
maximum_minimum_multiplier_greater_than_8_bit) {
TEST(maximum_minimum_multiplier_greater_than_8_bit) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -100,7 +98,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12,
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, minimum) {
TEST(minimum) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -122,7 +120,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, minimum) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, minimum_multiplier) {
TEST(minimum_multiplier) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -145,7 +143,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, minimum_multiplier) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, maximum) {
TEST(maximum) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -167,7 +165,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, maximum) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_multiplier) {
TEST(maximum_multiplier) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand All @@ -190,7 +188,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, maximum_multiplier) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, unbounded) {
TEST(unbounded) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer"
Expand All @@ -210,7 +208,7 @@ TEST(JSONBinPack_Compiler_Integer_2020_12, unbounded) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler_Integer_2020_12, unbounded_multiplier) {
TEST(unbounded_multiplier) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "integer",
Expand Down
5 changes: 2 additions & 3 deletions test/compiler/2020_12_compiler_number_test.cc
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#include <gtest/gtest.h>

#include <sourcemeta/core/json.h>
#include <sourcemeta/core/test.h>
#include <sourcemeta/jsonbinpack/compiler.h>

TEST(JSONBinPack_Compiler_Number_2020_12, arbitrary) {
TEST(arbitrary) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "number"
Expand Down
3 changes: 1 addition & 2 deletions test/compiler/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
sourcemeta_googletest(NAMESPACE sourcemeta PROJECT jsonbinpack NAME compiler
FOLDER "JSON BinPack/Compiler"
sourcemeta_test(NAMESPACE sourcemeta PROJECT jsonbinpack NAME compiler
SOURCES
canonicalizer_test.cc compiler_test.cc

Expand Down
30 changes: 19 additions & 11 deletions test/compiler/canonicalizer_test.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#include <gtest/gtest.h>

#include <sourcemeta/blaze/foundation.h>
#include <sourcemeta/core/json.h>
#include <sourcemeta/core/test.h>
#include <sourcemeta/jsonbinpack/compiler.h>

#include <optional> // std::optional
Expand All @@ -19,24 +18,33 @@ static auto test_resolver(std::string_view identifier)
}
}

TEST(JSONBinPack_Canonicalizer, unsupported_draft) {
TEST(unsupported_draft) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://jsonbinpack.sourcemeta.com/draft/unknown",
"type": "boolean"
})JSON");

EXPECT_THROW(sourcemeta::jsonbinpack::canonicalize(
schema, sourcemeta::blaze::schema_walker, test_resolver),
sourcemeta::blaze::SchemaUnknownBaseDialectError);
try {
sourcemeta::jsonbinpack::canonicalize(
schema, sourcemeta::blaze::schema_walker, test_resolver);
FAIL();
} catch (const sourcemeta::blaze::SchemaUnknownBaseDialectError &error) {
EXPECT_STREQ(error.what(),
"Could not determine the base dialect of the schema");
}
}

TEST(JSONBinPack_Canonicalizer, unknown_draft) {
TEST(unknown_draft) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"type": "boolean"
})JSON");

EXPECT_THROW(sourcemeta::jsonbinpack::canonicalize(
schema, sourcemeta::blaze::schema_walker, test_resolver,
"https://example.com/invalid"),
sourcemeta::blaze::SchemaResolutionError);
try {
sourcemeta::jsonbinpack::canonicalize(
schema, sourcemeta::blaze::schema_walker, test_resolver,
"https://example.com/invalid");
FAIL();
} catch (const sourcemeta::blaze::SchemaResolutionError &error) {
EXPECT_EQ(error.identifier(), "https://example.com/invalid");
}
}
50 changes: 28 additions & 22 deletions test/compiler/compiler_test.cc
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#include <gtest/gtest.h>

#include <sourcemeta/core/json.h>
#include <sourcemeta/core/test.h>
#include <sourcemeta/jsonbinpack/compiler.h>

#include <stdexcept>

TEST(JSONBinPack_Compiler, dialect_2020_12) {
TEST(dialect_2020_12) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2020-12/schema"
})JSON");
Expand All @@ -22,7 +21,7 @@ TEST(JSONBinPack_Compiler, dialect_2020_12) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_2019_09) {
TEST(dialect_2019_09) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://json-schema.org/draft/2019-09/schema"
})JSON");
Expand All @@ -39,7 +38,7 @@ TEST(JSONBinPack_Compiler, dialect_2019_09) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft7) {
TEST(dialect_draft7) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-07/schema#"
})JSON");
Expand All @@ -56,7 +55,7 @@ TEST(JSONBinPack_Compiler, dialect_draft7) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft6) {
TEST(dialect_draft6) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-06/schema#"
})JSON");
Expand All @@ -73,7 +72,7 @@ TEST(JSONBinPack_Compiler, dialect_draft6) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft4) {
TEST(dialect_draft4) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-04/schema#"
})JSON");
Expand All @@ -90,7 +89,7 @@ TEST(JSONBinPack_Compiler, dialect_draft4) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft3) {
TEST(dialect_draft3) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-03/schema#"
})JSON");
Expand All @@ -107,7 +106,7 @@ TEST(JSONBinPack_Compiler, dialect_draft3) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft2) {
TEST(dialect_draft2) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-02/schema#"
})JSON");
Expand All @@ -124,7 +123,7 @@ TEST(JSONBinPack_Compiler, dialect_draft2) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft1) {
TEST(dialect_draft1) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-01/schema#"
})JSON");
Expand All @@ -141,7 +140,7 @@ TEST(JSONBinPack_Compiler, dialect_draft1) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, dialect_draft0) {
TEST(dialect_draft0) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "http://json-schema.org/draft-00/schema#"
})JSON");
Expand All @@ -158,7 +157,7 @@ TEST(JSONBinPack_Compiler, dialect_draft0) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, unknown_dialect_default) {
TEST(unknown_dialect_default) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"type": "integer"
})JSON");
Expand All @@ -179,25 +178,32 @@ TEST(JSONBinPack_Compiler, unknown_dialect_default) {
EXPECT_EQ(schema, expected);
}

TEST(JSONBinPack_Compiler, unknown_dialect_without_default) {
TEST(unknown_dialect_without_default) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"type": "integer"
})JSON");

EXPECT_THROW(
sourcemeta::jsonbinpack::compile(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver),
sourcemeta::blaze::SchemaUnknownBaseDialectError);
try {
sourcemeta::jsonbinpack::compile(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
FAIL();
} catch (const sourcemeta::blaze::SchemaUnknownBaseDialectError &error) {
EXPECT_STREQ(error.what(),
"Could not determine the base dialect of the schema");
}
}

TEST(JSONBinPack_Compiler, invalid_dialect) {
TEST(invalid_dialect) {
auto schema = sourcemeta::core::parse_json(R"JSON({
"$schema": "https://foo.com",
"type": "integer"
})JSON");

EXPECT_THROW(
sourcemeta::jsonbinpack::compile(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver),
sourcemeta::blaze::SchemaResolutionError);
try {
sourcemeta::jsonbinpack::compile(schema, sourcemeta::blaze::schema_walker,
sourcemeta::blaze::schema_resolver);
FAIL();
} catch (const sourcemeta::blaze::SchemaResolutionError &error) {
EXPECT_EQ(error.identifier(), "https://foo.com");
}
}
3 changes: 1 addition & 2 deletions test/runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
sourcemeta_googletest(NAMESPACE sourcemeta PROJECT jsonbinpack NAME runtime
FOLDER "JSON BinPack/Runtime"
sourcemeta_test(NAMESPACE sourcemeta PROJECT jsonbinpack NAME runtime
SOURCES
decode_any_test.cc
decode_array_test.cc
Expand Down
Loading
Loading