github.com/kaptinlin/jsonschema@v0.4.6/testdata/JSON-Schema-Test-Suite/tests/draft4/oneOf.json (about)

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