Skip to content

dist: update

dist: update #214

GitHub Actions / test-results / spec-6 succeeded Apr 15, 2025 in 0s

test-results / spec-6 ✔️

Tests passed successfully

✔️ test-result-spec6.json

1149 tests were completed in 88ms with 1148 passed, 0 failed and 1 skipped.

Test suite Passed Failed Skipped Time
src/tests/spec/draft06.spec.ts 1148✔️ 1✖️ 39ms

✔️ src/tests/spec/draft06.spec.ts

draft-06 additionalItems additionalItems are allowed by default
  ✔️ only the first item is validated
draft-06 additionalItems additionalItems as false without items
  ✔️ ignores non-arrays
  ✔️ items defaults to empty schema so everything is valid
draft-06 additionalItems additionalItems as schema
  ✔️ additional items do not match schema
  ✔️ additional items match schema
draft-06 additionalItems additionalItems does not look in applicators, invalid case
  ✔️ items defined in allOf are not examined
draft-06 additionalItems additionalItems does not look in applicators, valid case
  ✔️ items defined in allOf are not examined
draft-06 additionalItems additionalItems with heterogeneous array
  ✔️ heterogeneous invalid instance
  ✔️ valid instance
draft-06 additionalItems additionalItems with null instance elements
  ✔️ allows null elements
draft-06 additionalItems array of items with no additionalItems permitted
  ✔️ additional items are not permitted
  ✔️ empty array
  ✔️ equal number of items present
  ✔️ fewer number of items present (1)
  ✔️ fewer number of items present (2)
draft-06 additionalItems items validation adjusts the starting index for additionalItems
  ✔️ valid items
  ✔️ wrong type of second item
draft-06 additionalItems when items is schema, additionalItems does nothing
  ✔️ invalid with a array of mixed types
  ✔️ valid with a array of type integers
draft-06 additionalItems when items is schema, boolean additionalItems does nothing
  ✔️ all items match schema
draft-06 additionalProperties additionalProperties are allowed by default
  ✔️ additional properties are allowed
draft-06 additionalProperties additionalProperties being false does not allow other properties
  ✔️ an additional property is invalid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ no additional properties is valid
  ✔️ patternProperties are not additional properties
draft-06 additionalProperties additionalProperties can exist by itself
  ✔️ an additional invalid property is invalid
  ✔️ an additional valid property is valid
draft-06 additionalProperties additionalProperties does not look in applicators
  ✔️ properties defined in allOf are not examined
draft-06 additionalProperties additionalProperties with null valued instance properties
  ✔️ allows null values
draft-06 additionalProperties additionalProperties with schema
  ✔️ an additional invalid property is invalid
  ✔️ an additional valid property is valid
  ✔️ no additional properties is valid
draft-06 additionalProperties non-ASCII pattern with additionalProperties
  ✔️ matching the pattern is valid
  ✔️ not matching the pattern is invalid
draft-06 allOf allOf
  ✔️ allOf
  ✔️ mismatch first
  ✔️ mismatch second
  ✔️ wrong type
draft-06 allOf allOf combined with anyOf, oneOf
  ✔️ allOf: false, anyOf: false, oneOf: false
  ✔️ allOf: false, anyOf: false, oneOf: true
  ✔️ allOf: false, anyOf: true, oneOf: false
  ✔️ allOf: false, anyOf: true, oneOf: true
  ✔️ allOf: true, anyOf: false, oneOf: false
  ✔️ allOf: true, anyOf: false, oneOf: true
  ✔️ allOf: true, anyOf: true, oneOf: false
  ✔️ allOf: true, anyOf: true, oneOf: true
draft-06 allOf allOf simple types
  ✔️ mismatch one
  ✔️ valid
draft-06 allOf allOf with base schema
  ✔️ mismatch base schema
  ✔️ mismatch both
  ✔️ mismatch first allOf
  ✔️ mismatch second allOf
  ✔️ valid
draft-06 allOf allOf with boolean schemas, all false
  ✔️ any value is invalid
draft-06 allOf allOf with boolean schemas, all true
  ✔️ any value is valid
draft-06 allOf allOf with boolean schemas, some false
  ✔️ any value is invalid
draft-06 allOf allOf with one empty schema
  ✔️ any data is valid
draft-06 allOf allOf with the first empty schema
  ✔️ number is valid
  ✔️ string is invalid
draft-06 allOf allOf with the last empty schema
  ✔️ number is valid
  ✔️ string is invalid
draft-06 allOf allOf with two empty schemas
  ✔️ any data is valid
draft-06 allOf nested allOf, to check validation semantics
  ✔️ anything non-null is invalid
  ✔️ null is valid
draft-06 anyOf anyOf
  ✔️ both anyOf valid
  ✔️ first anyOf valid
  ✔️ neither anyOf valid
  ✔️ second anyOf valid
draft-06 anyOf anyOf complex types
  ✔️ both anyOf valid (complex)
  ✔️ first anyOf valid (complex)
  ✔️ neither anyOf valid (complex)
  ✔️ second anyOf valid (complex)
draft-06 anyOf anyOf with base schema
  ✔️ both anyOf invalid
  ✔️ mismatch base schema
  ✔️ one anyOf valid
draft-06 anyOf anyOf with boolean schemas, all false
  ✔️ any value is invalid
draft-06 anyOf anyOf with boolean schemas, all true
  ✔️ any value is valid
draft-06 anyOf anyOf with boolean schemas, some true
  ✔️ any value is valid
draft-06 anyOf anyOf with one empty schema
  ✔️ number is valid
  ✔️ string is valid
draft-06 anyOf nested anyOf, to check validation semantics
  ✔️ anything non-null is invalid
  ✔️ null is valid
draft-06 bignum (optional) float comparison with high precision
  ✔️ comparison works for high numbers
draft-06 bignum (optional) float comparison with high precision on negative numbers
  ✔️ comparison works for very negative numbers
draft-06 bignum (optional) integer
  ✔️ a bignum is an integer
  ✔️ a negative bignum is an integer
draft-06 bignum (optional) maximum integer comparison
  ✔️ comparison works for high numbers
draft-06 bignum (optional) minimum integer comparison
  ✔️ comparison works for very negative numbers
draft-06 bignum (optional) number
  ✔️ a bignum is a number
  ✔️ a negative bignum is a number
draft-06 bignum (optional) string
  ✔️ a bignum is not a string
draft-06 boolean_schema boolean schema 'false'
  ✔️ array is invalid
  ✔️ boolean false is invalid
  ✔️ boolean true is invalid
  ✔️ empty array is invalid
  ✔️ empty object is invalid
  ✔️ null is invalid
  ✔️ number is invalid
  ✔️ object is invalid
  ✔️ string is invalid
