{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/vtesttree-yaml/versions/2.4.0.json",
  "title": "vtesttree.yaml",
  "x-lintel": {
    "source": "https://www.schemastore.org/vtesttree-schema-v2.4.0.json",
    "sourceSha256": "fe2881f6b607c9a2237a97b6a7d8ec9af55099466d6874b6d07c30766c9e0c6e",
    "fileMatch": [
      "*.vtesttree.yaml",
      "*.vtesttree.yml",
      "*.vtesttree.json"
    ],
    "parsers": [
      "json",
      "yaml"
    ]
  },
  "type": "object",
  "$ref": "#/$defs/0ea16/full",
  "$defs": {
    "f0fcf": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Version",
        "description": "Json schema version for the vtesttree.yaml file. Acceptance criteria: equal major version, less/equal minor and patch version.",
        "const": "2.4.0",
        "type": "string",
        "examples": [
          "2.4.0"
        ]
      }
    },
    "d6776": {
      "full": {
        "description": "Element of a test tree or test fixture.",
        "oneOf": [
          {
            "$ref": "#/definitions/6ce30/full"
          },
          {
            "$ref": "#/definitions/a3b17/full"
          },
          {
            "$ref": "#/definitions/0e9b4/full"
          },
          {
            "$ref": "#/definitions/61082/full"
          },
          {
            "$ref": "#/definitions/e98fd/full"
          },
          {
            "$ref": "#/definitions/a828f/full"
          },
          {
            "$ref": "#/definitions/ca40f/full"
          },
          {
            "$ref": "#/definitions/c1632/full"
          },
          {
            "$ref": "#/definitions/e3001/full"
          },
          {
            "$ref": "#/definitions/45a84/full"
          },
          {
            "$ref": "#/definitions/43cc1/full"
          },
          {
            "$ref": "#/definitions/7f0f0/full"
          },
          {
            "$ref": "#/definitions/f83f8/full"
          }
        ]
      }
    },
    "a3b17": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "additionalProperties": false,
        "description": "Definition of calls to a CAPL test case with a list of parameter combinations.",
        "required": [
          "capl-test-case-list"
        ],
        "title": "CAPL test case list",
        "type": "object",
        "not": {
          "anyOf": [
            {
              "required": [
                "param-values",
                "param-vectors"
              ]
            },
            {
              "required": [
                "combinatorics",
                "param-vectors"
              ]
            }
          ]
        },
        "oneOf": [
          {
            "required": [
              "param-values"
            ]
          },
          {
            "required": [
              "param-vectors"
            ]
          }
        ],
        "properties": {
          "capl-test-case-list": {
            "type": "string",
            "description": "Function name of the CAPL test case."
          },
          "id": {
            "type": "string",
            "description": "Identifier used for all created CAPL test case calls."
          },
          "title": {
            "type": "string",
            "description": "Title of the CAPL test case calls."
          },
          "test-case-title": {
            "type": "string",
            "description": "An optional title for individual test cases of the list. Allows for field codes using {FieldCode} syntax."
          },
          "param-values": {
            "$ref": "#/definitions/05c18/full"
          },
          "combinatorics": {
            "$ref": "#/definitions/95474/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          },
          "param-vectors": {
            "$ref": "#/definitions/fe80e/full"
          }
        }
      }
    },
    "e98fd": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": ".NET test case",
        "description": "Definition of a call to a .NET test case.",
        "type": "object",
        "required": [
          "dotnet-test-case"
        ],
        "additionalProperties": false,
        "properties": {
          "dotnet-test-case": {
            "type": "string",
            "description": "Function name of the .NET test case."
          },
          "id": {
            "type": "string",
            "description": "Identifier of the .NET test case."
          },
          "title": {
            "type": "string",
            "description": "Title of the .NET test case."
          },
          "description": {
            "type": "string",
            "description": "Description of the .NET test case."
          },
          "params": {
            "$ref": "#/definitions/942bd/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        }
      }
    },
    "a828f": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": ".NET test case list",
        "description": "Definition of calls to a .NET test case with a list of parameter combinations.",
        "type": "object",
        "required": [
          "dotnet-test-case-list"
        ],
        "additionalProperties": false,
        "properties": {
          "dotnet-test-case-list": {
            "type": "string",
            "description": "Function name of the .NET test case."
          },
          "id": {
            "type": "string",
            "description": "Identifier used for all created .NET test case calls."
          },
          "title": {
            "type": "string",
            "description": "Title of the .NET test case calls."
          },
          "test-case-title": {
            "type": "string",
            "description": "An optional title for individual test cases of the list. Allows for field codes using {FieldCode} syntax."
          },
          "param-values": {
            "$ref": "#/definitions/05c18/full"
          },
          "combinatorics": {
            "$ref": "#/definitions/95474/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          },
          "param-vectors": {
            "$ref": "#/definitions/fe80e/full"
          }
        },
        "oneOf": [
          {
            "required": [
              "param-values"
            ]
          },
          {
            "required": [
              "param-vectors"
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "param-values",
                "param-vectors"
              ]
            },
            {
              "required": [
                "combinatorics",
                "param-vectors"
              ]
            }
          ]
        }
      }
    },
    "ca40f": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": ".NET test sequence",
        "description": "Definition of a call to a .NET test sequence.",
        "type": "object",
        "required": [
          "dotnet-test-sequence"
        ],
        "additionalProperties": false,
        "properties": {
          "dotnet-test-sequence": {
            "type": "string",
            "description": "Function name of the .NET test sequence."
          },
          "title": {
            "type": "string",
            "description": "Title of the .NET test sequence."
          },
          "params": {
            "$ref": "#/definitions/942bd/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        }
      }
    },
    "c1632": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": ".NET test sequence list",
        "description": "Definition of calls to a .NET test sequence with a list of parameter combinations.",
        "type": "object",
        "required": [
          "dotnet-test-sequence-list"
        ],
        "additionalProperties": false,
        "properties": {
          "dotnet-test-sequence-list": {
            "type": "string",
            "description": "Function name of the .NET test sequence."
          },
          "title": {
            "type": "string",
            "description": "Title of the .NET test sequence calls."
          },
          "test-sequence-title": {
            "type": "string",
            "description": "An optional title for individual test sequences of the list. Allows for field codes using {FieldCode} syntax."
          },
          "param-values": {
            "$ref": "#/definitions/05c18/full"
          },
          "combinatorics": {
            "$ref": "#/definitions/95474/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          },
          "param-vectors": {
            "$ref": "#/definitions/fe80e/full"
          }
        },
        "oneOf": [
          {
            "required": [
              "param-values"
            ]
          },
          {
            "required": [
              "param-vectors"
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "param-values",
                "param-vectors"
              ]
            },
            {
              "required": [
                "combinatorics",
                "param-vectors"
              ]
            }
          ]
        }
      }
    },
    "e3001": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Python test case",
        "description": "Definition of a call to a Python test case.",
        "type": "object",
        "required": [
          "python-test-case"
        ],
        "additionalProperties": false,
        "properties": {
          "python-test-case": {
            "type": "string",
            "description": "Function name of the Python test case."
          },
          "id": {
            "type": "string",
            "description": "Identifier of the Python test case."
          },
          "title": {
            "type": "string",
            "description": "Title of the Python test case."
          },
          "description": {
            "type": "string",
            "description": "Description of the Python test case."
          },
          "params": {
            "$ref": "#/definitions/942bd/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        }
      }
    },
    "f83f8": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Test fixture",
        "description": "Definition of a test fixture containing other test fixtures, test cases and test sequences.",
        "type": "object",
        "required": [
          "test-fixture"
        ],
        "additionalProperties": false,
        "properties": {
          "test-fixture": {
            "type": "string",
            "description": "Name of the test fixture."
          },
          "description": {
            "type": "string",
            "description": "Description of the test fixture."
          },
          "elements": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/d6776/full"
            }
          },
          "capl-preparation": {
            "$ref": "#/definitions/6b2dc/full"
          },
          "capl-completion": {
            "$ref": "#/definitions/54627/full"
          },
          "dotnet-preparation": {
            "$ref": "#/definitions/57796/full"
          },
          "dotnet-completion": {
            "$ref": "#/definitions/ffb07/full"
          },
          "python-preparation": {
            "$ref": "#/definitions/84433/full"
          },
          "python-completion": {
            "$ref": "#/definitions/96fd7/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        },
        "dependencies": {
          "capl-completion": {
            "allOf": [
              {
                "not": {
                  "required": [
                    "dotnet-completion"
                  ]
                }
              },
              {
                "not": {
                  "required": [
                    "python-completion"
                  ]
                }
              }
            ]
          },
          "dotnet-completion": {
            "allOf": [
              {
                "not": {
                  "required": [
                    "capl-completion"
                  ]
                }
              },
              {
                "not": {
                  "required": [
                    "python-completion"
                  ]
                }
              }
            ]
          },
          "python-completion": {
            "allOf": [
              {
                "not": {
                  "required": [
                    "dotnet-completion"
                  ]
                }
              },
              {
                "not": {
                  "required": [
                    "capl-completion"
                  ]
                }
              }
            ]
          },
          "capl-preparation": {
            "allOf": [
              {
                "not": {
                  "required": [
                    "dotnet-preparation"
                  ]
                }
              },
              {
                "not": {
                  "required": [
                    "python-preparation"
                  ]
                }
              }
            ]
          },
          "dotnet-preparation": {
            "allOf": [
              {
                "not": {
                  "required": [
                    "capl-preparation"
                  ]
                }
              },
              {
                "not": {
                  "required": [
                    "python-preparation"
                  ]
                }
              }
            ]
          },
          "python-preparation": {
            "allOf": [
              {
                "not": {
                  "required": [
                    "dotnet-preparation"
                  ]
                }
              },
              {
                "not": {
                  "required": [
                    "capl-preparation"
                  ]
                }
              }
            ]
          }
        }
      }
    },
    "fe80e": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "array",
        "title": "parameter vectors list",
        "description": "A list of vectors of parameter values passed to the called function. Each vector in the list contains the parameter values for a single call. Mutually exclusive with param-values and combinatorics.",
        "items": {
          "$ref": "#/definitions/942bd/full"
        },
        "minItems": 1
      }
    },
    "ffb07": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": ".NET completion",
        "type": "string",
        "description": "Function name of the .NET completion."
      }
    },
    "ccf9c": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "parameter",
        "description": "Parameter value for a test case or test sequence.",
        "anyOf": [
          {
            "title": "Numeric Value",
            "type": "number"
          },
          {
            "title": "String Value",
            "type": "string"
          }
        ]
      }
    },
    "0ea16": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "vtesttree.yaml",
        "description": "Vector test execution tree description",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "version"
        ],
        "properties": {
          "version": {
            "$ref": "#/definitions/f0fcf/full"
          },
          "test-tree": {
            "$ref": "#/definitions/6ac3b/full"
          }
        }
      }
    },
    "6ac3b": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Test tree",
        "description": "Definition of a test tree consisting of test fixtures, test cases and test sequences.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/d6776/full"
        }
      }
    },
    "6ce30": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAPL test case",
        "description": "Definition of a call to a CAPL test case.",
        "type": "object",
        "required": [
          "capl-test-case"
        ],
        "additionalProperties": false,
        "properties": {
          "capl-test-case": {
            "type": "string",
            "description": "Function name of the CAPL test case."
          },
          "id": {
            "type": "string",
            "description": "Identifier of the CAPL test case."
          },
          "title": {
            "type": "string",
            "description": "Title of the CAPL test case."
          },
          "description": {
            "type": "string",
            "description": "Description of the CAPL test case."
          },
          "params": {
            "$ref": "#/definitions/942bd/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        }
      }
    },
    "0e9b4": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAPL test sequence",
        "description": "Definition of a call to a CAPL test sequence.",
        "type": "object",
        "required": [
          "capl-test-sequence"
        ],
        "additionalProperties": false,
        "properties": {
          "capl-test-sequence": {
            "type": "string",
            "description": "Function name of the CAPL test sequence."
          },
          "title": {
            "type": "string",
            "description": "Title of the CAPL test sequence."
          },
          "params": {
            "$ref": "#/definitions/942bd/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        }
      }
    },
    "61082": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAPL test sequence list",
        "description": "Definition of calls to a CAPL test sequence with a list of parameter combinations.",
        "type": "object",
        "required": [
          "capl-test-sequence-list"
        ],
        "additionalProperties": false,
        "properties": {
          "capl-test-sequence-list": {
            "type": "string",
            "description": "Function name of the CAPL test sequence."
          },
          "title": {
            "type": "string",
            "description": "Title of the CAPL test sequence calls."
          },
          "test-sequence-title": {
            "type": "string",
            "description": "An optional title for individual test sequences of the list. Allows for field codes using {FieldCode} syntax."
          },
          "param-values": {
            "$ref": "#/definitions/05c18/full"
          },
          "combinatorics": {
            "$ref": "#/definitions/95474/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          },
          "param-vectors": {
            "$ref": "#/definitions/fe80e/full"
          }
        },
        "oneOf": [
          {
            "required": [
              "param-values"
            ]
          },
          {
            "required": [
              "param-vectors"
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "param-values",
                "param-vectors"
              ]
            },
            {
              "required": [
                "combinatorics",
                "param-vectors"
              ]
            }
          ]
        }
      }
    },
    "45a84": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Python test case list",
        "description": "Definition of calls to a Python test case with a list of parameter combinations.",
        "type": "object",
        "required": [
          "python-test-case-list"
        ],
        "additionalProperties": false,
        "properties": {
          "python-test-case-list": {
            "type": "string",
            "description": "Function name of the Python test case."
          },
          "id": {
            "type": "string",
            "description": "Identifier used for all created Python test case calls."
          },
          "title": {
            "type": "string",
            "description": "Title of the Python test case calls."
          },
          "test-case-title": {
            "type": "string",
            "description": "An optional title for individual test cases of the list. Allows for field codes using {FieldCode} syntax."
          },
          "param-values": {
            "$ref": "#/definitions/05c18/full"
          },
          "combinatorics": {
            "$ref": "#/definitions/95474/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          },
          "param-vectors": {
            "$ref": "#/definitions/fe80e/full"
          }
        },
        "oneOf": [
          {
            "required": [
              "param-values"
            ]
          },
          {
            "required": [
              "param-vectors"
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "param-values",
                "param-vectors"
              ]
            },
            {
              "required": [
                "combinatorics",
                "param-vectors"
              ]
            }
          ]
        }
      }
    },
    "43cc1": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Python test sequence",
        "description": "Definition of a call to a Python test sequence.",
        "type": "object",
        "required": [
          "python-test-sequence"
        ],
        "additionalProperties": false,
        "properties": {
          "python-test-sequence": {
            "type": "string",
            "description": "Function name of the Python test sequence."
          },
          "title": {
            "type": "string",
            "description": "Title of the Python test sequence."
          },
          "params": {
            "$ref": "#/definitions/942bd/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          }
        }
      }
    },
    "7f0f0": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Python test sequence list",
        "description": "Definition of calls to a Python test sequence with a list of parameter combinations.",
        "type": "object",
        "required": [
          "python-test-sequence-list"
        ],
        "additionalProperties": false,
        "properties": {
          "python-test-sequence-list": {
            "type": "string",
            "description": "Function name of the Python test sequence."
          },
          "title": {
            "type": "string",
            "description": "Title of the Python test sequence calls."
          },
          "test-sequence-title": {
            "type": "string",
            "description": "An optional title for individual test sequences of the list. Allows for field codes using {FieldCode} syntax."
          },
          "param-values": {
            "$ref": "#/definitions/05c18/full"
          },
          "combinatorics": {
            "$ref": "#/definitions/95474/full"
          },
          "variant-dependencies": {
            "$ref": "#/definitions/933e9/full"
          },
          "param-vectors": {
            "$ref": "#/definitions/fe80e/full"
          }
        },
        "oneOf": [
          {
            "required": [
              "param-values"
            ]
          },
          {
            "required": [
              "param-vectors"
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "param-values",
                "param-vectors"
              ]
            },
            {
              "required": [
                "combinatorics",
                "param-vectors"
              ]
            }
          ]
        }
      }
    },
    "942bd": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "parameter list",
        "description": "List of parameter values for a test case or test sequence.",
        "type": "array",
        "items": {
          "$ref": "#/definitions/ccf9c/full"
        }
      }
    },
    "933e9": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "variant dependencies",
        "description": "A condition based on variant property values. If the condition is not fulfilled, the node will not be added to the test tree. The variant property must be defined in the vtestunit.yaml. The only allowed operators are !=, == and ||.",
        "type": "string"
      }
    },
    "05c18": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "array",
        "title": "parameter values list",
        "description": "List of lists of parameter values for a test case or test sequence. Each list specifies values for one parameter. Mutually exclusive with param-vectors.",
        "items": {
          "$ref": "#/definitions/942bd/full"
        },
        "minItems": 1
      }
    },
    "95474": {
      "full": {
        "description": "The style of combinatorics to be used for parameter generation. The default value is sequential.",
        "type": "string",
        "oneOf": [
          {
            "const": "sequential"
          },
          {
            "const": "pairwise"
          },
          {
            "const": "combinatorial"
          }
        ]
      }
    },
    "6b2dc": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAPL preparation",
        "type": "string",
        "description": "Function name of the CAPL preparation."
      }
    },
    "54627": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "CAPL completion",
        "type": "string",
        "description": "Function name of the CAPL completion."
      }
    },
    "57796": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": ".NET preparation",
        "type": "string",
        "description": "Function name of the .NET preparation."
      }
    },
    "84433": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Python preparation",
        "type": "string",
        "description": "Function name of the Python preparation."
      }
    },
    "96fd7": {
      "full": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "title": "Python completion",
        "type": "string",
        "description": "Function name of the Python completion."
      }
    }
  }
}
