{
  "$schema": "https://raw.githubusercontent.com/unicode-org/message-format-wg/main/test/schemas/v0/tests.schema.json",
  "scenario": "Pattern selection",
  "description": "Tests for pattern selection",
  "defaultTestProperties": {
    "locale": "und"
  },
  "tests": [
    {
      "src": ".local $x = {1 :test:select} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "1"
    },
    {
      "src": ".local $x = {0 :test:select} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "other"
    },
    {
      "src": ".input {$x :test:select} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "params": [{ "name": "x", "value": 1 }],
      "exp": "1"
    },
    {
      "src": ".input {$x :test:select} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "params": [{ "name": "x", "value": 2 }],
      "exp": "other"
    },
    {
      "src": ".input {$x :test:select} .local $y = {$x} .match $y 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "params": [{ "name": "x", "value": 1 }],
      "exp": "1"
    },
    {
      "src": ".input {$x :test:select} .local $y = {$x} .match $y 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "params": [{ "name": "x", "value": 2 }],
      "exp": "other"
    },
    {
      "src": ".local $x = {1 :test:select decimalPlaces=1} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "1.0"
    },
    {
      "src": ".local $x = {1 :test:select decimalPlaces=1} .match $x 1 {{1}} 1.0 {{1.0}} * {{other}}",
      "exp": "1.0"
    },
    {
      "src": ".local $x = {1 :test:select decimalPlaces=9} .match $x 1.0 {{1.0}} 1 {{1}} * {{bad-option-value}}",
      "exp": "bad-option-value",
      "expErrors": [{ "type": "bad-option" }, { "type": "bad-selector" }]
    },
    {
      "src": ".input {$x :test:select} .local $y = {$x :test:select decimalPlaces=1} .match $y 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "params": [{ "name": "x", "value": 1 }],
      "exp": "1.0"
    },
    {
      "src": ".input {$x :test:select decimalPlaces=1} .local $y = {$x :test:select} .match $y 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "params": [{ "name": "x", "value": 1 }],
      "exp": "1.0"
    },
    {
      "src": ".input {$x :test:select decimalPlaces=9} .local $y = {$x :test:select decimalPlaces=1} .match $y 1.0 {{1.0}} 1 {{1}} * {{bad-option-value}}",
      "params": [{ "name": "x", "value": 1 }],
      "exp": "bad-option-value",
      "expErrors": [
        { "type": "bad-option" },
        { "type": "bad-operand" },
        { "type": "bad-selector" }
      ]
    },
    {
      "src": ".local $x = {1 :test:select fails=select} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "other",
      "expErrors": [{ "type": "bad-selector" }]
    },
    {
      "src": ".local $x = {1 :test:select fails=format} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "1"
    },
    {
      "src": ".local $x = {1 :test:format} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "other",
      "expErrors": [{ "type": "bad-selector" }]
    },
    {
      "src": ".input {$x :test:select} .match $x 1.0 {{1.0}} 1 {{1}} * {{other}}",
      "exp": "other",
      "expErrors": [
        { "type": "unresolved-variable" },
        { "type": "bad-operand" },
        { "type": "bad-selector" }
      ]
    },
    {
      "src": ".local $x = {1 :test:select} .local $y = {1 :test:select} .match $x $y 1 1 {{1,1}} 1 * {{1,*}} * 1 {{*,1}} * * {{*,*}}",
      "exp": "1,1"
    },
    {
      "src": ".local $x = {1 :test:select} .local $y = {0 :test:select} .match $x $y 1 1 {{1,1}} 1 * {{1,*}} * 1 {{*,1}} * * {{*,*}}",
      "exp": "1,*"
    },
    {
      "src": ".local $x = {0 :test:select} .local $y = {1 :test:select} .match $x $y 1 1 {{1,1}} 1 * {{1,*}} * 1 {{*,1}} * * {{*,*}}",
      "exp": "*,1"
    },
    {
      "src": ".local $x = {0 :test:select} .local $y = {0 :test:select} .match $x $y 1 1 {{1,1}} 1 * {{1,*}} * 1 {{*,1}} * * {{*,*}}",
      "exp": "*,*"
    },
    {
      "src": ".local $x = {1 :test:select fails=select} .local $y = {1 :test:select} .match $x $y 1 1 {{1,1}} 1 * {{1,*}} * 1 {{*,1}} * * {{*,*}}",
      "exp": "*,1",
      "expErrors": [{ "type": "bad-selector" }]
    },
    {
      "src": ".local $x = {1 :test:select} .local $y = {1 :test:format} .match $x $y 1 1 {{1,1}} 1 * {{1,*}} * 1 {{*,1}} * * {{*,*}}",
      "exp": "1,*",
      "expErrors": [{ "type": "bad-selector" }]
    }
  ]
}
