{
  "scenario": "Match tests",
  "description": "Tests for various match constructs",
  "defaultTestProperties": {
    "locale": "en-US"
  },
 "tests": [
  {
    "comment": "Testing simple plural",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        "one {{{$count} file}}\n",
        " *  {{{$count} files}}"
     ],
     "params": [{"name": "count", "value": 0}],
     "exp": "0 files"
  },
  {
    "comment": "Testing simple plural",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        "one {{{$count} file}}\n",
        " *  {{{$count} files}}"
     ],
     "params": [{"name": "count", "value": 1}],
     "exp": "1 file"
  },
  {
    "comment": "Testing simple plural",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        "one {{{$count} file}}\n",
        " *  {{{$count} files}}"
     ],
     "params": [{"name": "count", "value": 3}],
     "exp": "3 files"
  },
  {
    "comment": "Testing simple plural",
    "locale": "fr",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        "one {{{$count} file}}\n",
        " *  {{{$count} files}}"
     ],
     "params": [{"name": "count", "value": 0}],
     "exp": "0 file"
  },
  {
    "comment": "Testing simple plural",
    "locale": "fr",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        "one {{{$count} file}}\n",
        " *  {{{$count} files}}"
     ],
     "params": [{"name": "count", "value": 1}],
     "exp": "1 file"
  },
  {
    "comment": "Testing simple plural",
    "locale": "fr",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        "one {{{$count} file}}\n",
        " *  {{{$count} files}}"
     ],
     "params": [{"name": "count", "value": 3}],
     "exp": "3 files"
  },
  {
    "comment": "Testing simple plural, but swap variant order",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        " *  {{You deleted {$count} files}}\n",
        "one {{You deleted {$count} file}}"
    ],
    "params": [{"name": "count", "value": 1}],
    "exp": "You deleted 1 file"
  },
  {
    "comment": "Testing simple plural, but swap variant order",
    "src": [
        ".input {$count :number}\n",
        ".match $count\n",
        " *  {{You deleted {$count} files}}\n",
        "one {{You deleted {$count} file}}"
    ],
    "params": [{"name": "count", "value": 3}],
    "exp": "You deleted 3 files"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 1}],
    "exp": "You got the gold medal"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 2}],
    "exp": "You got the silver medal"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 3}],
    "exp": "You got the bronze medal"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 7}],
    "exp": "You finished in the 7th place"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 21}],
    "exp": "You finished in the 21st place"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 22}],
    "exp": "You finished in the 22nd place"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 23}],
    "exp": "You finished in the 23rd place"
  },
  {
    "comment": "Ordinal, with mixed order and exact matches",
    "src": [
        ".input {$place :number select=ordinal}\n",
        ".match $place\n",
        "*   {{You finished in the {$place}th place}}\n",
        "two {{You finished in the {$place}nd place}}\n",
        "one {{You finished in the {$place}st place}}\n",
        "1   {{You got the gold medal}}\n",
        "2   {{You got the silver medal}}\n",
        "3   {{You got the bronze medal}}\n",
        "few {{You finished in the {$place}rd place}}"
    ],
    "params": [{"name": "place", "value": 28}],
    "exp": "You finished in the 28th place"
  },
  {
    "comment": "Plural combinations, mixed order",
    "src": [
        ".input {$fileCount :number} .input {$folderCount :number}\n",
        ".match $fileCount $folderCount\n",
        "  *   *   {{You found {$fileCount} files in {$folderCount} folders}}\n",
        "  one one {{You found {$fileCount} file in {$folderCount} folder}}\n",
        "  one *   {{You found {$fileCount} file in {$folderCount} folders}}\n",
        "  *   one {{You found {$fileCount} files in {$folderCount} folder}}"
    ],
    "params": [{"name": "fileCount", "value": 1},
               {"name": "folderCount", "value": 1}],
    "exp": "You found 1 file in 1 folder"
  },
  {
    "comment": "Plural combinations, mixed order",
    "src": [
        ".input {$fileCount :number} .input {$folderCount :number}\n",
        ".match $fileCount $folderCount\n",
        "  *   *   {{You found {$fileCount} files in {$folderCount} folders}}\n",
        "  one one {{You found {$fileCount} file in {$folderCount} folder}}\n",
        "  one *   {{You found {$fileCount} file in {$folderCount} folders}}\n",
        "  *   one {{You found {$fileCount} files in {$folderCount} folder}}"
    ],
    "params": [{"name": "fileCount", "value": 1},
               {"name": "folderCount", "value": 5}],
    "exp": "You found 1 file in 5 folders"
  },
  {
    "comment": "Plural combinations, mixed order",
    "src": [
        ".input {$fileCount :number} .input {$folderCount :number}\n",
        ".match $fileCount $folderCount\n",
        "  *   *   {{You found {$fileCount} files in {$folderCount} folders}}\n",
        "  one one {{You found {$fileCount} file in {$folderCount} folder}}\n",
        "  one *   {{You found {$fileCount} file in {$folderCount} folders}}\n",
        "  *   one {{You found {$fileCount} files in {$folderCount} folder}}"
    ],
    "params": [{"name": "fileCount", "value": 7},
               {"name": "folderCount", "value": 1}],
    "exp": "You found 7 files in 1 folder"
  },
  {
    "comment": "Plural combinations, mixed order",
    "src": [
        ".input {$fileCount :number} .input {$folderCount :number}\n",
        ".match $fileCount $folderCount\n",
        "  *   *   {{You found {$fileCount} files in {$folderCount} folders}}\n",
        "  one one {{You found {$fileCount} file in {$folderCount} folder}}\n",
        "  one *   {{You found {$fileCount} file in {$folderCount} folders}}\n",
        "  *   one {{You found {$fileCount} files in {$folderCount} folder}}"
    ],
    "params": [{"name": "fileCount", "value": 7},
               {"name": "folderCount", "value": 3}],
    "exp": "You found 7 files in 3 folders"
  },
  {
    "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
      "src": [
        ".local $c = {$price :number minimumFractionDigits=$minF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1 },
                 { "name": "minF", "value": 0 }],
      "exp": "1 dollar"
  },
  {
    "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
      "src": [
        ".local $c = {$price :number minimumFractionDigits=$minF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1},
                 { "name": "minF", "value": 2 }],
      "exp": "1.00 dollars"
  },
  {
    "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
      "src": [
        ".local $c = {$price :number maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1.25},
                 { "name": "maxF", "value": 0 }],
      "exp": "1 dollar"
  },
  {
    "comment": "Test that the selection honors the formatting option (`1.00 dollars`)",
      "src": [
        ".local $c = {$price :number maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1.25},
                 { "name": "maxF", "value": 2 }],
      "exp": "1.25 dollars"
  },
  {
    "comment": "Test that the selection honors the `:integer` over options",
      "src": [
        ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1},
                 { "name": "maxF", "value": 0 }],
      "exp": "1 dollar"
  },
  {
    "comment": "Test that the selection honors the `:integer` over options",
      "src": [
        ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1},
                 { "name": "maxF", "value": 2 }],
      "exp": "1 dollar"
  },
  {
    "comment": "Test that the selection honors the `:integer` over options",
      "src": [
        ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1.25},
                 { "name": "maxF", "value": 0 }],
      "exp": "1 dollar"
  },
  {
    "comment": "Test that the selection honors the `:integer` over options",
      "src": [
        ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 1.25 },
                 { "name": "maxF", "value": 2 }],
      "exp": "1 dollar"
  },
  {
    "comment": "Test that the selection honors the `:integer` over options",
      "src": [
        ".local $c = {$price :integer maximumFractionDigits=$maxF}\n",
        ".match $c\n",
        "  one {{{$c} dollar}}\n",
        "   *  {{{$c} dollars}}"
      ],
      "params": [{ "name": "price", "value": 4.12345 },
                 { "name": "maxF", "value": 4 }],
      "exp": "4 dollars"
  }
 ]
}
