{
  "schema": "https://bars.commonsware.com/conformance/schema/render-fixture.schema.json",
  "version": "0.1.0",
  "cases": [
    {
      "name": "plus-integers",
      "spotlight": true,
      "description": "plus adds its integer argument to an integer input via {{ n | plus: 2 }}.",
      "template": "{{ n | plus: 2 }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "7"
      }
    },
    {
      "name": "plus-decimals-whole-result",
      "description": "Adding two decimals whose sum is whole collapses to an integer.",
      "template": "{{ n | plus: 2.5 }}",
      "context": {
        "n": 1.5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "4"
      }
    },
    {
      "name": "plus-fractional-result",
      "description": "Adding a fraction keeps the fractional part.",
      "template": "{{ n | plus: 0.5 }}",
      "context": {
        "n": 1
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "1.5"
      }
    },
    {
      "name": "plus-numeric-string-input",
      "description": "A numeric string input is parsed before adding.",
      "template": "{{ n | plus: 2 }}",
      "context": {
        "n": "5"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "7"
      }
    },
    {
      "name": "plus-numeric-string-argument",
      "description": "A numeric string argument is parsed before adding.",
      "template": "{{ n | plus: \"2\" }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "7"
      }
    },
    {
      "name": "plus-non-numeric-input-is-null",
      "description": "A non-numeric input is a soft failure, so plus yields null.",
      "template": "{{ n | plus: 2 }}",
      "context": {
        "n": "foo"
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    },
    {
      "name": "plus-missing-input-is-null",
      "description": "A missing input resolves to null, so plus yields null.",
      "template": "{{ missing | plus: 2 }}",
      "context": {},
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    },
    {
      "name": "plus-non-numeric-argument-is-null",
      "description": "A non-numeric argument is a soft failure, so plus yields null.",
      "template": "{{ n | plus: \"foo\" }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    },
    {
      "name": "plus-zero-args-is-error",
      "description": "Calling plus with zero arguments produces an arity error.",
      "template": "{{ n | plus }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "error",
        "errorCode": "KB-2002"
      }
    },
    {
      "name": "plus-two-args-is-error",
      "description": "Calling plus with two arguments produces an arity error.",
      "template": "{{ n | plus: 1 2 }}",
      "context": {
        "n": 5
      },
      "expect": {
        "kind": "error",
        "errorCode": "KB-2002"
      }
    },
    {
      "name": "plus-datetime-adds-days",
      "spotlight": true,
      "description": "With DateTime input and a numeric argument, plus adds that many days.",
      "template": "{{ a | as_date_time: 'seconds' | plus: 1 }}",
      "context": {
        "a": 0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "1970-01-02T00:00:00Z"
      }
    },
    {
      "name": "plus-datetime-fractional-days",
      "description": "plus accepts a fractional number of days for a DateTime input.",
      "template": "{{ a | as_date_time: 'seconds' | plus: 1.5 }}",
      "context": {
        "a": 0
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "1970-01-02T12:00:00Z"
      }
    },
    {
      "name": "plus-datetime-non-numeric-argument-is-null",
      "description": "DateTime input with a non-numeric argument is a soft failure, so plus yields null.",
      "template": "{{ a | as_date_time: 'seconds' | plus: ( b | as_date_time: 'seconds' ) }}",
      "context": {
        "a": 0,
        "b": 100
      },
      "expect": {
        "kind": "output",
        "expectedOutput": "null"
      }
    }
  ]
}
