Test Suite Guide
The CCL Test Suite provides 375 assertions across 180 tests for validating CCL implementations.
Test Format
Section titled “Test Format”Implementers use the flat format in generated_tests/ - one test per validation function with typed fields for filtering.
Test Structure
Section titled “Test Structure”Each test includes:
validation: Function being tested (parse,build_hierarchy, etc.)functions: Array of required CCL functionsfeatures: Array of optional language featuresbehaviors: Array of implementation behavior choicesexpected: Expected result withcountfield for assertion verificationinput: CCL text to parse
Test Metadata
Section titled “Test Metadata”Functions - CCL functions by category:
- Core:
parse,build_hierarchy - Typed Access:
get_string,get_int,get_bool,get_float,get_list - Processing:
filter,compose,expand_dotted - Formatting:
canonical_format
Features - Optional language features:
comments,experimental_dotted_keys,empty_keys,multiline,unicode,whitespace
Behaviors - Implementation choices (mutually exclusive):
crlf_preserve_literalvscrlf_normalize_to_lfboolean_strictvsboolean_lenientlist_coercion_enabledvslist_coercion_disabled
Progressive Implementation
Section titled “Progressive Implementation”Phase 1: Core Parsing
Section titled “Phase 1: Core Parsing”Validation: parse
Filter tests:
tests.filter(t => t.validation === 'parse')Phase 2: Object Construction
Section titled “Phase 2: Object Construction”Validation: build_hierarchy
Filter tests:
tests.filter(t => t.validation === 'build_hierarchy')Phase 3: Typed Access
Section titled “Phase 3: Typed Access”Validation: get_string, get_int, get_bool, get_float, get_list
Filter tests:
tests.filter(t => t.validation.startsWith('get_'))Phase 4: Optional Features
Section titled “Phase 4: Optional Features”Features: comments, experimental_dotted_keys
Filter by supported features:
tests.filter(t => t.features.every(f => supportedFeatures.includes(f)))Test Filtering
Section titled “Test Filtering”Filter tests by implementation capabilities:
const supportedTests = tests.filter(test => { // Check functions if (!test.functions.every(f => implementedFunctions.includes(f))) return false;
// Check features if (!test.features.every(f => supportedFeatures.includes(f))) return false;
// Check behavior conflicts if (test.conflicts?.behaviors?.some(b => chosenBehaviors.includes(b))) return false;
return true;});Example Test
Section titled “Example Test”{ "name": "basic_key_value_pairs_parse", "validation": "parse", "input": "name = Alice\nage = 42", "expected": { "count": 2, "entries": [ {"key": "name", "value": "Alice"}, {"key": "age", "value": "42"} ] }, "functions": ["parse"], "features": [], "behaviors": []}See CCL Test Suite repository for complete test runner and JSON schema.