@@ -390,3 +390,79 @@ TEST(Linter, valid_examples_10) {
390390
391391 EXPECT_EQ (schema, expected);
392392}
393+
394+ TEST (Linter, valid_examples_11) {
395+ sourcemeta::core::SchemaTransformer bundle;
396+ bundle.add <sourcemeta::blaze::ValidDefault>(
397+ sourcemeta::blaze::default_schema_compiler);
398+
399+ auto schema{sourcemeta::core::parse_json (R"JSON( {
400+ "$schema": "https://json-schema.org/draft/2020-12/schema",
401+ "items": { "examples": [ 10 ], "$ref": "ref.json" }
402+ })JSON" )};
403+
404+ auto resolver = [](const std::string_view identifier)
405+ -> std::optional<sourcemeta::core::JSON> {
406+ if (identifier == " https://example.com/ref.json" ) {
407+ return sourcemeta::core::parse_json (R"JSON( {
408+ "$schema": "https://json-schema.org/draft/2020-12/schema",
409+ "$id": "https://example.com/ref.json",
410+ "type": "integer"
411+ })JSON" );
412+ }
413+
414+ return sourcemeta::core::schema_official_resolver (identifier);
415+ };
416+
417+ const auto result = bundle.apply (
418+ schema, sourcemeta::core::schema_official_walker, resolver,
419+ transformer_callback_error, std::nullopt , " https://example.com/root" );
420+
421+ EXPECT_TRUE (result);
422+
423+ const auto expected{sourcemeta::core::parse_json (R"JSON( {
424+ "$schema": "https://json-schema.org/draft/2020-12/schema",
425+ "items": { "examples": [ 10 ], "$ref": "ref.json" }
426+ })JSON" )};
427+
428+ EXPECT_EQ (schema, expected);
429+ }
430+
431+ TEST (Linter, valid_examples_12) {
432+ sourcemeta::core::SchemaTransformer bundle;
433+ bundle.add <sourcemeta::blaze::ValidDefault>(
434+ sourcemeta::blaze::default_schema_compiler);
435+
436+ auto schema{sourcemeta::core::parse_json (R"JSON( {
437+ "$schema": "https://json-schema.org/draft/2020-12/schema",
438+ "items": { "examples": [ 10 ], "$ref": "ref.json" },
439+ "$ref": "ref.json"
440+ })JSON" )};
441+
442+ auto resolver = [](const std::string_view identifier)
443+ -> std::optional<sourcemeta::core::JSON> {
444+ if (identifier == " https://example.com/ref.json" ) {
445+ return sourcemeta::core::parse_json (R"JSON( {
446+ "$schema": "https://json-schema.org/draft/2020-12/schema",
447+ "$id": "https://example.com/ref.json",
448+ "type": "integer"
449+ })JSON" );
450+ }
451+
452+ return sourcemeta::core::schema_official_resolver (identifier);
453+ };
454+
455+ const auto result = bundle.apply (
456+ schema, sourcemeta::core::schema_official_walker, resolver,
457+ transformer_callback_error, std::nullopt , " https://example.com/root" );
458+
459+ EXPECT_TRUE (result);
460+
461+ const auto expected{sourcemeta::core::parse_json (R"JSON( {
462+ "$schema": "https://json-schema.org/draft/2020-12/schema",
463+ "items": { "examples": [ 10 ], "$ref": "ref.json" },
464+ "$ref": "ref.json"
465+ })JSON" )};
466+
467+ EXPECT_EQ (schema, expected);
468+ }
0 commit comments