plural_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package locale // import "miniflux.app/v2/internal/locale"
  4. import "testing"
  5. func TestPluralRules(t *testing.T) {
  6. scenarios := map[string]map[int]int{
  7. "default": {
  8. 1: 0,
  9. 2: 1,
  10. 5: 1,
  11. },
  12. "ar_AR": {
  13. 0: 0,
  14. 1: 1,
  15. 2: 2,
  16. 5: 3,
  17. 11: 4,
  18. 200: 5,
  19. },
  20. "cs_CZ": {
  21. 1: 0,
  22. 2: 1,
  23. 5: 2,
  24. },
  25. "fr_FR": {
  26. 1: 0,
  27. 2: 1,
  28. 5: 1,
  29. },
  30. "id_ID": {
  31. 1: 0,
  32. 5: 0,
  33. },
  34. "ja_JP": {
  35. 1: 0,
  36. 2: 0,
  37. 5: 0,
  38. },
  39. "pl_PL": {
  40. 1: 0,
  41. 2: 1,
  42. 5: 2,
  43. },
  44. "pt_BR": {
  45. 1: 0,
  46. 2: 1,
  47. 5: 1,
  48. },
  49. "ro_RO": {
  50. 1: 0,
  51. 2: 1,
  52. 5: 1,
  53. },
  54. "ru_RU": {
  55. 1: 0,
  56. 2: 1,
  57. 5: 2,
  58. },
  59. "sr_RS": {
  60. 1: 0,
  61. 2: 1,
  62. 5: 2,
  63. },
  64. "tr_TR": {
  65. 1: 0,
  66. 2: 1,
  67. 5: 1,
  68. },
  69. "uk_UA": {
  70. 1: 0,
  71. 2: 1,
  72. 5: 2,
  73. },
  74. "zh_CN": {
  75. 1: 0,
  76. 5: 0,
  77. },
  78. "zh_TW": {
  79. 1: 0,
  80. 5: 0,
  81. },
  82. "nan_Latn_pehoeji": {
  83. 1: 0,
  84. 5: 0,
  85. },
  86. }
  87. for rule, values := range scenarios {
  88. for input, expected := range values {
  89. result := pluralForms[rule](input)
  90. if result != expected {
  91. t.Errorf(`Unexpected result for %q rule, got %d instead of %d for %d as input`, rule, result, expected, input)
  92. }
  93. }
  94. }
  95. }