1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
|
'From Cuis 6.0 [latest update: #5090] on 4 March 2022 at 9:31:22 am'!
'Description '!
!provides: 'System-Locales-Tests' 1 0!
SystemOrganization addCategory: 'System-Locales-Tests'!
!classDefinition: #ISOLanguageDefinitionTest category: 'System-Locales-Tests'!
TestCase subclass: #ISOLanguageDefinitionTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: 'nil'
category: 'System-Locales-Tests'!
!classDefinition: 'ISOLanguageDefinitionTest class' category: 'System-Locales-Tests'!
ISOLanguageDefinitionTest class
instanceVariableNames: ''!
!classDefinition: #LocaleIDTest category: 'System-Locales-Tests'!
TestCase subclass: #LocaleIDTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: 'nil'
category: 'System-Locales-Tests'!
!classDefinition: 'LocaleIDTest class' category: 'System-Locales-Tests'!
LocaleIDTest class
instanceVariableNames: ''!
!classDefinition: #LocaleTest category: 'System-Locales-Tests'!
TestCase subclass: #LocaleTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: 'nil'
category: 'System-Locales-Tests'!
!classDefinition: 'LocaleTest class' category: 'System-Locales-Tests'!
LocaleTest class
instanceVariableNames: ''!
!classDefinition: #NaturalLanguageTranslatorTest category: 'System-Locales-Tests'!
TestCase subclass: #NaturalLanguageTranslatorTest
instanceVariableNames: 'previousRegistered'
classVariableNames: ''
poolDictionaries: 'nil'
category: 'System-Locales-Tests'!
!classDefinition: 'NaturalLanguageTranslatorTest class' category: 'System-Locales-Tests'!
NaturalLanguageTranslatorTest class
instanceVariableNames: ''!
!classDefinition: #NameOfSubclass category: 'System-Locales-Tests'!
Object subclass: #NameOfSubclass
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'System-Locales-Tests'!
!classDefinition: 'NameOfSubclass class' category: 'System-Locales-Tests'!
NameOfSubclass class
instanceVariableNames: ''!
!classDefinition: #RegisterableTranslatorMock category: 'System-Locales-Tests'!
Object subclass: #RegisterableTranslatorMock
instanceVariableNames: 'translations'
classVariableNames: ''
poolDictionaries: 'nil'
category: 'System-Locales-Tests'!
!classDefinition: 'RegisterableTranslatorMock class' category: 'System-Locales-Tests'!
RegisterableTranslatorMock class
instanceVariableNames: ''!
!ISOLanguageDefinitionTest commentStamp: '' prior: 0!
Unit tests on ISO language definitions!
!LocaleIDTest commentStamp: '' prior: 0!
A unit test class for class LocaleID!
!LocaleTest commentStamp: '' prior: 0!
A unit test class for class Locale!
!NaturalLanguageTranslatorTest commentStamp: '' prior: 0!
Tests for NaturalLanguageTranslator!
!RegisterableTranslatorMock commentStamp: '' prior: 0!
I'm a mock object to mock a translator!
!ISOLanguageDefinitionTest methodsFor: 'tests'!
testISO2LanguageDefinition
self
assert: (ISOLanguageDefinition iso2LanguageDefinition: 'de') language equals: 'German';
assert: (ISOLanguageDefinition iso2LanguageDefinition: 'fr') language equals: 'French'! !
!ISOLanguageDefinitionTest methodsFor: 'tests'!
testISO3LanguageDefinition
self
assert: (ISOLanguageDefinition iso3LanguageDefinition: 'deu') language equals: 'German';
assert: (ISOLanguageDefinition iso3LanguageDefinition: 'fra') language equals: 'French'! !
!LocaleIDTest methodsFor: 'tests' stamp: 'hlsf 3/4/2022 09:17:47'!
testComparision
self deny: self germanLocaleID = self frenchLocaleID.
self assert: self germanLocaleID equals: self germanLocaleID. ! !
!LocaleIDTest methodsFor: 'tests'!
testFromISOString
| locale |
locale _ LocaleID isoString: 'en-us'.
self
assert: locale isoLanguage equals: 'en';
assert: locale isoCountry equals: 'us'! !
!LocaleIDTest methodsFor: 'tests'!
testFromSingleISOString
| locale |
locale _ LocaleID isoString: 'en'.
self
assert: locale isoLanguage equals: 'en';
assert: locale isoCountry isNil! !
!LocaleIDTest methodsFor: 'tests'!
testHashing
self assert: self germanLocaleID hash equals: self germanLocaleID hash.
self assert: self frenchLocaleID hash equals: self frenchLocaleID hash.
! !
!LocaleIDTest methodsFor: 'tests'!
testInstanceCreationWithISOLanguage
|germanLocale|
germanLocale _ LocaleID isoLanguage: 'de'.
self assert: germanLocale isoLanguage equals: 'de'! !
!LocaleIDTest methodsFor: 'tests'!
testInstanceCreationWithISOLanguageAndCountry
|locale|
locale _ LocaleID isoLanguage: 'zh' isoCountry: 'CN'.
self
assert: locale isoLanguage equals: 'zh';
assert: locale isoCountry equals: 'CN'! !
!LocaleIDTest methodsFor: 'tests'!
testPosixNameConversion
| locale |
locale _ LocaleID posixName: 'en_us'.
self
assert: locale isoLanguage equals: 'en';
assert: locale isoCountry equals: 'us'! !
!LocaleIDTest methodsFor: 'tests'!
testPrintString
| locale |
locale _ LocaleID isoString: 'en-us'.
self assert: locale printString equals: 'en-us'
! !
!LocaleIDTest methodsFor: 'tests - test data'!
frenchLocaleID
^LocaleID isoLanguage: 'fr'! !
!LocaleIDTest methodsFor: 'tests - test data'!
germanLocaleID
^LocaleID isoLanguage: 'de'! !
!LocaleTest methodsFor: 'tests'!
testCurrent
self assert: Locale current notNil
! !
!NaturalLanguageTranslatorTest methodsFor: 'running'!
setUp
super setUp.
previousRegistered _ NaturalLanguageTranslator current! !
!NaturalLanguageTranslatorTest methodsFor: 'running'!
tearDown
NaturalLanguageTranslator current: previousRegistered.
super tearDown! !
!NaturalLanguageTranslatorTest methodsFor: 'tests'!
testRegisterCustomTranslator
NaturalLanguageTranslator current: RegisterableTranslatorMock new.
"Our custom translator translates the string differently"
self assert: 'TestCase' translated equals: 'Testfall'
! !
!NaturalLanguageTranslatorTest methodsFor: 'tests'!
testTranslatePureString
self assert: 'Pharo' translated equals: 'Pharo'! !
!RegisterableTranslatorMock methodsFor: 'initialization'!
initialize
"Initializes the receiver"
super initialize.
translations _ Dictionary new.
translations at: #'TestCase' put: 'Testfall'! !
!RegisterableTranslatorMock methodsFor: 'translate'!
translate: aString
"Dispatch to a registered translator to translate the given string or (if there is no translator) return the untranslated string."
^translations at: aString asSymbol ifAbsent: [ aString ]
! !
!RegisterableTranslatorMock methodsFor: 'translate'!
translate: aString toLocale: localeID
^self translate: aString! !
|