Skip to content

Home / File Formats / .cahtt Format (Native)

.cahtt Format (Native)

The .cahtt file is ProTest's native model format. It is a JSON file that stores the complete test model including parameters, constraints, seeds, sub-models, generation settings, and optionally saved results.

Full Example

{
  "Version": 1,
  "GlobalOrder": 2,
  "Randomize": true,
  "RandomSeed": 0,
  "CaseSensitive": false,
  "UseSipo": true,
  "SipoBase": 10000,
  "SipoTempInitial": 5.0,
  "SipoTempFinal": 0.1,
  "ConstraintText": "IF [OS] = \"Windows\" THEN [Browser] <> \"Safari\";",
  "Parameters": [
    {
      "Name": "OS",
      "Values": [
        { "Name": "Windows", "Weight": 1, "IsNegative": false },
        { "Name": "Linux", "Weight": 1, "IsNegative": false },
        { "Name": "Mac", "Weight": 1, "IsNegative": false }
      ]
    },
    {
      "Name": "Browser",
      "Values": [
        { "Name": "Chrome", "Weight": 2, "IsNegative": false },
        { "Name": "Firefox", "Weight": 1, "IsNegative": false },
        { "Name": "Safari", "Weight": 1, "IsNegative": false }
      ]
    }
  ],
  "SubModels": [
    {
      "Name": "BrowserGroup",
      "Order": 3,
      "MemberParameterNames": ["OS", "Browser"]
    }
  ],
  "Seeds": [
    { "OS": "Windows", "Browser": "Chrome" }
  ],
  "SavedResult": null
}

Field Reference

Top-Level Settings

Field Type Default Description
Version integer 1 File format version
GlobalOrder integer 2 Default interaction strength
Randomize boolean true Enable randomized generation
RandomSeed integer 0 Specific random seed (0 = auto)
CaseSensitive boolean false Case-sensitive matching
UseSipo boolean false Use SIPO engine instead of PICT
SipoBase integer 10000 SIPO iteration count
SipoTempInitial float 5.0 SIPO initial temperature
SipoTempFinal float 0.1 SIPO final temperature
ConstraintText string "" PICT constraint syntax

Parameters

Each parameter has:

Field Type Description
Name string Parameter name (must be unique)
Values array List of parameter values

Each value has:

Field Type Default Description
Name string Value name
Weight integer 1 Generation weight (higher = more frequent)
IsNegative boolean false Negative test value (~ prefix)

SubModels

Field Type Description
Name string Sub-model name
Order integer Interaction strength for this group
MemberParameterNames array Parameter names in this sub-model

Seeds

Each seed is an object mapping parameter names to values. Omitted parameters (or null values) represent partial seeds.

SavedResult

When a model is saved after generation, the SavedResult field contains the generated test cases. This is null if no results have been generated.