draft-06 boolean_schema boolean schema 'true'
  ✔️ array is valid
  ✔️ boolean false is valid
  ✔️ boolean true is valid
  ✔️ empty array is valid
  ✔️ empty object is valid
  ✔️ null is valid
  ✔️ number is valid
  ✔️ object is valid
  ✔️ string is valid
draft-06 const const validation
  ✔️ another type is invalid
  ✔️ another value is invalid
  ✔️ same value is valid
draft-06 const const with -2.0 matches integer and float types
  ✔️ float -2.0 is valid
  ✔️ float -2.00001 is invalid
  ✔️ float 2.0 is invalid
  ✔️ integer -2 is valid
  ✔️ integer 2 is invalid
draft-06 const const with [false] does not match [0]
  ✔️ [0.0] is invalid
  ✔️ [0] is invalid
  ✔️ [false] is valid
draft-06 const const with [true] does not match [1]
  ✔️ [1.0] is invalid
  ✔️ [1] is invalid
  ✔️ [true] is valid
draft-06 const const with {"a": false} does not match {"a": 0}
  ✔️ {"a": 0.0} is invalid
  ✔️ {"a": 0} is invalid
  ✔️ {"a": false} is valid
draft-06 const const with {"a": true} does not match {"a": 1}
  ✔️ {"a": 1.0} is invalid
  ✔️ {"a": 1} is invalid
  ✔️ {"a": true} is valid
draft-06 const const with 0 does not match other zero-like types
  ✔️ empty array is invalid
  ✔️ empty object is invalid
  ✔️ empty string is invalid
  ✔️ false is invalid
  ✔️ float zero is valid
  ✔️ integer zero is valid
draft-06 const const with 1 does not match true
  ✔️ float one is valid
  ✔️ integer one is valid
  ✔️ true is invalid
draft-06 const const with array
  ✔️ another array item is invalid
  ✔️ array with additional items is invalid
  ✔️ same array is valid
draft-06 const const with false does not match 0
  ✔️ false is valid
  ✔️ float zero is invalid
  ✔️ integer zero is invalid
draft-06 const const with null
  ✔️ not null is invalid
  ✔️ null is valid
draft-06 const const with object
  ✔️ another object is invalid
  ✔️ another type is invalid
  ✔️ same object is valid
  ✔️ same object with different property order is valid
draft-06 const const with true does not match 1
  ✔️ float one is invalid
  ✔️ integer one is invalid
  ✔️ true is valid
draft-06 const float and integers are equal up to 64-bit representation limits
  ✔️ float is valid
  ✔️ float minus one is invalid
  ✔️ integer is valid
  ✔️ integer minus one is invalid
draft-06 const nul characters in strings
  ✔️ do not match string lacking nul
  ✔️ match string with nul
draft-06 contains contains keyword validation
  ✔️ array with item matching schema (5) is valid
  ✔️ array with item matching schema (6) is valid
  ✔️ array with two items matching schema (5, 6) is valid
  ✔️ array without items matching schema is invalid
  ✔️ empty array is invalid
  ✔️ not array is valid
draft-06 contains contains keyword with boolean schema false
  ✔️ any non-empty array is invalid
  ✔️ empty array is invalid
  ✔️ non-arrays are valid
draft-06 contains contains keyword with boolean schema true
  ✔️ any non-empty array is valid
  ✔️ empty array is invalid
draft-06 contains contains keyword with const keyword
  ✔️ array with item 5 is valid
  ✔️ array with two items 5 is valid
  ✔️ array without item 5 is invalid
draft-06 contains contains with null instance elements
  ✔️ allows null items
draft-06 contains items + contains
  ✔️ does not match items, matches contains
  ✔️ matches both items and contains
  ✔️ matches items, does not match contains
  ✔️ matches neither items nor contains
draft-06 default invalid string value for default
  ✔️ still valid when the invalid default is used
  ✔️ valid when property is specified
draft-06 default invalid type for default
  ✔️ still valid when the invalid default is used
  ✔️ valid when property is specified
draft-06 default the default keyword does not do anything if the property is missing
  ✔️ an explicit property value is checked against maximum (failing)
  ✔️ an explicit property value is checked against maximum (passing)
  ✔️ missing properties are not filled in with the default
draft-06 definitions validate definition against metaschema
  ✔️ invalid definition schema
  ✔️ valid definition schema
draft-06 dependencies dependencies
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ missing dependency
  ✔️ neither
  ✔️ nondependant
  ✔️ with dependency
draft-06 dependencies dependencies with boolean subschemas
  ✔️ empty object is valid
  ✔️ object with both properties is invalid
  ✔️ object with property having schema false is invalid
  ✔️ object with property having schema true is valid
draft-06 dependencies dependencies with empty array
  ✔️ empty object
  ✔️ non-object is valid
  ✔️ object with one property
draft-06 dependencies dependencies with escaped characters
  ✔️ invalid object 1
  ✔️ invalid object 2
  ✔️ invalid object 3
  ✔️ invalid object 4
  ✔️ valid object 1
  ✔️ valid object 2
  ✔️ valid object 3
draft-06 dependencies dependent subschema incompatible with root
  ✔️ matches both
  ✔️ matches dependency
  ✔️ matches root
  ✔️ no dependency
draft-06 dependencies multiple dependencies
  ✔️ missing both dependencies
  ✔️ missing dependency
  ✔️ missing other dependency
  ✔️ neither
  ✔️ nondependants
  ✔️ with dependencies
draft-06 dependencies multiple dependencies subschema
  ✔️ no dependency
  ✔️ valid
  ✔️ wrong type
  ✔️ wrong type both
  ✔️ wrong type other
draft-06 ecmascript-regex (optional) \d in pattern matches [0-9], not unicode digits
  ✔️ ascii digits
  ✔️ ascii non-digits
  ✔️ non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)
draft-06 ecmascript-regex (optional) \d in patternProperties matches [0-9], not unicode digits
  ✔️ ascii digits
  ✔️ ascii non-digits
  ✔️ non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)
draft-06 ecmascript-regex (optional) \w in patternProperties matches [A-Za-z0-9_], not unicode letters
  ✔️ ascii character in json string
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
  ✔️ unicode matching is case-sensitive
draft-06 ecmascript-regex (optional) \w in patterns matches [A-Za-z0-9_], not unicode letters
  ✔️ ascii character in json string
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
  ✔️ unicode matching is case-sensitive
draft-06 ecmascript-regex (optional) ECMA 262 \d matches ascii digits only
  ✔️ ASCII zero matches
  ✔️ NKO DIGIT ZERO (as \u escape) does not match
  ✔️ NKO DIGIT ZERO does not match (unlike e.g. Python)
