{
  "schema": "https://bars.commonsware.com/conformance/schema/render-fixture.schema.json",
  "version": "0.1.0",
  "cases": [
    {
      "name": "this-renders-current-context",
      "description": "{{ this }} renders the entire current context as compact JSON (unescaped, as it is not a string primitive).",
      "template": "{{ this }}",
      "context": {
        "name": "Alice"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "{\"name\":\"Alice\"}"
      }
    },
    {
      "name": "this-unescaped-renders-current-context",
      "description": "{{{ this }}} renders the entire current context as compact JSON without HTML escaping.",
      "template": "{{{ this }}}",
      "context": {
        "name": "Alice"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "{\"name\":\"Alice\"}"
      }
    },
    {
      "name": "this-slash-this-resolves-this-property",
      "description": "{{ this/this }} resolves the 'this' property at the root of the current context via the JSON Pointer formed by stripping the leading 'this'.",
      "template": "{{ this/this }}",
      "context": {
        "this": "value-of-this"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "value-of-this"
      }
    },
    {
      "name": "this-dot-this-resolves-this-property",
      "description": "{{ this.this }} resolves the 'this' property at the root of the current context via dot notation after stripping the leading 'this.' prefix.",
      "template": "{{ this.this }}",
      "context": {
        "this": "value-of-this"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "value-of-this"
      }
    },
    {
      "name": "dot-alone-renders-current-context",
      "description": "{{ . }} is a synonym for {{ this }} and renders the entire current context (unescaped, as it is not a string primitive).",
      "template": "{{ . }}",
      "context": {
        "name": "Alice"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "{\"name\":\"Alice\"}"
      }
    },
    {
      "name": "dot-slash-name-resolves-property",
      "description": "{{ ./name }} strips the leading './' and dispatches '/name' as an RFC 6901 pointer.",
      "template": "{{ ./name }}",
      "context": {
        "name": "Alice"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "Alice"
      }
    },
    {
      "name": "this-dot-nested-uses-dot-notation",
      "description": "{{ this.user.city }} strips the leading 'this.' and resolves 'user.city' as dot notation.",
      "template": "{{ this.user.city }}",
      "context": {
        "user": {
          "city": "Springfield"
        }
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "Springfield"
      }
    },
    {
      "name": "this-slash-nested-uses-rfc6901",
      "description": "{{ this/user/city }} strips the leading 'this' and dispatches '/user/city' as an RFC 6901 pointer.",
      "template": "{{ this/user/city }}",
      "context": {
        "user": {
          "city": "Springfield"
        }
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "Springfield"
      }
    },
    {
      "name": "this-with-null-context-renders-null",
      "description": "When the context is null, {{ this }} renders the literal 'null' (matching the existing null-context convention).",
      "template": "{{ this }}",
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    },
    {
      "name": "thisfoo-is-not-a-this-keyword",
      "description": "Identifiers that merely start with the letters 'this' but are not followed by '.' or '/' or end-of-identifier are unaffected; 'thisfoo' is dispatched as the dot-notation key 'thisfoo'.",
      "template": "{{ thisfoo }}",
      "context": {
        "thisfoo": "ok"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "ok"
      }
    }
  ]
}
