Skip to content

docs: remove reference to older documentation #230

docs: remove reference to older documentation

docs: remove reference to older documentation #230

GitHub Actions / test-results / spec-4 succeeded May 3, 2025 in 0s

test-results / spec-4 ✔️

Tests passed successfully

✔️ test-result-spec4.json

863 tests were completed in 67ms with 861 passed, 0 failed and 2 skipped.

Test suite Passed Failed Skipped Time
src/tests/spec/draft04.spec.ts 861✔️ 2✖️ 24ms

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

draft-04 additionalItems additionalItems are allowed by default
  ✔️ only the first item is validated
draft-04 additionalItems additionalItems as false without items
  ✔️ ignores non-arrays
  ✔️ items defaults to empty schema so everything is valid
draft-04 additionalItems additionalItems as schema
  ✔️ additional items do not match schema
  ✔️ additional items match schema
draft-04 additionalItems additionalItems does not look in applicators, invalid case
  ✔️ items defined in allOf are not examined
draft-04 additionalItems additionalItems does not look in applicators, valid case
  ✔️ items defined in allOf are not examined
draft-04 additionalItems additionalItems with heterogeneous array
  ✔️ heterogeneous invalid instance
  ✔️ valid instance
draft-04 additionalItems additionalItems with null instance elements
  ✔️ allows null elements
draft-04 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-04 additionalItems items validation adjusts the starting index for additionalItems
  ✔️ valid items
  ✔️ wrong type of second item
draft-04 additionalItems when items is schema, additionalItems does nothing
  ✔️ all items match schema
draft-04 additionalProperties additionalProperties are allowed by default
  ✔️ additional properties are allowed
draft-04 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-04 additionalProperties additionalProperties can exist by itself
  ✔️ an additional invalid property is invalid
  ✔️ an additional valid property is valid
draft-04 additionalProperties additionalProperties does not look in applicators
  ✔️ properties defined in allOf are not examined
draft-04 additionalProperties additionalProperties with null valued instance properties
  ✔️ allows null values
draft-04 additionalProperties additionalProperties with schema
  ✔️ an additional invalid property is invalid
  ✔️ an additional valid property is valid
  ✔️ no additional properties is valid
draft-04 additionalProperties non-ASCII pattern with additionalProperties
  ✔️ matching the pattern is valid
  ✔️ not matching the pattern is invalid
draft-04 allOf allOf
  ✔️ allOf
  ✔️ mismatch first
  ✔️ mismatch second
  ✔️ wrong type
draft-04 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-04 allOf allOf simple types
  ✔️ mismatch one
  ✔️ valid
draft-04 allOf allOf with base schema
  ✔️ mismatch base schema
  ✔️ mismatch both
  ✔️ mismatch first allOf
  ✔️ mismatch second allOf
  ✔️ valid
draft-04 allOf allOf with one empty schema
  ✔️ any data is valid
draft-04 allOf allOf with the first empty schema
  ✔️ number is valid
  ✔️ string is invalid
draft-04 allOf allOf with the last empty schema
  ✔️ number is valid
  ✔️ string is invalid
draft-04 allOf allOf with two empty schemas
  ✔️ any data is valid
draft-04 allOf nested allOf, to check validation semantics
  ✔️ anything non-null is invalid
  ✔️ null is valid
draft-04 anyOf anyOf
  ✔️ both anyOf valid
  ✔️ first anyOf valid
  ✔️ neither anyOf valid
  ✔️ second anyOf valid
draft-04 anyOf anyOf complex types
  ✔️ both anyOf valid (complex)
  ✔️ first anyOf valid (complex)
  ✔️ neither anyOf valid (complex)
  ✔️ second anyOf valid (complex)
draft-04 anyOf anyOf with base schema
  ✔️ both anyOf invalid
  ✔️ mismatch base schema
  ✔️ one anyOf valid
draft-04 anyOf anyOf with one empty schema
  ✔️ number is valid
  ✔️ string is valid
draft-04 anyOf nested anyOf, to check validation semantics
  ✔️ anything non-null is invalid
  ✔️ null is valid
draft-04 bignum (optional) float comparison with high precision
  ✔️ comparison works for high numbers
draft-04 bignum (optional) float comparison with high precision on negative numbers
  ✔️ comparison works for very negative numbers
draft-04 bignum (optional) integer
  ✔️ a bignum is an integer
  ✔️ a negative bignum is an integer
draft-04 bignum (optional) maximum integer comparison
  ✔️ comparison works for high numbers
draft-04 bignum (optional) minimum integer comparison
  ✔️ comparison works for very negative numbers
draft-04 bignum (optional) number
  ✔️ a bignum is a number
  ✔️ a negative bignum is a number
