Testing
RegelRecht uses multiple testing strategies to ensure correctness.
BDD Tests (Behavior-Driven Development)
The primary testing approach uses Gherkin feature files executed by cucumber-rs.
Feature Files
Located in features/, these describe expected law behavior:
gherkin
Feature: Kinderbijslag
Scenario: Parent with two children receives kinderbijslag
Given the law "wet_kinderbijslag"
And input "aantal_kinderen" is 2
When the law is executed
Then output "heeft_recht" should be trueRunning BDD Tests
bash
just bddDeriving Tests from Legislative Intent
Test scenarios are derived from the Memorie van Toelichting (MvT), the explanatory memorandum that accompanies Dutch legislation. The MvT contains examples and reasoning from the legislature that serve as ground truth for expected behavior.
Unit Tests
Rust unit tests cover the engine internals:
bash
just testSchema Validation
All law YAML files are validated against the JSON schema:
bash
just validate # Validate all
just validate path/to/law.yaml # Validate specific filePipeline Tests
bash
just pipeline-test # Unit tests (no Docker)
just pipeline-integration-test # Integration tests (requires Docker)Benchmarks
Performance benchmarks using Criterion:
bash
just bench # Run all benchmarks
just bench-save baseline-name # Save a baseline
just bench-compare baseline-name # Compare against baseline