draft-06 ecmascript-regex (optional) ECMA 262 \D matches everything but ascii digits
  ✔️ ASCII zero does not match
  ✔️ NKO DIGIT ZERO (as \u escape) matches
  ✔️ NKO DIGIT ZERO matches (unlike e.g. Python)
draft-06 ecmascript-regex (optional) ECMA 262 \S matches everything but whitespace
  ✔️ ASCII space does not match
  ✔️ Character tabulation does not match
  ✔️ EM SPACE does not match (Space_Separator)
  ✔️ Form feed does not match
  ✔️ latin-1 non-breaking-space does not match
  ✔️ line feed does not match (line terminator)
  ✔️ Line tabulation does not match
  ✔️ Non-whitespace control matches
  ✔️ Non-whitespace matches
  ✔️ paragraph separator does not match (line terminator)
  ✔️ zero-width whitespace does not match
draft-06 ecmascript-regex (optional) ECMA 262 \s matches whitespace
  ✔️ ASCII space matches
  ✔️ Character tabulation matches
  ✔️ EM SPACE matches (Space_Separator)
  ✔️ Form feed matches
  ✔️ latin-1 non-breaking-space matches
  ✔️ line feed matches (line terminator)
  ✔️ Line tabulation matches
  ✔️ Non-whitespace control does not match
  ✔️ Non-whitespace does not match
  ✔️ paragraph separator matches (line terminator)
  ✔️ zero-width whitespace matches
draft-06 ecmascript-regex (optional) ECMA 262 \w matches ascii letters only
  ✔️ ASCII 'a' matches
  ✔️ latin-1 e-acute does not match (unlike e.g. Python)
draft-06 ecmascript-regex (optional) ECMA 262 \W matches everything but ascii letters
  ✔️ ASCII 'a' does not match
  ✔️ latin-1 e-acute matches (unlike e.g. Python)
draft-06 ecmascript-regex (optional) ECMA 262 regex $ does not match trailing newline
  ✔️ matches
  ✔️ matches in Python, but not in ECMA 262
draft-06 ecmascript-regex (optional) ECMA 262 regex converts \t to horizontal tab
  ✔️ does not match
  ✔️ matches
draft-06 ecmascript-regex (optional) ECMA 262 regex escapes control codes with \c and lower letter
  ✔️ does not match
  ✔️ matches
draft-06 ecmascript-regex (optional) ECMA 262 regex escapes control codes with \c and upper letter
  ✔️ does not match
  ✔️ matches
draft-06 ecmascript-regex (optional) pattern with ASCII ranges
  ✔️ ascii characters match
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
draft-06 ecmascript-regex (optional) pattern with non-ASCII digits
  ✔️ ascii digits
  ✔️ ascii non-digits
  ✔️ non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)
draft-06 ecmascript-regex (optional) patternProperties with ASCII ranges
  ✔️ ascii characters match
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
draft-06 ecmascript-regex (optional) patternProperties with non-ASCII digits
  ✔️ ascii digits
  ✔️ ascii non-digits
  ✔️ non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)
draft-06 ecmascript-regex (optional) patterns always use unicode semantics with pattern
  ✔️ ascii character in json string
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
  ✔️ unicode matching is case-sensitive
draft-06 ecmascript-regex (optional) patterns always use unicode semantics with patternProperties
  ✔️ ascii character in json string
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
  ✔️ unicode matching is case-sensitive
draft-06 enum enum with [0] does not match [false]
  ✔️ [0.0] is valid
  ✔️ [0] is valid
  ✔️ [false] is invalid
draft-06 enum enum with [1] does not match [true]
  ✔️ [1.0] is valid
  ✔️ [1] is valid
  ✔️ [true] is invalid
draft-06 enum enum with [false] does not match [0]
  ✔️ [0.0] is invalid
  ✔️ [0] is invalid
  ✔️ [false] is valid
draft-06 enum enum with [true] does not match [1]
  ✔️ [1.0] is invalid
  ✔️ [1] is invalid
  ✔️ [true] is valid
draft-06 enum enum with 0 does not match false
  ✔️ false is invalid
  ✔️ float zero is valid
  ✔️ integer zero is valid
draft-06 enum enum with 1 does not match true
  ✔️ float one is valid
  ✔️ integer one is valid
  ✔️ true is invalid
draft-06 enum enum with escaped characters
  ✔️ another string is invalid
  ✔️ member 1 is valid
  ✔️ member 2 is valid
draft-06 enum enum with false does not match 0
  ✔️ false is valid
  ✔️ float zero is invalid
  ✔️ integer zero is invalid
draft-06 enum enum with true does not match 1
  ✔️ float one is invalid
  ✔️ integer one is invalid
  ✔️ true is valid
draft-06 enum enums in properties
  ✔️ both properties are valid
  ✔️ missing all properties is invalid
  ✔️ missing optional property is valid
  ✔️ missing required property is invalid
  ✔️ wrong bar value
  ✔️ wrong foo value
draft-06 enum heterogeneous enum validation
  ✔️ extra properties in object is invalid
  ✔️ objects are deep compared
  ✔️ one of the enum is valid
  ✔️ something else is invalid
  ✔️ valid object matches
draft-06 enum heterogeneous enum-with-null validation
  ✔️ null is valid
  ✔️ number is valid
  ✔️ something else is invalid
draft-06 enum nul characters in strings
  ✔️ do not match string lacking nul
  ✔️ match string with nul
draft-06 enum simple enum validation
  ✔️ one of the enum is valid
  ✔️ something else is invalid
draft-06 exclusiveMaximum exclusiveMaximum validation
  ✔️ above the exclusiveMaximum is invalid
  ✔️ below the exclusiveMaximum is valid
  ✔️ boundary point is invalid
  ✔️ ignores non-numbers
draft-06 exclusiveMinimum exclusiveMinimum validation
  ✔️ above the exclusiveMinimum is valid
  ✔️ below the exclusiveMinimum is invalid
  ✔️ boundary point is invalid
  ✔️ ignores non-numbers
draft-06 float-overflow (optional)
  ✖️ all integers are multiples of 0.5, if overflow is handled