draft-04 bignum (optional) string
  ✔️ a bignum is not a string
draft-04 default invalid string value for default
  ✔️ still valid when the invalid default is used
  ✔️ valid when property is specified
draft-04 default invalid type for default
  ✔️ still valid when the invalid default is used
  ✔️ valid when property is specified
draft-04 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-04 definitions validate definition against metaschema
  ✔️ invalid definition schema
  ✔️ valid definition schema
draft-04 dependencies dependencies
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ missing dependency
  ✔️ neither
  ✔️ nondependant
  ✔️ with dependency
draft-04 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-04 dependencies dependent subschema incompatible with root
  ✔️ matches both
  ✔️ matches dependency
  ✔️ matches root
  ✔️ no dependency
draft-04 dependencies multiple dependencies
  ✔️ missing both dependencies
  ✔️ missing dependency
  ✔️ missing other dependency
  ✔️ neither
  ✔️ nondependants
  ✔️ with dependencies
draft-04 dependencies multiple dependencies subschema
  ✔️ no dependency
  ✔️ valid
  ✔️ wrong type
  ✔️ wrong type both
  ✔️ wrong type other
draft-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 ecmascript-regex (optional) ECMA 262 regex $ does not match trailing newline
  ✔️ matches
  ✔️ matches in Python, but not in ECMA 262
draft-04 ecmascript-regex (optional) ECMA 262 regex converts \t to horizontal tab
  ✔️ does not match
  ✔️ matches
draft-04 ecmascript-regex (optional) ECMA 262 regex escapes control codes with \c and lower letter
  ✔️ does not match
  ✔️ matches
draft-04 ecmascript-regex (optional) ECMA 262 regex escapes control codes with \c and upper letter
  ✔️ does not match
  ✔️ matches
draft-04 ecmascript-regex (optional) pattern with ASCII ranges
  ✔️ ascii characters match
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
draft-04 ecmascript-regex (optional) pattern with non-ASCII digits
  ✔️ ascii digits
  ✔️ ascii non-digits
  ✔️ non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)
draft-04 ecmascript-regex (optional) patternProperties with ASCII ranges
  ✔️ ascii characters match
  ✔️ literal unicode character in json string
  ✔️ unicode character in hex format in string
draft-04 ecmascript-regex (optional) patternProperties with non-ASCII digits
  ✔️ ascii digits
  ✔️ ascii non-digits
  ✔️ non-ascii digits (BENGALI DIGIT FOUR, BENGALI DIGIT TWO)
draft-04 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-04 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-04 enum enum with [0] does not match [false]
  ✔️ [0.0] is valid
  ✔️ [0] is valid
  ✔️ [false] is invalid
draft-04 enum enum with [1] does not match [true]
  ✔️ [1.0] is valid
  ✔️ [1] is valid
  ✔️ [true] is invalid
draft-04 enum enum with [false] does not match [0]
  ✔️ [0.0] is invalid
  ✔️ [0] is invalid
  ✔️ [false] is valid
draft-04 enum enum with [true] does not match [1]
  ✔️ [1.0] is invalid
  ✔️ [1] is invalid
  ✔️ [true] is valid
draft-04 enum enum with 0 does not match false
  ✔️ false is invalid
  ✔️ float zero is valid
  ✔️ integer zero is valid
draft-04 enum enum with 1 does not match true
  ✔️ float one is valid
  ✔️ integer one is valid
  ✔️ true is invalid
draft-04 enum enum with escaped characters
  ✔️ another string is invalid
  ✔️ member 1 is valid
  ✔️ member 2 is valid
draft-04 enum enum with false does not match 0
  ✔️ false is valid
  ✔️ float zero is invalid
  ✔️ integer zero is invalid
draft-04 enum enum with true does not match 1
  ✔️ float one is invalid
  ✔️ integer one is invalid
  ✔️ true is valid
draft-04 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-04 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-04 enum heterogeneous enum-with-null validation
  ✔️ null is valid
  ✔️ number is valid
  ✔️ something else is invalid
draft-04 enum nul characters in strings
  ✔️ do not match string lacking nul
  ✔️ match string with nul
draft-04 enum simple enum validation
  ✔️ one of the enum is valid
  ✔️ something else is invalid
draft-04 float-overflow (optional)
  ✖️ all integers are multiples of 0.5, if overflow is handled
draft-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 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-04 items a schema given for items
  ✔️ ignores non-arrays
  ✔️ JavaScript pseudo-array is valid
  ✔️ valid items
  ✔️ wrong type of items
draft-04 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-04 items array-form items with null instance elements
  ✔️ allows null elements
draft-04 items items and subitems
  ✔️ fewer items is valid
  ✔️ too many items
  ✔️ too many sub-items
  ✔️ valid items
  ✔️ wrong item
  ✔️ wrong sub-item
