Skip to content

Source status: no status is stated in the source document, so none is assigned here. Do not treat this page as a finalized specification. The normative rules are in the Technical Specification.

Testing System

The language will provide native support for automated testing.

1. Unit Testing

  • Individual functions must be testable in isolation.
  • Tests must support normal, boundary, and invalid inputs.
  • Function contracts should generate testable conditions where possible.

2. Integration Testing

  • Modules must be testable together.
  • Interfaces and dependency assumptions must be checked.
  • External services should support controlled test environments.

3. Property-Based Testing

  • Developers can define properties that must hold across many generated inputs.
  • The testing system should generate inputs automatically.
  • When a failure occurs, the system should attempt to identify a smaller input that reproduces it.

4. Boundary Testing

The testing system should automatically examine: - Minimum and maximum values. - Empty and missing values. - Invalid data. - Numeric overflow and precision boundaries. - Unexpected execution conditions.

5. Regression Testing

  • Previously passing tests must be preserved.
  • Changes must trigger relevant regression tests.
  • A previously passing test that now fails must be clearly reported.

6. Test Integrity

  • Tests must be distinguishable from formal proofs.
  • Passing tests must not automatically establish correctness.
  • Test results must identify the exact source version tested.
  • AI agents must not be allowed to silently weaken or remove tests to make an implementation pass.

Design Goal

Testing should be integrated into the development process so AI agents can continuously check their implementations against expected behavior.


Source and authority

This page migrates TESTING.md in full. It is an explanatory / implementation document, not the normative specification. Where it simplifies a rule, the Technical Specification governs. The original file is preserved in source-original/LANG/.