{
  "schema": "https://bars.commonsware.com/conformance/schema/render-fixture.schema.json",
  "version": "0.1.0",
  "cases": [
    {
      "name": "render-parity-integer-literal",
      "description": "An integer JSON literal renders as its plain digits.",
      "template": "{{ /n }}",
      "context": {
        "n": 2
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "2"
      }
    },
    {
      "name": "render-parity-whole-double-literal",
      "description": "A whole-valued double JSON literal (2.0) renders identically to the integer 2, per ECMA-262 Number::toString: kBars does not distinguish int from float at the render boundary.",
      "template": "{{ /n }}",
      "context": {
        "n": 2.0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "2"
      }
    },
    {
      "name": "eq-parity-integer-vs-whole-double",
      "description": "Equality treats 2 and 2.0 as the same numeric value; the int/float distinction is not observable via ==.",
      "template": "{{ a == b }}",
      "context": {
        "a": 2,
        "b": 2.0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "true"
      }
    },
    {
      "name": "ne-parity-integer-vs-different-double",
      "description": "!= still distinguishes numerically different values regardless of which side is an integer literal and which is a decimal literal.",
      "template": "{{ a != b }}",
      "context": {
        "a": 2,
        "b": 2.5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "true"
      }
    },
    {
      "name": "truthy-parity-nonzero-integer",
      "description": "A nonzero integer is truthy.",
      "template": "{{#if n }}T{{else}}F{{/if}}",
      "context": {
        "n": 2
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "T"
      }
    },
    {
      "name": "truthy-parity-nonzero-whole-double",
      "description": "A nonzero whole-valued double is truthy, matching the integer case: truthiness does not observe the int/float distinction.",
      "template": "{{#if n }}T{{else}}F{{/if}}",
      "context": {
        "n": 2.0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "T"
      }
    },
    {
      "name": "falsy-parity-zero-integer",
      "description": "Integer 0 is falsy.",
      "template": "{{#if n }}T{{else}}F{{/if}}",
      "context": {
        "n": 0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "F"
      }
    },
    {
      "name": "falsy-parity-zero-double",
      "description": "0.0 is falsy, matching the integer 0 case: truthiness does not observe the int/float distinction, even at zero.",
      "template": "{{#if n }}T{{else}}F{{/if}}",
      "context": {
        "n": 0.0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "F"
      }
    }
  ]
}
