# Program Testing A /program/ is a top-level package (either marked as with `@program="true"`, or with a root `rater` node). This system provides a means of writing and running test cases. ## Test Case Format Test cases must be provided in a YAML file. Each test case has a description (`description`), input data (`data`), and expected results (`expect`). ```yaml - description: >- Example test case data: state: [ STATE_AK ] prem_total: [ 9000 ] effective_date: 12/05/2017 expect: premTaxStamping: [ 1234 ] premTaxSurplus: [ 1010 ] ``` A file may contain any number of test cases. All identifiers in `data` and `expect` must be valid inputs (params) and outputs (classifications and calculations) respectively. Inputs are passed as-is to the program, and outputs are recursively (deeply) compared.