draft-06 format date-time format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format email format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format hostname format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format ipv4 format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format ipv6 format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format json-pointer format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format uri format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format uri-reference format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format uri-template format
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
draft-06 format-date-time (optional) validation of date-time strings
  ✔️ a valid date-time string
  ✔️ a valid date-time string with minus offset
  ✔️ a valid date-time string with plus offset
  ✔️ a valid date-time string without second fraction
  ✔️ a valid date-time with a leap second, UTC
  ✔️ a valid date-time with a leap second, with minus offset
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an invalid closing Z after time-zone offset
  ✔️ an invalid date-time past leap second, UTC
  ✔️ an invalid date-time string
  ✔️ an invalid date-time with leap second on a wrong hour, UTC
  ✔️ an invalid date-time with leap second on a wrong minute, UTC
  ✔️ an invalid day in date-time string
  ✔️ an invalid offset in date-time string
  ✔️ case-insensitive T and Z
  ✔️ invalid non-ASCII '৪' (a Bengali 4) in date portion
  ✔️ invalid non-ASCII '৪' (a Bengali 4) in time portion
  ✔️ invalid non-padded day dates
  ✔️ invalid non-padded month dates
  ✔️ only RFC3339 not all of ISO 8601 are valid
draft-06 format-email (optional) validation of e-mail addresses
  ✔️ a valid e-mail address
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an invalid e-mail address
  ✔️ dot after local part is not valid
  ✔️ dot before local part is not valid
  ✔️ tilde after local part is valid
  ✔️ tilde before local part is valid
  ✔️ tilde in local part is valid
  ✔️ two separated dots inside local part are valid
  ✔️ two subsequent dots inside local part are not valid
draft-06 format-hostname (optional) validation of host names
  ✔️ a host name containing illegal characters
  ✔️ a host name starting with an illegal character
  ✔️ a host name with a component too long
  ✔️ a valid host name
  ✔️ a valid punycoded IDN hostname
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ contains underscore
  ✔️ empty string
  ✔️ ends with hyphen
  ✔️ ends with underscore
  ✔️ exceeds maximum label length
  ✔️ maximum label length
  ✔️ single dot
  ✔️ single label
  ✔️ single label ending with digit
  ✔️ single label with digits
  ✔️ single label with hyphen
  ✔️ starts with hyphen
  ✔️ starts with underscore
draft-06 format-ipv4 (optional) validation of IP addresses
  ✔️ a valid IP address
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an IP address as an integer
  ✔️ an IP address as an integer (decimal)
  ✔️ an IP address with out-of-range values
  ✔️ an IP address with too many components
  ✔️ an IP address without 4 components
  ✔️ invalid leading zeroes, as they are treated as octals
  ✔️ invalid non-ASCII '২' (a Bengali 2)
  ✔️ netmask is not a part of ipv4 address
  ✔️ value without leading zero is valid
draft-06 format-ipv6 (optional) validation of IPv6 addresses
  ✔️ 8 octets
  ✔️ a long invalid ipv6, below length limit, first
  ✔️ a long invalid ipv6, below length limit, second
  ✔️ a long valid ipv6
  ✔️ a valid IPv6 address
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an IPv6 address containing illegal characters
  ✔️ an IPv6 address with out-of-range values
  ✔️ an IPv6 address with too many components
  ✔️ insufficient octets without double colons
  ✔️ invalid non-ASCII '৪' (a Bengali 4)
  ✔️ invalid non-ASCII '৪' (a Bengali 4) in the IPv4 portion
  ✔️ ipv4 is not ipv6
  ✔️ ipv4 segment must have 4 octets
  ✔️ leading colons is valid
  ✔️ leading whitespace is invalid
  ✔️ missing leading octet is invalid
  ✔️ missing leading octet with omitted octets later
  ✔️ missing trailing octet is invalid
  ✔️ mixed format with double colons between the sections
  ✔️ mixed format with ipv4 section with a hex octet
  ✔️ mixed format with ipv4 section with octet out of range
  ✔️ mixed format with leading double colons (ipv4-mapped ipv6 address)
  ✔️ mixed format with the ipv4 section as decimal octets
  ✔️ netmask is not a part of ipv6 address
  ✔️ no colons is invalid
  ✔️ no digits is valid
  ✔️ single set of double colons in the middle is valid
  ✔️ trailing 4 hex symbols is valid
  ✔️ trailing 5 hex symbols is invalid
  ✔️ trailing colons is valid
  ✔️ trailing whitespace is invalid
  ✔️ triple colons is invalid
  ✔️ two sets of double colons is invalid
  ✔️ zone id is not a part of ipv6 address
