Fix format checking failed when the input type is unexpected (#283)
* Fix ignoring format test cases
* Import official format test cases
* Fix format checks for unexpected input type
diff --git a/format_checkers.go b/format_checkers.go
index 873ffc7..c69c4fa 100644
--- a/format_checkers.go
+++ b/format_checkers.go
@@ -13,7 +13,7 @@
type (
// FormatChecker is the interface all formatters added to FormatCheckerChain must implement
FormatChecker interface {
- // IsFormat checks if input has the correct format and type
+ // IsFormat checks if input has the correct format
IsFormat(input interface{}) bool
}
@@ -191,7 +191,7 @@
func (f EmailFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
_, err := mail.ParseAddress(asString)
@@ -202,7 +202,7 @@
func (f IPV4FormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
// Credit: https://github.com/asaskevich/govalidator
@@ -214,7 +214,7 @@
func (f IPV6FormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
// Credit: https://github.com/asaskevich/govalidator
@@ -226,7 +226,7 @@
func (f DateTimeFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
formats := []string{
@@ -250,7 +250,7 @@
func (f DateFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
_, err := time.Parse("2006-01-02", asString)
return err == nil
@@ -260,7 +260,7 @@
func (f TimeFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
if _, err := time.Parse("15:04:05Z07:00", asString); err == nil {
@@ -275,7 +275,7 @@
func (f URIFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
u, err := url.Parse(asString)
@@ -291,7 +291,7 @@
func (f URIReferenceFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
_, err := url.Parse(asString)
@@ -302,7 +302,7 @@
func (f URITemplateFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
u, err := url.Parse(asString)
@@ -317,7 +317,7 @@
func (f HostnameFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
return rxHostname.MatchString(asString) && len(asString) < 256
@@ -327,7 +327,7 @@
func (f UUIDFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
return rxUUID.MatchString(asString)
@@ -337,7 +337,7 @@
func (f RegexFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
if asString == "" {
@@ -351,7 +351,7 @@
func (f JSONPointerFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
return rxJSONPointer.MatchString(asString)
@@ -361,7 +361,7 @@
func (f RelativeJSONPointerFormatChecker) IsFormat(input interface{}) bool {
asString, ok := input.(string)
if !ok {
- return false
+ return true
}
return rxRelJSONPointer.MatchString(asString)
diff --git a/jsonschema_test.go b/jsonschema_test.go
index 75a666f..45908cd 100644
--- a/jsonschema_test.go
+++ b/jsonschema_test.go
@@ -163,6 +163,17 @@
for _, dir := range dirs {
if testDirectories.MatchString(dir.Name()) {
+ formatJSONFile := filepath.Join(wd, dir.Name(), "optional", "format.json")
+ if _, err = os.Stat(formatJSONFile); err == nil {
+ err = executeTests(t, formatJSONFile)
+ } else {
+ err = nil
+ }
+
+ if err != nil {
+ t.Errorf("Error (%s)\n", err.Error())
+ }
+
formatsDirectory := filepath.Join(wd, dir.Name(), "optional", "format")
err = filepath.Walk(formatsDirectory, func(path string, fileInfo os.FileInfo, err error) error {
if fileInfo == nil || !strings.HasSuffix(fileInfo.Name(), ".json") {
diff --git a/testdata/draft4/format.json b/testdata/draft4/format.json
new file mode 100644
index 0000000..54d8dad
--- /dev/null
+++ b/testdata/draft4/format.json
@@ -0,0 +1,218 @@
+[
+ {
+ "description": "validation of e-mail addresses",
+ "schema": {"format": "email"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IP addresses",
+ "schema": {"format": "ipv4"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IPv6 addresses",
+ "schema": {"format": "ipv6"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of hostnames",
+ "schema": {"format": "hostname"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of date-time strings",
+ "schema": {"format": "date-time"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URIs",
+ "schema": {"format": "uri"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/testdata/draft6/format.json b/testdata/draft6/format.json
new file mode 100644
index 0000000..87b75eb
--- /dev/null
+++ b/testdata/draft6/format.json
@@ -0,0 +1,326 @@
+[
+ {
+ "description": "validation of e-mail addresses",
+ "schema": {"format": "email"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IP addresses",
+ "schema": {"format": "ipv4"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IPv6 addresses",
+ "schema": {"format": "ipv6"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of hostnames",
+ "schema": {"format": "hostname"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of date-time strings",
+ "schema": {"format": "date-time"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of JSON pointers",
+ "schema": {"format": "json-pointer"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URIs",
+ "schema": {"format": "uri"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URI references",
+ "schema": {"format": "uri-reference"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URI templates",
+ "schema": {"format": "uri-template"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ }
+]
\ No newline at end of file
diff --git a/testdata/draft7/format.json b/testdata/draft7/format.json
new file mode 100644
index 0000000..49cfac1
--- /dev/null
+++ b/testdata/draft7/format.json
@@ -0,0 +1,614 @@
+[
+ {
+ "description": "validation of e-mail addresses",
+ "schema": {"format": "email"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IDN e-mail addresses",
+ "schema": {"format": "idn-email"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of regexes",
+ "schema": {"format": "regex"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IP addresses",
+ "schema": {"format": "ipv4"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IPv6 addresses",
+ "schema": {"format": "ipv6"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IDN hostnames",
+ "schema": {"format": "idn-hostname"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of hostnames",
+ "schema": {"format": "hostname"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of date strings",
+ "schema": {"format": "date"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of date-time strings",
+ "schema": {"format": "date-time"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of time strings",
+ "schema": {"format": "time"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of JSON pointers",
+ "schema": {"format": "json-pointer"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of relative JSON pointers",
+ "schema": {"format": "relative-json-pointer"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IRIs",
+ "schema": {"format": "iri"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of IRI references",
+ "schema": {"format": "iri-reference"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URIs",
+ "schema": {"format": "uri"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URI references",
+ "schema": {"format": "uri-reference"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ },
+ {
+ "description": "validation of URI templates",
+ "schema": {"format": "uri-template"},
+ "tests": [
+ {
+ "description": "ignores integers",
+ "data": 12,
+ "valid": true
+ },
+ {
+ "description": "ignores floats",
+ "data": 13.7,
+ "valid": true
+ },
+ {
+ "description": "ignores objects",
+ "data": {},
+ "valid": true
+ },
+ {
+ "description": "ignores arrays",
+ "data": [],
+ "valid": true
+ },
+ {
+ "description": "ignores booleans",
+ "data": false,
+ "valid": true
+ },
+ {
+ "description": "ignores null",
+ "data": null,
+ "valid": true
+ }
+ ]
+ }
+]
\ No newline at end of file