Passed
Push — master ( 6f77b1...954ddf )
by Oleksandr
11:42
created

tests.test_translations   A

Complexity

Total Complexity 17

Size/Duplication

Total Lines 160
Duplicated Lines 20 %

Importance

Changes 0
Metric Value
wmc 17
eloc 108
dl 32
loc 160
rs 10
c 0
b 0
f 0

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
import sys
2
import unittest
3
4
from verboselib import drop_default_language
5
from verboselib import drop_language
6
from verboselib import set_language
7
from verboselib import Translations
8
9
from .constants import LOCALE_DOMAIN
10
from .constants import LOCALE_DIR_PATH
11
12
13
class TranslationsTestCase(unittest.TestCase):
14
15
  def setUp(self):
16
    drop_default_language()
17
    drop_language()
18
19
    self.translations = Translations(LOCALE_DOMAIN, LOCALE_DIR_PATH)
20
21
  def test_gettext(self):
22
    _ = self.translations.gettext
23
24
    set_language("en")
25
26
    translated = _("verboselib test string")
27
    self.assertEqual(translated, "verboselib test string in en_US")
28
29
    set_language("en-gb")
30
    self.assertEqual(translated, "verboselib test string in en_US")
31
32
  def test_gettext_lazy(self):
33
    L_ = self.translations.gettext_lazy
34
35
    translated = L_("verboselib test string")
36
37
    set_language("en")
38
    self.assertEqual(translated, "verboselib test string in en_US")
39
40
    set_language("en-gb")
41
    self.assertEqual(translated, "verboselib test string in en_GB")
42
43
  def test_ngettext(self):
44
    N_ = self.translations.ngettext
45
46
    set_language("uk")
47
48
    translated = N_("window", "windows", 1)
49
    self.assertEqual(translated, "вікно")
50
51
    translated = N_("window", "windows", 2)
52
    self.assertEqual(translated, "вікна")
53
54
    translated = N_("window", "windows", 5)
55
    self.assertEqual(translated, "вікон")
56
57
  def test_ngettext_lazy_n(self):
58
    N_ = self.translations.ngettext
59
60
    set_language("uk")
61
62
    translated = N_("window", "windows", lambda: 1)
63
    self.assertEqual(translated, "вікно")
64
65
    translated = N_("window", "windows", lambda: 2)
66
    self.assertEqual(translated, "вікна")
67
68
    translated = N_("window", "windows", lambda: 5)
69
    self.assertEqual(translated, "вікон")
70
71
  def test_ngettext_lazy(self):
72
    LN_ = self.translations.ngettext_lazy
73
74
    translated = LN_("window", "windows", 1)
75
76
    set_language("en")
77
    self.assertEqual(translated, "window")
78
79
    set_language("uk")
80
    self.assertEqual(translated, "вікно")
81
82
  @unittest.skipIf(
83
    (sys.version_info.major == 3 and sys.version_info.minor < 8),
84
    "available since Python 3.8",
85
  )
86
  def test_pgettext(self):
87
    P_ = self.translations.pgettext
88
89
    set_language("en")
90
    translated = P_("abbrev. month", "Jan")
91
    self.assertEqual(translated, "Jan")
92
93
    set_language("uk")
94
    translated = P_("abbrev. month", "Jan")
95
    self.assertEqual(translated, "Січ")
96
97
  @unittest.skipIf(
98
    (sys.version_info.major == 3 and sys.version_info.minor < 8),
99
    "available since Python 3.8",
100
  )
101
  def test_pgettext_lazy(self):
102
    LP_ = self.translations.pgettext_lazy
103
104
    translated = LP_("abbrev. month", "Jan")
105
106
    set_language("en")
107
    self.assertEqual(translated, "Jan")
108
109
    set_language("uk")
110
    self.assertEqual(translated, "Січ")
111
112
  @unittest.skipIf(
113
    (sys.version_info.major == 3 and sys.version_info.minor < 8),
114
    "available since Python 3.8",
115
  )
116
  def test_npgettext(self):
117
    NP_ = self.translations.npgettext
118
119
    set_language("uk")
120
    translated = NP_("noun", "lock", "locks", 1)
121
    self.assertEqual(translated, "замок")
122
123
    translated = NP_("noun", "lock", "locks", 2)
124
    self.assertEqual(translated, "замки")
125
126
    translated = NP_("noun", "lock", "locks", 5)
127
    self.assertEqual(translated, "замків")
128
129
  @unittest.skipIf(
130
    (sys.version_info.major == 3 and sys.version_info.minor < 8),
131
    "available since Python 3.8",
132
  )
133
  def test_npgettext_lazy_n(self):
134
    NP_ = self.translations.npgettext
135
136
    set_language("uk")
137
    translated = NP_("noun", "lock", "locks", lambda: 1)
138
    self.assertEqual(translated, "замок")
139
140
    translated = NP_("noun", "lock", "locks", lambda: 2)
141
    self.assertEqual(translated, "замки")
142
143
    translated = NP_("noun", "lock", "locks", lambda: 5)
144
    self.assertEqual(translated, "замків")
145
146
  @unittest.skipIf(
147
    (sys.version_info.major == 3 and sys.version_info.minor < 8),
148
    "available since Python 3.8",
149
  )
150
  def test_npgettext_lazy(self):
151
    LNP_ = self.translations.npgettext_lazy
152
153
    translated = LNP_("noun", "lock", "locks", 1)
154
155
    set_language("en")
156
    self.assertEqual(translated, "lock")
157
158
    set_language("uk")
159
    self.assertEqual(translated, "замок")
160