jazz - access  ✔ should resolve object getter properties  ✔ should access array by numeric index  ✔ should access nested array value  ✔ should access array via nested object path  ✔ should access array using variable index  ✔ should access object property using string key  ✔ should access object property using expression key  ✔ should chain expression key with attribute access  ✔ should access array using nested index expression  ✔ should access property named end  jazz - conditionals  ✔ should render if body when condition is true  ✔ should skip if body when condition is false  ✔ should render else body when if condition is false  ✔ should render elif branch when primary condition is false  ✔ should evaluate multiple elif branches in order  ✔ should evaluate empty operator for empty string  ✔ should evaluate not empty operator for non-empty array  ✔ should evaluate and/or precedence with parentheses  ✔ should evaluate grouped expression with top-level or  ✔ should evaluate not unary operator  ✔ should evaluate eq operator  ✔ should evaluate neq operator  ✔ should evaluate synchronous function calls in conditions  jazz - expressions  ✔ should render string literal expressions  ✔ should render number literal expressions  ✔ should evaluate and expression to right-hand value  ✔ should evaluate numeric equality expression  ✔ should evaluate greater-than comparison  ✔ should parse hexadecimal numbers in arithmetic calls  ✔ should evaluate combined boolean and comparison expression  jazz - functions  ✔ should call asynchronous function without arguments  ✔ should call asynchronous function with one string argument  ✔ should call asynchronous function with multiple arguments  ✔ should call namespaced asynchronous function  ✔ should render delayed asynchronous function results  ✔ should support html escaping via function  ✔ should pass hash literals to functions  ✔ should pass nested hash literals to functions  ✔ should pass expression values inside hash literals  ✔ should call function with indexed expression and hash argument  ✔ should render synchronous function output using @ in echo  ✔ should evaluate synchronous function output in comparisons  jazz - foreach  ✔ should iterate over arrays  ✔ should iterate nested foreach blocks  ✔ should iterate over object key-value pairs  ✔ should expose __index for array iteration  ✔ should expose __count for array iteration  ✔ should keep trailing text outside foreach block  jazz - rendering  ✔ should return plain text when template has no expressions  ✔ should interpolate variables from namespace  ✔ should resolve nested object attributes  ✔ should keep line breaks and carriage returns  ✔ should keep quotes in output  ✔ should render literal braces expression  ✔ should support eval alias for backward compatibility   55 passing (42ms)