{
  "schema": "https://bars.commonsware.com/conformance/schema/render-fixture.schema.json",
  "version": "0.1.0",
  "cases": [
    {
      "name": "upcase-string",
      "spotlight": true,
      "description": "A string literal upcased via the built-in upcase transform.",
      "template": "{{ \"hi\" | upcase }}",
      "context": {},
      "expect": {
        "kind": "output",
        "expectedOutput": "HI"
      }
    },
    {
      "name": "upcase-identifier-string",
      "description": "An identifier pointing to a string value is upcased.",
      "template": "{{ foo | upcase }}",
      "context": {
        "foo": "hi"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "HI"
      }
    },
    {
      "name": "upcase-null-context",
      "description": "A missing key (resolves to null) coerces to \"null\" then upcases to \"NULL\".",
      "template": "{{ missing | upcase }}",
      "context": {},
      "expect": {
        "kind": "output",
        "expectedOutput": "NULL"
      }
    },
    {
      "name": "upcase-json-null",
      "description": "An explicit JSON null value coerces to \"null\" then upcases to \"NULL\".",
      "template": "{{ foo | upcase }}",
      "context": {
        "foo": null
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "NULL"
      }
    },
    {
      "name": "upcase-number",
      "description": "A number coerces to its string form; uppercasing has no effect on digits.",
      "template": "{{ n | upcase }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "5"
      }
    },
    {
      "name": "upcase-boolean",
      "description": "A boolean true coerces to \"true\" then upcases to \"TRUE\".",
      "template": "{{ b | upcase }}",
      "context": {
        "b": true
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "TRUE"
      }
    },
    {
      "name": "upcase-chained-with-downcase",
      "spotlight": true,
      "description": "Two-transform chain: upcase then downcase. Final result is lowercase.",
      "template": "{{ foo | upcase | downcase }}",
      "context": {
        "foo": "Hello"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "hello"
      }
    },
    {
      "name": "upcase-on-binary",
      "description": "Upcase applied to the result of a binary comparison. true renders as \"true\", upcased to \"TRUE\".",
      "template": "{{ a == b | upcase }}",
      "context": {
        "a": 1,
        "b": 1
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "TRUE"
      }
    },
    {
      "name": "upcase-sharp-s-expands",
      "description": "Unicode default case mapping can grow a string: German sharp s (one code point) upcases to \"SS\" (two code points).",
      "template": "{{ s | upcase }}",
      "context": {
        "s": "ß"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "SS"
      }
    }
  ]
}