draft-04 items items with null instance elements
  ✔️ allows null elements
draft-04 items nested items
  ✔️ nested array with invalid type
  ✔️ not deep enough
  ✔️ valid nested array
draft-04 maximum exclusiveMaximum validation
  ✔️ below the maximum is still valid
  ✔️ boundary point is invalid
draft-04 maximum maximum validation
  ✔️ above the maximum is invalid
  ✔️ below the maximum is valid
  ✔️ boundary point is valid
  ✔️ ignores non-numbers
draft-04 maximum maximum validation (explicit false exclusivity)
  ✔️ above the maximum is invalid
  ✔️ below the maximum is valid
  ✔️ boundary point is valid
  ✔️ ignores non-numbers
draft-04 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-04 maxItems maxItems validation
  ✔️ exact length is valid
  ✔️ ignores non-arrays
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-04 maxLength maxLength validation
  ✔️ exact length is valid
  ✔️ ignores non-strings
  ✔️ shorter is valid
  ✔️ too long is invalid
  ✔️ two graphemes is long enough
draft-04 maxProperties maxProperties = 0 means the object is empty
  ✔️ no properties is valid
  ✔️ one property is invalid
draft-04 maxProperties maxProperties validation
  ✔️ exact length is valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ shorter is valid
  ✔️ too long is invalid
draft-04 minimum exclusiveMinimum validation
  ✔️ above the minimum is still valid
  ✔️ boundary point is invalid
draft-04 minimum minimum validation
  ✔️ above the minimum is valid
  ✔️ below the minimum is invalid
  ✔️ boundary point is valid
  ✔️ ignores non-numbers
draft-04 minimum minimum validation (explicit false exclusivity)
  ✔️ above the minimum is valid
  ✔️ below the minimum is invalid
  ✔️ boundary point is valid
  ✔️ ignores non-numbers
draft-04 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-04 minItems minItems validation
  ✔️ exact length is valid
  ✔️ ignores non-arrays
  ✔️ longer is valid
  ✔️ too short is invalid
draft-04 minLength minLength validation
  ✔️ exact length is valid
  ✔️ ignores non-strings
  ✔️ longer is valid
  ✔️ one grapheme is not long enough
  ✔️ too short is invalid
draft-04 minProperties minProperties validation
  ✔️ exact length is valid
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ longer is valid
  ✔️ too short is invalid
draft-04 multipleOf by int
  ✔️ ignores non-numbers
  ✔️ int by int
  ✔️ int by int fail
draft-04 multipleOf by number
  ✔️ 35 is not multiple of 1.5
  ✔️ 4.5 is multiple of 1.5
  ✔️ zero is multiple of anything
draft-04 multipleOf by small number
  ✔️ 0.0075 is multiple of 0.0001
  ✔️ 0.00751 is not multiple of 0.0001
draft-04 multipleOf float division = inf
  ✔️ invalid, but naive implementations may raise an overflow error
draft-04 multipleOf small multiple of large integer
  ✔️ any integer is a multiple of 1e-8
draft-04 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-04 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-04 not double negation
  ✔️ any value is valid
draft-04 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-04 not forbidden property
  ✔️ property absent
  ✔️ property present
draft-04 not not
  ✔️ allowed
  ✔️ disallowed
draft-04 not not more complex schema
  ✔️ match
  ✔️ mismatch
  ✔️ other match
draft-04 not not multiple types
  ✔️ mismatch
  ✔️ other mismatch
  ✔️ valid
draft-04 oneOf nested oneOf, to check validation semantics
  ✔️ anything non-null is invalid
  ✔️ null is valid
draft-04 oneOf oneOf
  ✔️ both oneOf valid
  ✔️ first oneOf valid
  ✔️ neither oneOf valid
  ✔️ second oneOf valid
draft-04 oneOf oneOf complex types
  ✔️ both oneOf valid (complex)
  ✔️ first oneOf valid (complex)
  ✔️ neither oneOf valid (complex)
  ✔️ second oneOf valid (complex)
draft-04 oneOf oneOf with base schema
  ✔️ both oneOf valid
  ✔️ mismatch base schema
  ✔️ one oneOf valid
draft-04 oneOf oneOf with empty schema
  ✔️ both valid - invalid
  ✔️ one valid - valid
draft-04 oneOf oneOf with missing optional property
  ✔️ both oneOf valid
  ✔️ first oneOf valid
  ✔️ neither oneOf valid
  ✔️ second oneOf valid
draft-04 oneOf oneOf with required
  ✔️ both invalid - invalid
  ✔️ both valid - invalid
  ✔️ first valid - valid
  ✔️ second valid - valid
draft-04 pattern pattern is not anchored
  ✔️ matches a substring
