Skip to content

Commit

Permalink
Fix case where additionalProperties: false was not taking effect (#229
Browse files Browse the repository at this point in the history
)

Signed-off-by: Juan Cruz Viotti <[email protected]>
  • Loading branch information
jviotti authored Nov 25, 2024
1 parent f499c75 commit 430c029
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 10 deletions.
16 changes: 16 additions & 0 deletions src/compiler/compile_describe.cc
Original file line number Diff line number Diff line change
Expand Up @@ -906,6 +906,22 @@ struct DescribeVisitor {
return message.str();
}

auto operator()(const AssertionDefinesExactly &step) const -> std::string {
const auto &value{step_value(step)};
assert(value.size() > 1);
std::ostringstream message;
message << "The object value was expected to only define properties ";
for (auto iterator = value.cbegin(); iterator != value.cend(); ++iterator) {
if (std::next(iterator) == value.cend()) {
message << "and " << escape_string(*iterator);
} else {
message << escape_string(*iterator) << ", ";
}
}

return message.str();
}

auto operator()(const AssertionType &step) const -> std::string {
std::ostringstream message;
describe_type_check(this->valid, this->target.type(), step_value(step),
Expand Down
1 change: 1 addition & 0 deletions src/compiler/compile_json.cc
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ struct StepVisitor {
HANDLE_STEP("assertion", "fail", AssertionFail)
HANDLE_STEP("assertion", "defines", AssertionDefines)
HANDLE_STEP("assertion", "defines-all", AssertionDefinesAll)
HANDLE_STEP("assertion", "defines-exactly", AssertionDefinesExactly)
HANDLE_STEP("assertion", "property-dependencies",
AssertionPropertyDependencies)
HANDLE_STEP("assertion", "type", AssertionType)
Expand Down
14 changes: 14 additions & 0 deletions src/compiler/default_compiler_draft4.h
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,20 @@ auto compiler_draft4_validation_required(const Context &context,
if (properties.size() == 1) {
return {make<AssertionDefines>(context, schema_context, dynamic_context,
ValueString{*(properties.cbegin())})};
} else if (schema_context.schema.defines("additionalProperties") &&
schema_context.schema.at("additionalProperties").is_boolean() &&
!schema_context.schema.at("additionalProperties").to_boolean() &&
schema_context.schema.defines("properties") &&
schema_context.schema.at("properties").is_object() &&
schema_context.schema.at("properties").size() ==
properties.size() &&
std::all_of(properties.cbegin(), properties.cend(),
[&schema_context](const auto &property) {
return schema_context.schema.at("properties")
.defines(property);
})) {
return {make<AssertionDefinesExactly>(
context, schema_context, dynamic_context, std::move(properties))};
} else {
return {make<AssertionDefinesAll>(
context, schema_context, dynamic_context, std::move(properties))};
Expand Down
20 changes: 20 additions & 0 deletions src/evaluator/dispatch.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,26 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
EVALUATE_END(assertion, AssertionDefinesAll);
}

case IS_INSTRUCTION(AssertionDefinesExactly): {
EVALUATE_BEGIN_NON_STRING(assertion, AssertionDefinesExactly,
target.is_object());

// Otherwise we are we even emitting this instruction?
assert(assertion.value.size() > 1);

if (assertion.value.size() == target.object_size()) {
result = true;
for (const auto &property : assertion.value) {
if (!target.defines(property)) {
result = false;
break;
}
}
}

EVALUATE_END(assertion, AssertionDefinesExactly);
}

case IS_INSTRUCTION(AssertionPropertyDependencies): {
EVALUATE_BEGIN_NON_STRING(assertion, AssertionPropertyDependencies,
target.is_object());
Expand Down
19 changes: 13 additions & 6 deletions src/evaluator/include/sourcemeta/blaze/evaluator_instruction.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace sourcemeta::blaze {
struct AssertionFail;
struct AssertionDefines;
struct AssertionDefinesAll;
struct AssertionDefinesExactly;
struct AssertionPropertyDependencies;
struct AssertionType;
struct AssertionTypeAny;
Expand Down Expand Up @@ -103,12 +104,12 @@ struct ControlDynamicAnchorJump;
/// Represents a schema compilation step that can be evaluated
using Instruction = std::variant<
AssertionFail, AssertionDefines, AssertionDefinesAll,
AssertionPropertyDependencies, AssertionType, AssertionTypeAny,
AssertionTypeStrict, AssertionTypeStrictAny, AssertionTypeStringBounded,
AssertionTypeStringUpper, AssertionTypeArrayBounded,
AssertionTypeArrayUpper, AssertionTypeObjectBounded,
AssertionTypeObjectUpper, AssertionRegex, AssertionStringSizeLess,
AssertionStringSizeGreater, AssertionArraySizeLess,
AssertionDefinesExactly, AssertionPropertyDependencies, AssertionType,
AssertionTypeAny, AssertionTypeStrict, AssertionTypeStrictAny,
AssertionTypeStringBounded, AssertionTypeStringUpper,
AssertionTypeArrayBounded, AssertionTypeArrayUpper,
AssertionTypeObjectBounded, AssertionTypeObjectUpper, AssertionRegex,
AssertionStringSizeLess, AssertionStringSizeGreater, AssertionArraySizeLess,
AssertionArraySizeGreater, AssertionObjectSizeLess,
AssertionObjectSizeGreater, AssertionEqual, AssertionEqualsAny,
AssertionGreaterEqual, AssertionLessEqual, AssertionGreater, AssertionLess,
Expand Down Expand Up @@ -139,6 +140,7 @@ enum class InstructionIndex : std::uint8_t {
AssertionFail = 0,
AssertionDefines,
AssertionDefinesAll,
AssertionDefinesExactly,
AssertionPropertyDependencies,
AssertionType,
AssertionTypeAny,
Expand Down Expand Up @@ -267,6 +269,11 @@ DEFINE_STEP_WITH_VALUE(Assertion, Defines, ValueString)
/// a set of properties
DEFINE_STEP_WITH_VALUE(Assertion, DefinesAll, ValueStrings)

/// @ingroup evaluator_instructions
/// @brief Represents a compiler assertion step that checks if an object defines
/// a set of properties and no other ones
DEFINE_STEP_WITH_VALUE(Assertion, DefinesExactly, ValueStrings)

/// @ingroup evaluator_instructions
/// @brief Represents a compiler assertion step that checks if an object defines
/// a set of properties if it defines other set of properties
Expand Down
33 changes: 29 additions & 4 deletions test/evaluator/evaluator_draft4_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2783,14 +2783,14 @@ TEST(Evaluator_draft4, additionalProperties_12) {

EVALUATE_WITH_TRACE_FAST_SUCCESS(schema, instance, 3);

EVALUATE_TRACE_PRE(0, AssertionDefinesAll, "/required", "#/required", "");
EVALUATE_TRACE_PRE(0, AssertionDefinesExactly, "/required", "#/required", "");
EVALUATE_TRACE_PRE(1, AssertionPropertyTypeStrict, "/properties/bar/type",
"#/properties/bar/type", "/bar");
EVALUATE_TRACE_PRE(2, AssertionPropertyTypeStrict, "/properties/foo/type",
"#/properties/foo/type", "/foo");

EVALUATE_TRACE_POST_SUCCESS(0, AssertionDefinesAll, "/required", "#/required",
"");
EVALUATE_TRACE_POST_SUCCESS(0, AssertionDefinesExactly, "/required",
"#/required", "");
EVALUATE_TRACE_POST_SUCCESS(1, AssertionPropertyTypeStrict,
"/properties/bar/type", "#/properties/bar/type",
"/bar");
Expand All @@ -2799,14 +2799,39 @@ TEST(Evaluator_draft4, additionalProperties_12) {
"/foo");

EVALUATE_TRACE_POST_DESCRIBE(instance, 0,
"The object value was expected to define "
"The object value was expected to only define "
"properties \"foo\", and \"bar\"");
EVALUATE_TRACE_POST_DESCRIBE(instance, 1,
"The value was expected to be of type boolean");
EVALUATE_TRACE_POST_DESCRIBE(instance, 2,
"The value was expected to be of type boolean");
}

TEST(Evaluator_draft4, additionalProperties_13) {
const sourcemeta::jsontoolkit::JSON schema{
sourcemeta::jsontoolkit::parse(R"JSON({
"$schema": "http://json-schema.org/draft-04/schema#",
"required": [ "foo", "bar" ],
"additionalProperties": false,
"properties": {
"foo": { "type": "boolean" },
"bar": { "type": "boolean" }
}
})JSON")};

const sourcemeta::jsontoolkit::JSON instance{sourcemeta::jsontoolkit::parse(
"{ \"foo\": true, \"bar\": false, \"baz\": 1 }")};

EVALUATE_WITH_TRACE_FAST_FAILURE(schema, instance, 1);

EVALUATE_TRACE_PRE(0, AssertionDefinesExactly, "/required", "#/required", "");
EVALUATE_TRACE_POST_FAILURE(0, AssertionDefinesExactly, "/required",
"#/required", "");
EVALUATE_TRACE_POST_DESCRIBE(instance, 0,
"The object value was expected to only define "
"properties \"foo\", and \"bar\"");
}

TEST(Evaluator_draft4, not_1) {
const sourcemeta::jsontoolkit::JSON schema{
sourcemeta::jsontoolkit::parse(R"JSON({
Expand Down

5 comments on commit 430c029

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Benchmark suite Current: 430c029 Previous: f499c75 Ratio
Compiler_Draft6_AdaptiveCard 31945984083.999973 ns/iter 33346006999.999985 ns/iter 0.96
Compiler_2019_09_OMC_JSON_V2 6738937749.999991 ns/iter 6699834791.999933 ns/iter 1.01
Evaluator_Draft4_Meta_1_No_Callback 246.8382329146238 ns/iter 250.80426140286238 ns/iter 0.98
Evaluator_Draft4_Required_Properties 327.3272211197626 ns/iter 335.22789911655747 ns/iter 0.98
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 18.247858427283248 ns/iter 18.43629495877398 ns/iter 0.99
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 10.034263341731172 ns/iter 10.108426671873412 ns/iter 0.99
Evaluator_Draft4_Items_Schema 316.189839628639 ns/iter 334.45194638947777 ns/iter 0.95
Evaluator_Draft4_Nested_Object 2.8408528089456815 ns/iter 2.911915468512387 ns/iter 0.98
Evaluator_Draft4_Properties_Triad_Optional 763.192905894003 ns/iter 766.260702950424 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Closed 640.8297535020363 ns/iter 656.1004810654599 ns/iter 0.98
Evaluator_Draft4_Properties_Triad_Required 769.1330145714551 ns/iter 769.2092898912947 ns/iter 1.00
Evaluator_Draft4_Properties_Closed 76.89916864523295 ns/iter 78.31148337611948 ns/iter 0.98
Evaluator_Draft4_Non_Recursive_Ref 10.369247829395693 ns/iter 10.484781784503495 ns/iter 0.99
Evaluator_Draft4_Pattern_Properties_True 169.83849565819853 ns/iter 184.75110428196095 ns/iter 0.92
Evaluator_Draft4_Ref_To_Single_Property 11.402031675007155 ns/iter 11.87417845166732 ns/iter 0.96
Evaluator_Draft4_Additional_Properties_Type 20.614279051446875 ns/iter 21.339992992805897 ns/iter 0.97
Evaluator_Draft4_Nested_Oneof 65.83022103422294 ns/iter 70.62397379154004 ns/iter 0.93
Evaluator_Draft4_Long_Enum 28.289926177591013 ns/iter 28.3741338525381 ns/iter 1.00
Evaluator_Draft4_Type_Object 5.971741555341765 ns/iter 5.969484857117427 ns/iter 1.00
Evaluator_Draft6_Property_Names 135.1928392998858 ns/iter 136.86391109687878 ns/iter 0.99
Evaluator_Draft7_If_Then_Else 27.002636156658376 ns/iter 28.181968337364335 ns/iter 0.96
Evaluator_Draft7_Vercel_1 73707.47096092744 ns/iter 73653.09636163173 ns/iter 1.00
Evaluator_Draft7_Helm_Chart_Lock_1 363.8689274382145 ns/iter 363.6963097164803 ns/iter 1.00
Evaluator_2019_09_Unevaluated_Properties 146.86898954602248 ns/iter 147.73751093257306 ns/iter 0.99
Evaluator_2019_09_OMC_JSON_V2_1 2640.9001760541296 ns/iter 2618.8281457295357 ns/iter 1.01
Evaluator_2020_12_Dynamic_Ref 510.5133036652302 ns/iter 512.5730276063028 ns/iter 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Benchmark suite Current: 430c029 Previous: f499c75 Ratio
Compiler_Draft6_AdaptiveCard 54472993869.000046 ns/iter 53349703583.00001 ns/iter 1.02
Compiler_2019_09_OMC_JSON_V2 10947622488.000036 ns/iter 10764566467.999998 ns/iter 1.02
Evaluator_Draft4_Meta_1_No_Callback 370.42743276715134 ns/iter 348.67392599477535 ns/iter 1.06
Evaluator_Draft4_Required_Properties 805.9124022419338 ns/iter 750.4758527434129 ns/iter 1.07
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 39.599436774735075 ns/iter 36.185504172589965 ns/iter 1.09
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 24.448766440010292 ns/iter 23.188448590623427 ns/iter 1.05
Evaluator_Draft4_Items_Schema 774.3958840830993 ns/iter 693.1947463583441 ns/iter 1.12
Evaluator_Draft4_Nested_Object 4.968472273267688 ns/iter 4.357055739089767 ns/iter 1.14
Evaluator_Draft4_Properties_Triad_Optional 1169.375474938872 ns/iter 1218.7476200929311 ns/iter 0.96
Evaluator_Draft4_Properties_Triad_Closed 989.8063689023751 ns/iter 991.5265562204928 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Required 1214.3062779000738 ns/iter 1217.0630095047238 ns/iter 1.00
Evaluator_Draft4_Properties_Closed 135.5243919746008 ns/iter 128.9784498415648 ns/iter 1.05
Evaluator_Draft4_Non_Recursive_Ref 33.15896577921742 ns/iter 28.486942545787873 ns/iter 1.16
Evaluator_Draft4_Pattern_Properties_True 261.56737265773626 ns/iter 249.36014089876682 ns/iter 1.05
Evaluator_Draft4_Ref_To_Single_Property 24.858429058362987 ns/iter 22.89139655302935 ns/iter 1.09
Evaluator_Draft4_Additional_Properties_Type 68.91253553458229 ns/iter 55.49277276548591 ns/iter 1.24
Evaluator_Draft4_Nested_Oneof 131.12469231866598 ns/iter 126.15493544236838 ns/iter 1.04
Evaluator_Draft4_Long_Enum 22.361124463489958 ns/iter 20.46331533063324 ns/iter 1.09
Evaluator_Draft4_Type_Object 11.603297614112321 ns/iter 10.220248571407344 ns/iter 1.14
Evaluator_Draft6_Property_Names 241.51038566858912 ns/iter 249.35036787888004 ns/iter 0.97
Evaluator_Draft7_If_Then_Else 56.12409330724989 ns/iter 54.71983941264358 ns/iter 1.03
Evaluator_Draft7_Vercel_1 101086.67944251 ns/iter 100077.30874514104 ns/iter 1.01
Evaluator_Draft7_Helm_Chart_Lock_1 599.9060624427157 ns/iter 563.4556526489486 ns/iter 1.06
Evaluator_2019_09_Unevaluated_Properties 184.47926817252028 ns/iter 192.05477835256892 ns/iter 0.96
Evaluator_2019_09_OMC_JSON_V2_1 3681.2035597729505 ns/iter 3385.502158027249 ns/iter 1.09
Evaluator_2020_12_Dynamic_Ref 821.9084181044248 ns/iter 829.9255303052004 ns/iter 0.99

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Benchmark suite Current: 430c029 Previous: f499c75 Ratio
Evaluator_2020_12_Dynamic_Ref 841.1698616087093 ns/iter 844.7089116889346 ns/iter 1.00
Evaluator_2019_09_Unevaluated_Properties 239.8543509943509 ns/iter 234.1802387511785 ns/iter 1.02
Evaluator_2019_09_OMC_JSON_V2_1 5001.197865424614 ns/iter 5232.363781700134 ns/iter 0.96
Evaluator_Draft7_If_Then_Else 51.80797522675906 ns/iter 51.04964417467412 ns/iter 1.01
Evaluator_Draft7_Vercel_1 120309.02451956033 ns/iter 114047.43363119612 ns/iter 1.05
Evaluator_Draft7_Helm_Chart_Lock_1 718.2962026303906 ns/iter 715.7120860133332 ns/iter 1.00
Evaluator_Draft6_Property_Names 503.9667661644303 ns/iter 499.6096636624369 ns/iter 1.01
Evaluator_Draft4_Meta_1_No_Callback 434.2986496139125 ns/iter 430.90806458913886 ns/iter 1.01
Evaluator_Draft4_Required_Properties 1669.7685797243366 ns/iter 1708.8573819960889 ns/iter 0.98
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 40.08409129430936 ns/iter 39.01178082901176 ns/iter 1.03
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 32.30068587434573 ns/iter 33.20377162958091 ns/iter 0.97
Evaluator_Draft4_Items_Schema 570.0071994724879 ns/iter 528.4603446046023 ns/iter 1.08
Evaluator_Draft4_Nested_Object 4.923315846129513 ns/iter 3.480836022687745 ns/iter 1.41
Evaluator_Draft4_Properties_Triad_Optional 1230.9381525669335 ns/iter 1213.9623032262507 ns/iter 1.01
Evaluator_Draft4_Properties_Triad_Closed 1027.0307186518135 ns/iter 1010.0824354600495 ns/iter 1.02
Evaluator_Draft4_Properties_Triad_Required 1280.6752735745297 ns/iter 1282.0872838343707 ns/iter 1.00
Evaluator_Draft4_Properties_Closed 193.81255396208445 ns/iter 185.5268995406983 ns/iter 1.04
Evaluator_Draft4_Non_Recursive_Ref 50.20074039999827 ns/iter 48.73623359932639 ns/iter 1.03
Evaluator_Draft4_Pattern_Properties_True 352.45780117834903 ns/iter 346.3627350684386 ns/iter 1.02
Evaluator_Draft4_Ref_To_Single_Property 37.5654020238899 ns/iter 36.40437859137754 ns/iter 1.03
Evaluator_Draft4_Additional_Properties_Type 105.05435236233076 ns/iter 102.94527579443347 ns/iter 1.02
Evaluator_Draft4_Nested_Oneof 115.72825590632523 ns/iter 112.53085638700603 ns/iter 1.03
Evaluator_Draft4_Long_Enum 20.53866346735104 ns/iter 19.968073915251615 ns/iter 1.03
Evaluator_Draft4_Type_Object 10.278035298206563 ns/iter 10.01740797105483 ns/iter 1.03
Compiler_2019_09_OMC_JSON_V2 11082028806.00004 ns/iter 11077471561.000038 ns/iter 1.00
Compiler_Draft6_AdaptiveCard 61591573382.00009 ns/iter 60833475780.99995 ns/iter 1.01

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/gcc)

Benchmark suite Current: 430c029 Previous: f499c75 Ratio
Compiler_Draft6_AdaptiveCard 54364140033.721924 ns/iter 47290436029.434204 ns/iter 1.15
Compiler_2019_09_OMC_JSON_V2 8870396137.237549 ns/iter 9341125726.69983 ns/iter 0.95
Evaluator_Draft4_Meta_1_No_Callback 266.4119188798769 ns/iter 278.62898264144235 ns/iter 0.96
Evaluator_Draft4_Required_Properties 487.5774169473538 ns/iter 496.31907590346077 ns/iter 0.98
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 24.068791667784787 ns/iter 25.16371377933771 ns/iter 0.96
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 16.15909445163835 ns/iter 17.360058824857823 ns/iter 0.93
Evaluator_Draft4_Items_Schema 507.6666028200758 ns/iter 555.6920715669226 ns/iter 0.91
Evaluator_Draft4_Nested_Object 2.0729059588681396 ns/iter 2.1659312766546566 ns/iter 0.96
Evaluator_Draft4_Properties_Triad_Optional 905.6410649001533 ns/iter 906.2277426722103 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Closed 860.6477021776054 ns/iter 832.7373090325539 ns/iter 1.03
Evaluator_Draft4_Properties_Triad_Required 946.3116460590899 ns/iter 911.7091615726158 ns/iter 1.04
Evaluator_Draft4_Properties_Closed 102.04775728664376 ns/iter 104.39722268224573 ns/iter 0.98
Evaluator_Draft4_Non_Recursive_Ref 20.84084675896433 ns/iter 20.74900894972158 ns/iter 1.00
Evaluator_Draft4_Pattern_Properties_True 249.71792572592406 ns/iter 237.1045361695972 ns/iter 1.05
Evaluator_Draft4_Ref_To_Single_Property 14.41816830592365 ns/iter 14.102084544083226 ns/iter 1.02
Evaluator_Draft4_Additional_Properties_Type 38.94957781429512 ns/iter 38.811621560393064 ns/iter 1.00
Evaluator_Draft4_Nested_Oneof 91.17882087797238 ns/iter 85.95052925406864 ns/iter 1.06
Evaluator_Draft4_Long_Enum 11.962886003070436 ns/iter 12.62086273826258 ns/iter 0.95
Evaluator_Draft4_Type_Object 6.572385448934159 ns/iter 7.006008027462679 ns/iter 0.94
Evaluator_Draft6_Property_Names 170.94411785940196 ns/iter 183.468737352967 ns/iter 0.93
Evaluator_Draft7_If_Then_Else 32.47687534651633 ns/iter 34.499913030166525 ns/iter 0.94
Evaluator_Draft7_Vercel_1 106719.794965185 ns/iter 89500.81484676934 ns/iter 1.19
Evaluator_Draft7_Helm_Chart_Lock_1 514.6269798278809 ns/iter 432.86690334682123 ns/iter 1.19
Evaluator_2019_09_Unevaluated_Properties 162.79445779743185 ns/iter 167.97529233719914 ns/iter 0.97
Evaluator_2019_09_OMC_JSON_V2_1 2723.5027171131765 ns/iter 2585.1657733581874 ns/iter 1.05
Evaluator_2020_12_Dynamic_Ref 637.3157269468857 ns/iter 590.0549101819048 ns/iter 1.08

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Benchmark suite Current: 430c029 Previous: f499c75 Ratio
Compiler_Draft6_AdaptiveCard 122306347899.99998 ns/iter 121106793299.99994 ns/iter 1.01
Compiler_2019_09_OMC_JSON_V2 25661686899.99995 ns/iter 25404735699.999947 ns/iter 1.01
Evaluator_Draft4_Meta_1_No_Callback 457.34795922946586 ns/iter 437.19768749994614 ns/iter 1.05
Evaluator_Draft4_Required_Properties 738.6259821428455 ns/iter 710.0300000000663 ns/iter 1.04
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 41.81964205353593 ns/iter 35.49051358018342 ns/iter 1.18
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 22.07233749999915 ns/iter 21.693728125001144 ns/iter 1.02
Evaluator_Draft4_Items_Schema 624.7424107144184 ns/iter 645.6233035714425 ns/iter 0.97
Evaluator_Draft4_Nested_Object 4.059667864391761 ns/iter 4.041612953645293 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Optional 1696.363127435733 ns/iter 1737.5939480396698 ns/iter 0.98
Evaluator_Draft4_Properties_Triad_Closed 1410.6963345102088 ns/iter 1438.8793266429286 ns/iter 0.98
Evaluator_Draft4_Properties_Triad_Required 1706.8177856130658 ns/iter 1758.9069275957572 ns/iter 0.97
Evaluator_Draft4_Properties_Closed 144.34492659174833 ns/iter 134.565928571411 ns/iter 1.07
Evaluator_Draft4_Non_Recursive_Ref 17.794829623169434 ns/iter 15.767430803573948 ns/iter 1.13
Evaluator_Draft4_Pattern_Properties_True 281.53082730044105 ns/iter 275.2617332472756 ns/iter 1.02
Evaluator_Draft4_Ref_To_Single_Property 23.186527643011175 ns/iter 22.651875000001098 ns/iter 1.02
Evaluator_Draft4_Additional_Properties_Type 31.11902232142987 ns/iter 30.614831951567712 ns/iter 1.02
Evaluator_Draft4_Nested_Oneof 141.94570348456224 ns/iter 153.89363839284036 ns/iter 0.92
Evaluator_Draft4_Long_Enum 21.16454581916773 ns/iter 22.094216271268277 ns/iter 0.96
Evaluator_Draft4_Type_Object 9.660040135447387 ns/iter 10.222335937498883 ns/iter 0.94
Evaluator_Draft6_Property_Names 415.0542895064385 ns/iter 417.58923712326543 ns/iter 0.99
Evaluator_Draft7_If_Then_Else 50.97071428571504 ns/iter 54.05676000000312 ns/iter 0.94
Evaluator_Draft7_Vercel_1 120182.40257130611 ns/iter 111182.1406249902 ns/iter 1.08
Evaluator_Draft7_Helm_Chart_Lock_1 609.2493749999254 ns/iter 627.6057142857537 ns/iter 0.97
Evaluator_2019_09_Unevaluated_Properties 428.5749374999171 ns/iter 437.11724999994317 ns/iter 0.98
Evaluator_2019_09_OMC_JSON_V2_1 4524.743822945433 ns/iter 4441.589999998996 ns/iter 1.02
Evaluator_2020_12_Dynamic_Ref 1364.3614221603436 ns/iter 1356.1268276222231 ns/iter 1.01

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.