{
  "schema": "https://bars.commonsware.com/conformance/schema/render-fixture.schema.json",
  "version": "0.1.0",
  "cases": [
    {
      "name": "minus-integers",
      "spotlight": true,
      "description": "minus subtracts its integer argument from an integer input via {{ n | minus: 2 }}.",
      "template": "{{ n | minus: 2 }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "3"
      }
    },
    {
      "name": "minus-fractional-result",
      "description": "Subtracting a fraction keeps the fractional part.",
      "template": "{{ n | minus: 0.5 }}",
      "context": {
        "n": 1
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "0.5"
      }
    },
    {
      "name": "minus-negative-result",
      "description": "Subtracting a larger value yields a negative result.",
      "template": "{{ n | minus: 8 }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "-3"
      }
    },
    {
      "name": "minus-non-numeric-input-is-null",
      "description": "A non-numeric input is a soft failure, so minus yields null.",
      "template": "{{ n | minus: 2 }}",
      "context": {
        "n": "x"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    },
    {
      "name": "minus-non-numeric-argument-is-null",
      "description": "A non-numeric argument is a soft failure, so minus yields null.",
      "template": "{{ n | minus: \"x\" }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    },
    {
      "name": "minus-zero-args-is-error",
      "description": "Calling minus with zero arguments produces an arity error.",
      "template": "{{ n | minus }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "error",
        "errorCode": "KB-2002"
      }
    },
    {
      "name": "minus-datetime-gap-in-days",
      "spotlight": true,
      "description": "Subtracting two DateTimes yields the signed number of days between them.",
      "template": "{{ a | as_date_time: 'seconds' | minus: ( b | as_date_time: 'seconds' ) }}",
      "context": {
        "a": 172800,
        "b": 0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "2"
      }
    },
    {
      "name": "minus-datetime-fractional-gap",
      "description": "A DateTime gap that is not a whole number of days keeps the fractional part.",
      "template": "{{ a | as_date_time: 'seconds' | minus: ( b | as_date_time: 'seconds' ) }}",
      "context": {
        "a": 129600,
        "b": 0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "1.5"
      }
    },
    {
      "name": "minus-datetime-negative-gap",
      "description": "The DateTime gap is signed: an earlier input minus a later argument is negative.",
      "template": "{{ a | as_date_time: 'seconds' | minus: ( b | as_date_time: 'seconds' ) }}",
      "context": {
        "a": 0,
        "b": 172800
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "-2"
      }
    },
    {
      "name": "minus-datetime-numeric-argument-shifts-back",
      "description": "With DateTime input and a numeric argument, minus subtracts that many days.",
      "template": "{{ a | as_date_time: 'seconds' | minus: 1 }}",
      "context": {
        "a": 172800
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "1970-01-02T00:00:00Z"
      }
    },
    {
      "name": "minus-datetime-invalid-argument-is-null",
      "description": "DateTime input with an argument that is neither a DateTime nor a number is a soft failure.",
      "template": "{{ a | as_date_time: 'seconds' | minus: \"x\" }}",
      "context": {
        "a": 172800
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    }
  ]
}