draft-04 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-04 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-04 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-04 patternProperties patternProperties with null valued instance properties
  ✔️ allows null values
draft-04 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-04 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-04 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-04 properties properties with escaped characters
  ✔️ object with all numbers is valid
  ✔️ object with strings is invalid
draft-04 properties properties with null valued instance properties
  ✔️ allows null values
draft-04 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-04 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-04 ref empty tokens in $ref json-pointer
  ✔️ non-number is invalid
  ✔️ number is valid
draft-04 ref escaped pointer ref
  ✔️ percent invalid
  ✔️ percent valid
  ✔️ slash invalid
  ✔️ slash valid
  ✔️ tilde invalid
  ✔️ tilde valid
draft-04 ref id must be resolved against nearest parent, not just immediate parent
  ✔️ non-number is invalid
  ✔️ number is valid
draft-04 ref id with file URI still resolves pointers - *nix
  ✔️ non-number is invalid
  ✔️ number is valid
draft-04 ref id with file URI still resolves pointers - windows
  ✔️ non-number is invalid
  ✔️ number is valid
draft-04 ref Location-independent identifier
  ✔️ match
  ✔️ mismatch
draft-04 ref Location-independent identifier with base URI change in subschema
  ✔️ match
  ✔️ mismatch
draft-04 ref naive replacement of $ref with its destination is not correct
  ✔️ do not evaluate the $ref inside the enum, matching any string
  ✔️ match the enum exactly
draft-04 ref nested refs
  ✔️ nested ref invalid
  ✔️ nested ref valid
draft-04 ref property named $ref that is not a reference
  ✔️ property named $ref invalid
  ✔️ property named $ref valid
draft-04 ref property named $ref, containing an actual $ref
  ✔️ property named $ref invalid
  ✔️ property named $ref valid
draft-04 ref Recursive references between schemas
  ✔️ invalid tree
  ✔️ valid tree
draft-04 ref ref overrides any sibling keywords
  ✔️ ref invalid
  ✔️ ref valid
  ✔️ ref valid, maxItems ignored
draft-04 ref refs with quote
  ✔️ object with numbers is valid
  ✔️ object with strings is invalid
draft-04 ref relative pointer ref to array
  ✔️ match array
  ✔️ mismatch array
draft-04 ref relative pointer ref to object
  ✔️ match
  ✔️ mismatch
draft-04 ref remote ref, containing refs itself
  ✔️ remote ref invalid
  ✔️ remote ref valid
draft-04 ref root pointer ref
  ✔️ match
  ✔️ mismatch
  ✔️ recursive match
  ✔️ recursive mismatch
draft-04 refRemote base URI change
  ✔️ base URI change ref invalid
  ✔️ base URI change ref valid
draft-04 refRemote base URI change - change folder
  ✔️ number is valid
  ✔️ string is invalid
draft-04 refRemote base URI change - change folder in subschema
  ✔️ number is valid
  ✔️ string is invalid
draft-04 refRemote fragment within remote ref
  ✔️ remote fragment invalid
  ✔️ remote fragment valid
draft-04 refRemote Location-independent identifier in remote ref
  ✔️ integer is valid
  ✔️ string is invalid
draft-04 refRemote ref within remote ref
  ✔️ ref within ref invalid
  ✔️ ref within ref valid
draft-04 refRemote remote ref
  ✔️ remote ref invalid
  ✔️ remote ref valid
draft-04 refRemote root ref in remote ref
  ✔️ null is valid
  ✔️ object is invalid
  ✔️ string is valid
draft-04 required required default validation
  ✔️ not required by default
draft-04 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-04 required required validation
  ✔️ ignores arrays
  ✔️ ignores other non-objects
  ✔️ ignores strings
  ✔️ non-present required property is invalid
  ✔️ present required property is valid
draft-04 required required with escaped characters
  ✔️ object with all properties present is valid
  ✔️ object with some properties missing is invalid
draft-04 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-04 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-04 type integer type matches integers
  ✔️ a boolean is not an integer
  ✔️ a float is not 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-04 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-04 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-04 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
  ✔️ 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-04 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-04 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-04 type type as array with one item
  ✔️ number is invalid
  ✔️ string is valid
draft-04 type type: array or object
  ✔️ array is valid
  ✔️ null is invalid
  ✔️ number is invalid
  ✔️ object is valid
  ✔️ string is invalid
draft-04 type type: array, object or null
  ✔️ array is valid
  ✔️ null is valid
  ✔️ number is invalid
  ✔️ object is valid
  ✔️ string is invalid
draft-04 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-04 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-04 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-04 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-04 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-04 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-04 zeroTerminatedFloats (optional)
  ✖️ some languages do not distinguish between different types of numeric value