draft-06 format-json-pointer (optional) validation of JSON-pointers (JSON String Representation)
  ✔️ a valid JSON-pointer
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ not a valid JSON-pointer (~ not escaped)
  ✔️ not a valid JSON-pointer (isn't empty nor starts with /) #1
  ✔️ not a valid JSON-pointer (isn't empty nor starts with /) #2
  ✔️ not a valid JSON-pointer (isn't empty nor starts with /) #3
  ✔️ not a valid JSON-pointer (multiple characters not escaped)
  ✔️ not a valid JSON-pointer (some escaped, but not all) #1
  ✔️ not a valid JSON-pointer (some escaped, but not all) #2
  ✔️ not a valid JSON-pointer (URI Fragment Identifier) #1
  ✔️ not a valid JSON-pointer (URI Fragment Identifier) #2
  ✔️ not a valid JSON-pointer (URI Fragment Identifier) #3
  ✔️ not a valid JSON-pointer (wrong escape character) #1
  ✔️ not a valid JSON-pointer (wrong escape character) #2
  ✔️ valid JSON-pointer (- used as object member name)
  ✔️ valid JSON-pointer (escaped with fraction part) #1
  ✔️ valid JSON-pointer (escaped with fraction part) #2
  ✔️ valid JSON-pointer (multiple escaped characters)
  ✔️ valid JSON-pointer as stated in RFC 6901 #1
  ✔️ valid JSON-pointer as stated in RFC 6901 #10
  ✔️ valid JSON-pointer as stated in RFC 6901 #11
  ✔️ valid JSON-pointer as stated in RFC 6901 #12
  ✔️ valid JSON-pointer as stated in RFC 6901 #2
  ✔️ valid JSON-pointer as stated in RFC 6901 #3
  ✔️ valid JSON-pointer as stated in RFC 6901 #4
  ✔️ valid JSON-pointer as stated in RFC 6901 #5
  ✔️ valid JSON-pointer as stated in RFC 6901 #6
  ✔️ valid JSON-pointer as stated in RFC 6901 #7
  ✔️ valid JSON-pointer as stated in RFC 6901 #8
  ✔️ valid JSON-pointer as stated in RFC 6901 #9
  ✔️ valid JSON-pointer used adding to the last array position
  ✔️ valid JSON-pointer with empty segment
  ✔️ valid JSON-pointer with the last empty segment
draft-06 format-unknown (optional) unknown format
  ✔️ unknown formats ignore arrays
  ✔️ unknown formats ignore booleans
  ✔️ unknown formats ignore floats
  ✔️ unknown formats ignore integers
  ✔️ unknown formats ignore nulls
  ✔️ unknown formats ignore objects
  ✔️ unknown formats ignore strings
draft-06 format-uri (optional) validation of URIs
  ✔️ a valid mailto URI
  ✔️ a valid newsgroup URI
  ✔️ a valid puny-coded URL 
  ✔️ a valid tel URI
  ✔️ a valid URL 
  ✔️ a valid URL based on IPv4
  ✔️ a valid URL for a simple text file
  ✔️ a valid URL with anchor tag
  ✔️ a valid URL with anchor tag and parentheses
  ✔️ a valid URL with ftp scheme
  ✔️ a valid URL with many special characters
  ✔️ a valid URL with URL-encoded stuff
  ✔️ a valid URN
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an invalid protocol-relative URI Reference
  ✔️ an invalid relative URI Reference
  ✔️ an invalid URI
  ✔️ an invalid URI though valid URI reference
  ✔️ an invalid URI with comma in scheme
  ✔️ an invalid URI with spaces
  ✔️ an invalid URI with spaces and missing scheme
draft-06 format-uri-reference (optional) validation of URI References
  ✔️ a valid protocol-relative URI Reference
  ✔️ a valid relative URI Reference
  ✔️ a valid URI
  ✔️ a valid URI fragment
  ✔️ a valid URI Reference
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an invalid URI fragment
  ✔️ an invalid URI Reference
draft-06 format-uri-template (optional) format: uri-template
  ✔️ a valid relative uri-template
  ✔️ a valid uri-template
  ✔️ a valid uri-template without variables
  ✔️ all string formats ignore arrays
  ✔️ all string formats ignore booleans
  ✔️ all string formats ignore floats
  ✔️ all string formats ignore integers
  ✔️ all string formats ignore nulls
  ✔️ all string formats ignore objects
  ✔️ an invalid uri-template
draft-06 id (optional) id inside an enum is not a real identifier
  ✔️ exact match to enum, and type matches
  ✔️ match $ref to id
  ✔️ no match on enum or $ref to id
draft-06 id (optional) non-schema object containing a plain-name $id property
  ✔️ const at const_not_anchor does not match
  ✔️ skip traversing definition for a valid result
draft-06 id (optional) non-schema object containing an $id property
  ✔️ const at const_not_id does not match
  ✔️ skip traversing definition for a valid result
draft-06 infinite-loop-detection evaluating the same schema location against the same data location twice is not a sign of an infinite loop
  ✔️ failing case
  ✔️ passing case
draft-06 items a schema given for items
  ✔️ ignores non-arrays
  ✔️ JavaScript pseudo-array is valid
  ✔️ valid items
  ✔️ wrong type of items
draft-06 items an array of schemas for items
  ✔️ array with additional items
  ✔️ correct types
  ✔️ empty array
  ✔️ incomplete array of items
  ✔️ JavaScript pseudo-array is valid
  ✔️ wrong types
draft-06 items array-form items with null instance elements
  ✔️ allows null elements
draft-06 items items and subitems
  ✔️ fewer items is valid
  ✔️ too many items
  ✔️ too many sub-items
  ✔️ valid items
  ✔️ wrong item
  ✔️ wrong sub-item
draft-06 items items with boolean schema (false)
  ✔️ any non-empty array is invalid
  ✔️ empty array is valid
draft-06 items items with boolean schema (true)
  ✔️ any array is valid
  ✔️ empty array is valid
draft-06 items items with boolean schemas
  ✔️ array with one item is valid
  ✔️ array with two items is invalid
  ✔️ empty array is valid
draft-06 items nested items
  ✔️ nested array with invalid type
  ✔️ not deep enough
  ✔️ valid nested array
draft-06 items single-form items with null instance elements
  ✔️ allows null elements
draft-06 maximum maximum validation
  ✔️ above the maximum is invalid
  ✔️ below the maximum is valid
  ✔️ boundary point is valid
  ✔️ ignores non-numbers
draft-06 maximum maximum validation with unsigned integer
  ✔️ above the maximum is invalid
  ✔️ below the maximum is invalid
  ✔️ boundary point float is valid
  ✔️ boundary point integer is valid
draft-06 maxItems maxItems validation
  ✔️ exact length is valid
  ✔️ ignores non-arrays
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-06 maxItems maxItems validation with a decimal
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-06 maxLength maxLength validation
  ✔️ exact length is valid
  ✔️ ignores non-strings
  ✔️ shorter is valid
  ✔️ too long is invalid
  ✔️ two graphemes is long enough
draft-06 maxLength maxLength validation with a decimal
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-06 maxProperties maxProperties = 0 means the object is empty
  ✔️ no properties is valid
  ✔️ one property is invalid
draft-06 maxProperties maxProperties validation
  ✔️ exact length is valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-06 maxProperties maxProperties validation with a decimal
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-06 minimum minimum validation
  ✔️ above the minimum is valid
  ✔️ below the minimum is invalid
  ✔️ boundary point is valid
  ✔️ ignores non-numbers
draft-06 minimum minimum validation with signed integer
  ✔️ boundary point is valid
  ✔️ boundary point with float is valid
  ✔️ float below the minimum is invalid
  ✔️ ignores non-numbers
  ✔️ int below the minimum is invalid
  ✔️ negative above the minimum is valid
  ✔️ positive above the minimum is valid
draft-06 minItems minItems validation
  ✔️ exact length is valid
  ✔️ ignores non-arrays
  ✔️ longer is valid
  ✔️ too short is invalid
draft-06 minItems minItems validation with a decimal
  ✔️ longer is valid
  ✔️ too short is invalid
draft-06 minLength minLength validation
  ✔️ exact length is valid
  ✔️ ignores non-strings
  ✔️ longer is valid
  ✔️ one grapheme is not long enough
  ✔️ too short is invalid
draft-06 minLength minLength validation with a decimal
  ✔️ longer is valid
  ✔️ too short is invalid
draft-06 minProperties minProperties validation
  ✔️ exact length is valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ longer is valid
  ✔️ too short is invalid
draft-06 minProperties minProperties validation with a decimal
  ✔️ longer is valid
  ✔️ too short is invalid
draft-06 multipleOf by int
  ✔️ ignores non-numbers
  ✔️ int by int
  ✔️ int by int fail
draft-06 multipleOf by number
  ✔️ 35 is not multiple of 1.5
  ✔️ 4.5 is multiple of 1.5
  ✔️ zero is multiple of anything
draft-06 multipleOf by small number
  ✔️ 0.0075 is multiple of 0.0001
  ✔️ 0.00751 is not multiple of 0.0001
draft-06 multipleOf float division = inf
  ✔️ always invalid, but naive implementations may raise an overflow error
draft-06 multipleOf small multiple of large integer
  ✔️ any integer is a multiple of 1e-8
draft-06 non-bmp-regex (optional) Proper UTF-16 surrogate pair handling: pattern
  ✔️ doesn't match one
  ✔️ doesn't match one ASCII
  ✔️ doesn't match two
  ✔️ doesn't match two ASCII
  ✔️ matches empty
  ✔️ matches single
  ✔️ matches two
draft-06 non-bmp-regex (optional) Proper UTF-16 surrogate pair handling: patternProperties
  ✔️ doesn't match one
  ✔️ doesn't match two
  ✔️ matches empty
  ✔️ matches single
  ✔️ matches two
draft-06 not allow everything with boolean schema false
  ✔️ array is valid
  ✔️ boolean false is valid
  ✔️ boolean true is valid
  ✔️ empty array is valid
  ✔️ empty object is valid
  ✔️ null is valid
  ✔️ number is valid
  ✔️ object is valid
  ✔️ string is valid
draft-06 not double negation
  ✔️ any value is valid
draft-06 not forbid everything with boolean schema true
  ✔️ array is invalid
  ✔️ boolean false is invalid
  ✔️ boolean true is invalid
  ✔️ empty array is invalid
  ✔️ empty object is invalid
  ✔️ null is invalid
  ✔️ number is invalid
  ✔️ object is invalid
  ✔️ string is invalid
draft-06 not forbid everything with empty schema
  ✔️ array is invalid
  ✔️ boolean false is invalid
  ✔️ boolean true is invalid
  ✔️ empty array is invalid
  ✔️ empty object is invalid
  ✔️ null is invalid
  ✔️ number is invalid
  ✔️ object is invalid
  ✔️ string is invalid
draft-06 not forbidden property
  ✔️ property absent
  ✔️ property present
draft-06 not not
  ✔️ allowed
  ✔️ disallowed
draft-06 not not more complex schema
  ✔️ match
  ✔️ mismatch
  ✔️ other match
draft-06 not not multiple types
  ✔️ mismatch
  ✔️ other mismatch
  ✔️ valid
draft-06 oneOf nested oneOf, to check validation semantics
  ✔️ anything non-null is invalid
  ✔️ null is valid
draft-06 oneOf oneOf
  ✔️ both oneOf valid
  ✔️ first oneOf valid
  ✔️ neither oneOf valid
  ✔️ second oneOf valid
draft-06 oneOf oneOf complex types
  ✔️ both oneOf valid (complex)
  ✔️ first oneOf valid (complex)
  ✔️ neither oneOf valid (complex)
  ✔️ second oneOf valid (complex)
draft-06 oneOf oneOf with base schema
  ✔️ both oneOf valid
  ✔️ mismatch base schema
  ✔️ one oneOf valid
draft-06 oneOf oneOf with boolean schemas, all false
  ✔️ any value is invalid
draft-06 oneOf oneOf with boolean schemas, all true
  ✔️ any value is invalid
draft-06 oneOf oneOf with boolean schemas, more than one true
  ✔️ any value is invalid
draft-06 oneOf oneOf with boolean schemas, one true
  ✔️ any value is valid
draft-06 oneOf oneOf with empty schema
  ✔️ both valid - invalid
  ✔️ one valid - valid
draft-06 oneOf oneOf with missing optional property
  ✔️ both oneOf valid
  ✔️ first oneOf valid
  ✔️ neither oneOf valid
  ✔️ second oneOf valid
draft-06 oneOf oneOf with required
  ✔️ both invalid - invalid
  ✔️ both valid - invalid
  ✔️ first valid - valid
  ✔️ second valid - valid
draft-06 pattern pattern is not anchored
  ✔️ matches a substring
draft-06 pattern pattern validation
  ✔️ a matching pattern is valid
  ✔️ a non-matching pattern is invalid
  ✔️ ignores arrays
  ✔️ ignores booleans
  ✔️ ignores floats
  ✔️ ignores integers
  ✔️ ignores null
  ✔️ ignores objects
draft-06 patternProperties multiple simultaneous patternProperties are validated
  ✔️ a simultaneous match is valid
  ✔️ a single valid match is valid
  ✔️ an invalid due to both is invalid
  ✔️ an invalid due to one is invalid
  ✔️ an invalid due to the other is invalid
  ✔️ multiple matches is valid
draft-06 patternProperties patternProperties validates properties matching a regex
  ✔️ a single invalid match is invalid
  ✔️ a single valid match is valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ multiple invalid matches is invalid
  ✔️ multiple valid matches is valid
draft-06 patternProperties patternProperties with boolean schemas
  ✔️ empty object is valid
  ✔️ object with a property matching both true and false is invalid
  ✔️ object with both properties is invalid
  ✔️ object with property matching schema false is invalid
  ✔️ object with property matching schema true is valid
draft-06 patternProperties patternProperties with null valued instance properties
  ✔️ allows null values
draft-06 patternProperties regexes are not anchored by default and are case sensitive
  ✔️ non recognized members are ignored
  ✔️ recognized members are accounted for
  ✔️ regexes are case sensitive
  ✔️ regexes are case sensitive, 2
draft-06 properties object properties validation
  ✔️ both properties invalid is invalid
  ✔️ both properties present and valid is valid
  ✔️ doesn't invalidate other properties
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ one property invalid is invalid
draft-06 properties properties whose names are Javascript object property names
  ✔️ __proto__ not valid
  ✔️ all present and valid
  ✔️ constructor not valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ none of the properties mentioned
  ✔️ toString not valid
draft-06 properties properties with boolean schema
  ✔️ both properties present is invalid
  ✔️ no property present is valid
  ✔️ only 'false' property present is invalid
  ✔️ only 'true' property present is valid
draft-06 properties properties with escaped characters
  ✔️ object with all numbers is valid
  ✔️ object with strings is invalid
draft-06 properties properties with null valued instance properties
  ✔️ allows null values
draft-06 properties properties, patternProperties, additionalProperties interaction
  ✔️ additionalProperty ignores property
  ✔️ additionalProperty invalidates others
  ✔️ additionalProperty validates others
  ✔️ patternProperty invalidates nonproperty
  ✔️ patternProperty invalidates property
  ✔️ patternProperty validates nonproperty
  ✔️ property invalidates property
  ✔️ property validates property
draft-06 propertyNames propertyNames validation
  ✔️ all property names valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ object without properties is valid
  ✔️ some property names invalid
draft-06 propertyNames propertyNames validation with pattern
  ✔️ matching property names valid
  ✔️ non-matching property name is invalid
  ✔️ object without properties is valid
draft-06 propertyNames propertyNames with boolean schema false
  ✔️ empty object is valid
  ✔️ object with any properties is invalid
draft-06 propertyNames propertyNames with boolean schema true
  ✔️ empty object is valid
  ✔️ object with any properties is valid
draft-06 propertyNames propertyNames with const
  ✔️ empty object is valid
  ✔️ object with any other property is invalid
  ✔️ object with property foo is valid
draft-06 propertyNames propertyNames with enum
  ✔️ empty object is valid
  ✔️ object with any other property is invalid
  ✔️ object with property foo and bar is valid
  ✔️ object with property foo is valid
draft-06 ref $id with file URI still resolves pointers - *nix
  ✔️ non-number is invalid
  ✔️ number is valid
draft-06 ref $id with file URI still resolves pointers - windows
  ✔️ non-number is invalid
  ✔️ number is valid
draft-06 ref $ref prevents a sibling $id from changing the base uri
  ✔️ $ref resolves to /definitions/base_foo, data does not validate
  ✔️ $ref resolves to /definitions/base_foo, data validates
draft-06 ref $ref to boolean schema false
  ✔️ any value is invalid
draft-06 ref $ref to boolean schema true
  ✔️ any value is valid
draft-06 ref empty tokens in $ref json-pointer
  ✔️ non-number is invalid
  ✔️ number is valid
draft-06 ref escaped pointer ref
  ✔️ percent invalid
  ✔️ percent valid
  ✔️ slash invalid
  ✔️ slash valid
  ✔️ tilde invalid
  ✔️ tilde valid
draft-06 ref Location-independent identifier
  ✔️ match
  ✔️ mismatch
draft-06 ref Location-independent identifier with base URI change in subschema
  ✔️ match
  ✔️ mismatch
draft-06 ref naive replacement of $ref with its destination is not correct
  ✔️ do not evaluate the $ref inside the enum, definition exact match
  ✔️ do not evaluate the $ref inside the enum, matching any string
  ✔️ match the enum exactly
draft-06 ref nested refs
  ✔️ nested ref invalid
  ✔️ nested ref valid
draft-06 ref property named $ref that is not a reference
  ✔️ property named $ref invalid
  ✔️ property named $ref valid
draft-06 ref property named $ref, containing an actual $ref
  ✔️ property named $ref invalid
  ✔️ property named $ref valid
draft-06 ref Recursive references between schemas
  ✔️ invalid tree
  ✔️ valid tree
draft-06 ref ref overrides any sibling keywords
  ✔️ ref invalid
  ✔️ ref valid
  ✔️ ref valid, maxItems ignored
draft-06 ref ref with absolute-path-reference
  ✔️ a string is valid
  ✔️ an integer is invalid
draft-06 ref Reference an anchor with a non-relative URI
  ✔️ match
  ✔️ mismatch
draft-06 ref refs with quote
  ✔️ object with numbers is valid
  ✔️ object with strings is invalid
draft-06 ref refs with relative uris and defs
  ✔️ invalid on inner field
  ✔️ invalid on outer field
  ✔️ valid on both fields
draft-06 ref relative pointer ref to array
  ✔️ match array
  ✔️ mismatch array
draft-06 ref relative pointer ref to object
  ✔️ match
  ✔️ mismatch
draft-06 ref relative refs with absolute uris and defs
  ✔️ invalid on inner field
  ✔️ invalid on outer field
  ✔️ valid on both fields
draft-06 ref remote ref, containing refs itself
  ✔️ remote ref invalid
  ✔️ remote ref valid
draft-06 ref root pointer ref
  ✔️ match
  ✔️ mismatch
  ✔️ recursive match
  ✔️ recursive mismatch
draft-06 ref simple URN base URI with $ref via the URN
  ✔️ invalid under the URN IDed schema
  ✔️ valid under the URN IDed schema
draft-06 ref simple URN base URI with JSON pointer
  ✔️ a non-string is invalid
  ✔️ a string is valid
draft-06 ref URN base URI with NSS
  ✔️ a non-string is invalid
  ✔️ a string is valid
draft-06 ref URN base URI with q-component
  ✔️ a non-string is invalid
  ✔️ a string is valid
draft-06 ref URN base URI with r-component
  ✔️ a non-string is invalid
  ✔️ a string is valid
draft-06 ref URN base URI with URN and anchor ref
  ✔️ a non-string is invalid
  ✔️ a string is valid
draft-06 ref URN base URI with URN and JSON pointer ref
  ✔️ a non-string is invalid
  ✔️ a string is valid
draft-06 refRemote $ref to $ref finds location-independent $id
  ✔️ non-number is invalid
  ✔️ number is valid
draft-06 refRemote base URI change
  ✔️ base URI change ref invalid
  ✔️ base URI change ref valid
draft-06 refRemote base URI change - change folder
  ✔️ number is valid
  ✔️ string is invalid
draft-06 refRemote base URI change - change folder in subschema
  ✔️ number is valid
  ✔️ string is invalid
draft-06 refRemote fragment within remote ref
  ✔️ remote fragment invalid
  ✔️ remote fragment valid
draft-06 refRemote Location-independent identifier in remote ref
  ✔️ integer is valid
  ✔️ string is invalid
draft-06 refRemote ref within remote ref
  ✔️ ref within ref invalid
  ✔️ ref within ref valid
draft-06 refRemote remote ref
  ✔️ remote ref invalid
  ✔️ remote ref valid
draft-06 refRemote remote ref with ref to definitions
  ✔️ invalid
  ✔️ valid
draft-06 refRemote retrieved nested refs resolve relative to their URI not $id
  ✔️ number is invalid
  ✔️ string is valid
draft-06 refRemote root ref in remote ref
  ✔️ null is valid
  ✔️ object is invalid
  ✔️ string is valid
draft-06 required required default validation
  ✔️ not required by default
draft-06 required required properties whose names are Javascript object property names
  ✔️ __proto__ present
  ✔️ all present
  ✔️ constructor present
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ none of the properties mentioned
  ✔️ toString present
draft-06 required required validation
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ non-present required property is invalid
  ✔️ present required property is valid
draft-06 required required with empty array
  ✔️ property not required
draft-06 required required with escaped characters
  ✔️ object with all properties present is valid
  ✔️ object with some properties missing is invalid
draft-06 type array type matches arrays
  ✔️ a boolean is not an array
  ✔️ a float is not an array
  ✔️ a string is not an array
  ✔️ an array is an array
  ✔️ an integer is not an array
  ✔️ an object is not an array
  ✔️ null is not an array
draft-06 type boolean type matches booleans
  ✔️ a float is not a boolean
  ✔️ a string is not a boolean
  ✔️ an array is not a boolean
  ✔️ an empty string is not a boolean
  ✔️ an integer is not a boolean
  ✔️ an object is not a boolean
  ✔️ false is a boolean
  ✔️ null is not a boolean
  ✔️ true is a boolean
  ✔️ zero is not a boolean
draft-06 type integer type matches integers
  ✔️ a boolean is not an integer
  ✔️ a float is not an integer
  ✔️ a float with zero fractional part is an integer
  ✔️ a string is not an integer
  ✔️ a string is still not an integer, even if it looks like one
  ✔️ an array is not an integer
  ✔️ an integer is an integer
  ✔️ an object is not an integer
  ✔️ null is not an integer
draft-06 type multiple types can be specified in an array
  ✔️ a boolean is invalid
  ✔️ a float is invalid
  ✔️ a string is valid
  ✔️ an array is invalid
  ✔️ an integer is valid
  ✔️ an object is invalid
  ✔️ null is invalid
draft-06 type null type matches only the null object
  ✔️ a float is not null
  ✔️ a string is not null
  ✔️ an array is not null
  ✔️ an empty string is not null
  ✔️ an integer is not null
  ✔️ an object is not null
  ✔️ false is not null
  ✔️ null is null
  ✔️ true is not null
  ✔️ zero is not null
draft-06 type number type matches numbers
  ✔️ a boolean is not a number
  ✔️ a float is a number
  ✔️ a float with zero fractional part is a number (and an integer)
  ✔️ a string is not a number
  ✔️ a string is still not a number, even if it looks like one
  ✔️ an array is not a number
  ✔️ an integer is a number
  ✔️ an object is not a number
  ✔️ null is not a number
draft-06 type object type matches objects
  ✔️ a boolean is not an object
  ✔️ a float is not an object
  ✔️ a string is not an object
  ✔️ an array is not an object
  ✔️ an integer is not an object
  ✔️ an object is an object
  ✔️ null is not an object
draft-06 type string type matches strings
  ✔️ 1 is not a string
  ✔️ a boolean is not a string
  ✔️ a float is not a string
  ✔️ a string is a string
  ✔️ a string is still a string, even if it looks like a number
  ✔️ an array is not a string
  ✔️ an empty string is still a string
  ✔️ an object is not a string
  ✔️ null is not a string
draft-06 type type as array with one item
  ✔️ number is invalid
  ✔️ string is valid
draft-06 type type: array or object
  ✔️ array is valid
  ✔️ null is invalid
  ✔️ number is invalid
  ✔️ object is valid
  ✔️ string is invalid
draft-06 type type: array, object or null
  ✔️ array is valid
  ✔️ null is valid
  ✔️ number is invalid
  ✔️ object is valid
  ✔️ string is invalid
draft-06 uniqueItems uniqueItems validation
  ✔️ [0] and [false] are unique
  ✔️ [1] and [true] are unique
  ✔️ {"a": false} and {"a": 0} are unique
  ✔️ {"a": true} and {"a": 1} are unique
  ✔️ 0 and false are unique
  ✔️ 1 and true are unique
  ✔️ different objects are unique
  ✔️ false is not equal to zero
  ✔️ nested [0] and [false] are unique
  ✔️ nested [1] and [true] are unique
  ✔️ non-unique array of arrays is invalid
  ✔️ non-unique array of integers is invalid
  ✔️ non-unique array of more than two arrays is invalid
  ✔️ non-unique array of more than two integers is invalid
  ✔️ non-unique array of nested objects is invalid
  ✔️ non-unique array of objects is invalid
  ✔️ non-unique array of strings is invalid
  ✔️ non-unique heterogeneous types are invalid
  ✔️ numbers are unique if mathematically unequal
  ✔️ objects are non-unique despite key order
  ✔️ property order of array of objects is ignored
  ✔️ true is not equal to one
  ✔️ unique array of arrays is valid
  ✔️ unique array of integers is valid
  ✔️ unique array of nested objects is valid
  ✔️ unique array of objects is valid
  ✔️ unique array of strings is valid
  ✔️ unique heterogeneous types are valid
draft-06 uniqueItems uniqueItems with an array of items
  ✔️ [false, false] from items array is not valid
  ✔️ [false, true] from items array is valid
  ✔️ [true, false] from items array is valid
  ✔️ [true, true] from items array is not valid
  ✔️ non-unique array extended from [false, true] is not valid
  ✔️ non-unique array extended from [true, false] is not valid
  ✔️ unique array extended from [false, true] is valid
  ✔️ unique array extended from [true, false] is valid
draft-06 uniqueItems uniqueItems with an array of items and additionalItems=false
  ✔️ [false, false] from items array is not valid
  ✔️ [false, true] from items array is valid
  ✔️ [true, false] from items array is valid
  ✔️ [true, true] from items array is not valid
  ✔️ extra items are invalid even if unique
draft-06 uniqueItems uniqueItems=false validation
  ✔️ 0 and false are unique
  ✔️ 1 and true are unique
  ✔️ false is not equal to zero
  ✔️ non-unique array of arrays is valid
  ✔️ non-unique array of integers is valid
  ✔️ non-unique array of nested objects is valid
  ✔️ non-unique array of objects is valid
  ✔️ non-unique heterogeneous types are valid
  ✔️ numbers are unique if mathematically unequal
  ✔️ true is not equal to one
  ✔️ unique array of arrays is valid
  ✔️ unique array of integers is valid
  ✔️ unique array of nested objects is valid
  ✔️ unique array of objects is valid
  ✔️ unique heterogeneous types are valid
draft-06 uniqueItems uniqueItems=false with an array of items
  ✔️ [false, false] from items array is valid
  ✔️ [false, true] from items array is valid
  ✔️ [true, false] from items array is valid
  ✔️ [true, true] from items array is valid
  ✔️ non-unique array extended from [false, true] is valid
  ✔️ non-unique array extended from [true, false] is valid
  ✔️ unique array extended from [false, true] is valid
  ✔️ unique array extended from [true, false] is valid
draft-06 uniqueItems uniqueItems=false with an array of items and additionalItems=false
  ✔️ [false, false] from items array is valid
  ✔️ [false, true] from items array is valid
  ✔️ [true, false] from items array is valid
  ✔️ [true, true] from items array is valid
  ✔️ extra items are invalid even if unique
draft-06 unknownKeyword (optional) $id inside an unknown keyword is not a real identifier
  ✔️ type matches non-schema in first anyOf
  ✔️ type matches non-schema in third anyOf
  ✔️ type matches second anyOf, which has a real schema in it