plural_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. "ru_RU": {
  50. 1: 0,
  51. 2: 1,
  52. 5: 2,
  53. },
  54. "sr_RS": {
  55. 1: 0,
  56. 2: 1,
  57. 5: 2,
  58. },
  59. "tr_TR": {
  60. 1: 0,
  61. 2: 1,
  62. 5: 1,
  63. },
  64. "uk_UA": {
  65. 1: 0,
  66. 2: 1,
  67. 5: 2,
  68. },
  69. "zh_CN": {
  70. 1: 0,
  71. 5: 0,
  72. },
  73. "zh_TW": {
  74. 1: 0,
  75. 5: 0,
  76. },
  77. }
  78. for rule, values := range scenarios {
  79. for input, expected := range values {
  80. result := pluralForms[rule](input)
  81. if result != expected {
  82. t.Errorf(`Unexpected result for %q rule, got %d instead of %d for %d as input`, rule, result, expected, input)
  83. }
  84. }
  85. }
  86. }