1[ 2 { 3 "description": "anyOf", 4 "schema": { 5 "anyOf": [ 6 { 7 "type": "integer" 8 }, 9 { 10 "minimum": 2 11 } 12 ] 13 }, 14 "tests": [ 15 { 16 "description": "first anyOf valid", 17 "data": 1, 18 "valid": true 19 }, 20 { 21 "description": "second anyOf valid", 22 "data": 2.5, 23 "valid": true 24 }, 25 { 26 "description": "both anyOf valid", 27 "data": 3, 28 "valid": true 29 }, 30 { 31 "description": "neither anyOf valid", 32 "data": 1.5, 33 "valid": false 34 } 35 ] 36 }, 37 { 38 "description": "anyOf with base schema", 39 "schema": { 40 "type": "string", 41 "anyOf" : [ 42 { 43 "maxLength": 2 44 }, 45 { 46 "minLength": 4 47 } 48 ] 49 }, 50 "tests": [ 51 { 52 "description": "mismatch base schema", 53 "data": 3, 54 "valid": false 55 }, 56 { 57 "description": "one anyOf valid", 58 "data": "foobar", 59 "valid": true 60 }, 61 { 62 "description": "both anyOf invalid", 63 "data": "foo", 64 "valid": false 65 } 66 ] 67 }, 68 { 69 "description": "anyOf with boolean schemas, all true", 70 "schema": {"anyOf": [true, true]}, 71 "tests": [ 72 { 73 "description": "any value is valid", 74 "data": "foo", 75 "valid": true 76 } 77 ] 78 }, 79 { 80 "description": "anyOf with boolean schemas, some true", 81 "schema": {"anyOf": [true, false]}, 82 "tests": [ 83 { 84 "description": "any value is valid", 85 "data": "foo", 86 "valid": true 87 } 88 ] 89 }, 90 { 91 "description": "anyOf with boolean schemas, all false", 92 "schema": {"anyOf": [false, false]}, 93 "tests": [ 94 { 95 "description": "any value is invalid", 96 "data": "foo", 97 "valid": false 98 } 99 ] 100 }, 101 { 102 "description": "anyOf complex types", 103 "schema": { 104 "anyOf": [ 105 { 106 "properties": { 107 "bar": {"type": "integer"} 108 }, 109 "required": ["bar"] 110 }, 111 { 112 "properties": { 113 "foo": {"type": "string"} 114 }, 115 "required": ["foo"] 116 } 117 ] 118 }, 119 "tests": [ 120 { 121 "description": "first anyOf valid (complex)", 122 "data": {"bar": 2}, 123 "valid": true 124 }, 125 { 126 "description": "second anyOf valid (complex)", 127 "data": {"foo": "baz"}, 128 "valid": true 129 }, 130 { 131 "description": "both anyOf valid (complex)", 132 "data": {"foo": "baz", "bar": 2}, 133 "valid": true 134 }, 135 { 136 "description": "neither anyOf valid (complex)", 137 "data": {"foo": 2, "bar": "quux"}, 138 "valid": false 139 } 140 ] 141 }, 142 { 143 "description": "anyOf with one empty schema", 144 "schema": { 145 "anyOf": [ 146 { "type": "number" }, 147 {} 148 ] 149 }, 150 "tests": [ 151 { 152 "description": "string is valid", 153 "data": "foo", 154 "valid": true 155 }, 156 { 157 "description": "number is valid", 158 "data": 123, 159 "valid": true 160 } 161 ] 162 }, 163 { 164 "description": "nested anyOf, to check validation semantics", 165 "schema": { 166 "anyOf": [ 167 { 168 "anyOf": [ 169 { 170 "type": "null" 171 } 172 ] 173 } 174 ] 175 }, 176 "tests": [ 177 { 178 "description": "null is valid", 179 "data": null, 180 "valid": true 181 }, 182 { 183 "description": "anything non-null is invalid", 184 "data": 123, 185 "valid": false 186 } 187 ] 188 } 189] 190