@@ -6,18 +6,18 @@ import Testing
66@Suite ( . serialized)
77struct XMMigratorTests {
88 @Test ( " If URL is invalid, nil will be returned. " )
9- func extractKeyValue_negative ( ) throws {
9+ func extractSingularValue_negative ( ) throws {
1010 let sut = XMMigrator ( sourceLanguage: " " , paths: [ ] , outputPath: " " , verbose: false )
1111 let url = try #require( Bundle . module. resourceURL) . appending ( path: " not-exist.strings " )
12- let actual = sut. extractKeyValue ( from: url)
12+ let actual = sut. extractSingularValue ( from: url)
1313 #expect( actual == nil )
1414 }
1515
1616 @Test ( " If strings file is valid, dictionary will be returned. " )
17- func extractKeyValue_positive ( ) throws {
17+ func extractSingularValue_positive ( ) throws {
1818 let sut = XMMigrator ( sourceLanguage: " " , paths: [ ] , outputPath: " " , verbose: false )
1919 let url = try #require( Bundle . module. url ( forResource: " Localizable " , withExtension: " strings " , subdirectory: " Migrator " ) )
20- let actual = sut. extractKeyValue ( from: url)
20+ let actual = sut. extractSingularValue ( from: url)
2121 let expect = [
2222 " \" Hello %@ \" " : " \" Hello %@ \" " ,
2323 " Count = %lld " : " Count = %lld " ,
@@ -35,18 +35,18 @@ struct XMMigratorTests {
3535 }
3636
3737 @Test ( " If URL is invalid, nil will be returned. " )
38- func extractStringsDictValue_negative ( ) throws {
38+ func extractPluralValue_negative ( ) throws {
3939 let sut = XMMigrator ( sourceLanguage: " " , paths: [ ] , outputPath: " " , verbose: false )
4040 let url = try #require( Bundle . module. resourceURL) . appending ( path: " not-exist.stringsdict " )
41- let actual = sut. extractStringsDictValue ( from: url)
41+ let actual = sut. extractPluralValue ( from: url)
4242 #expect( actual == nil )
4343 }
4444
4545 @Test ( " If stringsdict file is valid, dictionary will be returned. " )
46- func extractStringsDictValue_positive ( ) throws {
46+ func extractPluralValue_positive ( ) throws {
4747 let sut = XMMigrator ( sourceLanguage: " " , paths: [ ] , outputPath: " " , verbose: false )
4848 let url = try #require( Bundle . module. url ( forResource: " Localizable " , withExtension: " stringsdict " , subdirectory: " Migrator " ) )
49- let actual = sut. extractStringsDictValue ( from: url)
49+ let actual = sut. extractPluralValue ( from: url)
5050 let expect : [ String : [ String : String ] ] = [
5151 " %lld item(s) " : [
5252 " zero " : " %lld item " ,
@@ -101,22 +101,22 @@ struct XMMigratorTests {
101101 StringsData (
102102 tableName: " Localizable " ,
103103 language: " full " ,
104- values : [
105- " \" Hello %@ \" " : . simple ( " \" Hello %@ \" " ) ,
106- " Count = %lld " : . simple ( " Count = %lld " ) ,
107- " key " : . simple ( " value " ) ,
108- " path " : . simple ( " / " ) ,
104+ items : [
105+ . init ( key : " \" Hello %@ \" " , value : . singular ( " \" Hello %@ \" " ) ) ,
106+ . init ( key : " Count = %lld " , value : . singular ( " Count = %lld " ) ) ,
107+ . init ( key : " key " , value : . singular ( " value " ) ) ,
108+ . init ( key : " path " , value : . singular ( " / " ) ) ,
109109 ]
110110 ) ,
111111 StringsData (
112112 tableName: " Localizable " ,
113113 language: " full " ,
114- values : [
115- " %lld item(s) " : . plural( [
116- " other " : " %lld items " ,
117- " one " : " %lld item " ,
118- " zero " : " %lld item " ,
119- ] ) ,
114+ items : [
115+ . init ( key : " %lld item(s) " , value : . plural( [
116+ . init ( rule : . one , value : " %lld item " ) ,
117+ . init ( rule : . other , value : " %lld items " ) ,
118+ . init ( rule : . zero, value : " %lld item " ) ,
119+ ] ) ) ,
120120 ]
121121 ) ,
122122 ]
@@ -126,21 +126,21 @@ struct XMMigratorTests {
126126 @Test ( " StringsData array is classified by table name. " )
127127 func classifyStringsData_positive( ) throws {
128128 let sut = XMMigrator ( sourceLanguage: " " , paths: [ ] , outputPath: " " , verbose: false )
129- let input : [ StringsData ] = [
130- StringsData ( tableName: " Module1 " , language: " en " , values : [ : ] ) ,
131- StringsData ( tableName: " Module1 " , language: " ja " , values : [ : ] ) ,
132- StringsData ( tableName: " Module2 " , language: " en " , values : [ : ] ) ,
133- StringsData ( tableName: " Module2 " , language: " ja " , values : [ : ] ) ,
129+ let input = [
130+ StringsData ( tableName: " Module1 " , language: " en " , items : [ ] ) ,
131+ StringsData ( tableName: " Module1 " , language: " ja " , items : [ ] ) ,
132+ StringsData ( tableName: " Module2 " , language: " en " , items : [ ] ) ,
133+ StringsData ( tableName: " Module2 " , language: " ja " , items : [ ] ) ,
134134 ]
135135 let actual = sut. classifyStringsData ( with: input)
136136 let expect = [
137137 " Module1 " : [
138- StringsData ( tableName: " Module1 " , language: " en " , values : [ : ] ) ,
139- StringsData ( tableName: " Module1 " , language: " ja " , values : [ : ] ) ,
138+ StringsData ( tableName: " Module1 " , language: " en " , items : [ ] ) ,
139+ StringsData ( tableName: " Module1 " , language: " ja " , items : [ ] ) ,
140140 ] ,
141141 " Module2 " : [
142- StringsData ( tableName: " Module2 " , language: " en " , values : [ : ] ) ,
143- StringsData ( tableName: " Module2 " , language: " ja " , values : [ : ] ) ,
142+ StringsData ( tableName: " Module2 " , language: " en " , items : [ ] ) ,
143+ StringsData ( tableName: " Module2 " , language: " ja " , items : [ ] ) ,
144144 ]
145145 ]
146146 #expect( actual == expect)
@@ -149,66 +149,66 @@ struct XMMigratorTests {
149149 @Test ( " StringsData array is converted to XCStrings. " )
150150 func convertToXCStrings_positive( ) throws {
151151 let sut = XMMigrator ( sourceLanguage: " test " , paths: [ ] , outputPath: " " , verbose: false )
152- let input : [ StringsData ] = [
152+ let input = [
153153 StringsData (
154154 tableName: " Module1 " ,
155155 language: " en " ,
156- values : [
157- " \" Hello %@ \" " : . simple ( " \" Hello %@ \" " ) ,
158- " Count = %lld " : . simple ( " Count = %lld " ) ,
159- " language " : . simple ( " English " ) ,
160- " path " : . simple ( " / " ) ,
161- " %lld item(s) " : . plural( [
162- " one " : " %lld item " ,
163- " zero " : " %lld item " ,
164- " other " : " %lld items " ,
165- ] ) ,
156+ items : [
157+ . init ( key : " \" Hello %@ \" " , value : . singular ( " \" Hello %@ \" " ) ) ,
158+ . init ( key : " Count = %lld " , value : . singular ( " Count = %lld " ) ) ,
159+ . init ( key : " language " , value : . singular ( " English " ) ) ,
160+ . init ( key : " path " , value : . singular ( " / " ) ) ,
161+ . init ( key : " %lld item(s) " , value : . plural( [
162+ . init ( rule : . one, value : " %lld item " ) ,
163+ . init ( rule : . other , value : " %lld items " ) ,
164+ . init ( rule : . zero , value : " %lld item " ) ,
165+ ] ) ) ,
166166 ]
167167 ) ,
168168 StringsData (
169169 tableName: " Module1 " ,
170170 language: " ja " ,
171- values : [
172- " \" Hello %@ \" " : . simple ( " 「こんにちは%@」 " ) ,
173- " Count = %lld " : . simple ( " カウント=%lld " ) ,
174- " language " : . simple ( " 日本語 " ) ,
175- " path " : . simple ( " / " ) ,
176- " %lld item(s) " : . plural( [
177- " zero " : " %lld個 " ,
178- " other " : " %lld個 " ,
179- ] ) ,
171+ items : [
172+ . init ( key : " \" Hello %@ \" " , value : . singular ( " 「こんにちは%@」 " ) ) ,
173+ . init ( key : " Count = %lld " , value : . singular ( " カウント=%lld " ) ) ,
174+ . init ( key : " language " , value : . singular ( " 日本語 " ) ) ,
175+ . init ( key : " path " , value : . singular ( " / " ) ) ,
176+ . init ( key : " %lld item(s) " , value : . plural( [
177+ . init ( rule : . other , value : " %lld個 " ) ,
178+ . init ( rule : . zero , value : " %lld個 " ) ,
179+ ] ) ) ,
180180 ]
181181 ) ,
182182 ]
183183 let actual = sut. convertToXCStrings ( from: input)
184184 let expect = XCStrings (
185185 sourceLanguage: " test " ,
186186 strings: [
187- " \" Hello %@ \" " : Strings ( localizations: [
188- " en " : Localization ( stringUnit: . init( value: " \" Hello %@ \" " ) ) ,
189- " ja " : Localization ( stringUnit: . init( value: " 「こんにちは%@」 " ) ) ,
187+ " \" Hello %@ \" " : . init ( localizations: [
188+ " en " : . stringUnit( . init( value: " \" Hello %@ \" " ) ) ,
189+ " ja " : . stringUnit( . init( value: " 「こんにちは%@」 " ) ) ,
190190 ] ) ,
191- " Count = %lld " : Strings ( localizations: [
192- " en " : Localization ( stringUnit: . init( value: " Count = %lld " ) ) ,
193- " ja " : Localization ( stringUnit: . init( value: " カウント=%lld " ) ) ,
191+ " Count = %lld " : . init ( localizations: [
192+ " en " : . stringUnit( . init( value: " Count = %lld " ) ) ,
193+ " ja " : . stringUnit( . init( value: " カウント=%lld " ) ) ,
194194 ] ) ,
195- " language " : Strings ( localizations: [
196- " en " : Localization ( stringUnit: . init( value: " English " ) ) ,
197- " ja " : Localization ( stringUnit: . init( value: " 日本語 " ) ) ,
195+ " language " : . init ( localizations: [
196+ " en " : . stringUnit( . init( value: " English " ) ) ,
197+ " ja " : . stringUnit( . init( value: " 日本語 " ) ) ,
198198 ] ) ,
199- " path " : Strings ( localizations: [
200- " en " : Localization ( stringUnit: . init( value: " / " ) ) ,
201- " ja " : Localization ( stringUnit: . init( value: " / " ) ) ,
199+ " path " : XCStrings . Strings ( localizations: [
200+ " en " : . stringUnit( . init( value: " / " ) ) ,
201+ " ja " : . stringUnit( . init( value: " / " ) ) ,
202202 ] ) ,
203- " %lld item(s) " : Strings ( localizations: [
204- " en " : Localization ( variations: . init( plural: [
205- " one " : PluralVariation ( stringUnit: . init( value: " %lld item " ) ) ,
206- " zero " : PluralVariation ( stringUnit: . init( value: " %lld item " ) ) ,
207- " other " : PluralVariation ( stringUnit: . init( value: " %lld items " ) ) ,
203+ " %lld item(s) " : . init ( localizations: [
204+ " en " : . variations( . init( plural: [
205+ " one " : . init ( stringUnit: . init( value: " %lld item " ) ) ,
206+ " zero " : . init ( stringUnit: . init( value: " %lld item " ) ) ,
207+ " other " : . init ( stringUnit: . init( value: " %lld items " ) ) ,
208208 ] ) ) ,
209- " ja " : Localization ( variations: . init( plural: [
210- " zero " : PluralVariation ( stringUnit: . init( value: " %lld個 " ) ) ,
211- " other " : PluralVariation ( stringUnit: . init( value: " %lld個 " ) ) ,
209+ " ja " : . variations( . init( plural: [
210+ " zero " : . init ( stringUnit: . init( value: " %lld個 " ) ) ,
211+ " other " : . init ( stringUnit: . init( value: " %lld個 " ) ) ,
212212 ] ) ) ,
213213 ] ) ,
214214 ] ,
@@ -248,31 +248,31 @@ struct XMMigratorTests {
248248 let input = XCStrings (
249249 sourceLanguage: " test " ,
250250 strings: [
251- " \" Hello %@ \" " : Strings ( localizations: [
252- " en " : Localization ( stringUnit: StringUnit ( value: " \" Hello %@ \" " ) ) ,
253- " ja " : Localization ( stringUnit: StringUnit ( value: " 「こんにちは%@」 " ) ) ,
251+ " \" Hello %@ \" " : . init ( localizations: [
252+ " en " : . stringUnit( . init ( value: " \" Hello %@ \" " ) ) ,
253+ " ja " : . stringUnit( . init ( value: " 「こんにちは%@」 " ) ) ,
254254 ] ) ,
255- " Count = %lld " : Strings ( localizations: [
256- " en " : Localization ( stringUnit: StringUnit ( value: " Count = %lld " ) ) ,
257- " ja " : Localization ( stringUnit: StringUnit ( value: " カウント=%lld " ) ) ,
255+ " Count = %lld " : . init ( localizations: [
256+ " en " : . stringUnit( . init ( value: " Count = %lld " ) ) ,
257+ " ja " : . stringUnit( . init ( value: " カウント=%lld " ) ) ,
258258 ] ) ,
259- " language " : Strings ( localizations: [
260- " en " : Localization ( stringUnit: StringUnit ( value: " English " ) ) ,
261- " ja " : Localization ( stringUnit: StringUnit ( value: " 日本語 " ) ) ,
259+ " language " : . init ( localizations: [
260+ " en " : . stringUnit( . init ( value: " English " ) ) ,
261+ " ja " : . stringUnit( . init ( value: " 日本語 " ) ) ,
262262 ] ) ,
263- " path " : Strings ( localizations: [
264- " en " : Localization ( stringUnit: StringUnit ( value: " / " ) ) ,
265- " ja " : Localization ( stringUnit: StringUnit ( value: " / " ) ) ,
263+ " path " : . init ( localizations: [
264+ " en " : . stringUnit( . init ( value: " / " ) ) ,
265+ " ja " : . stringUnit( . init ( value: " / " ) ) ,
266266 ] ) ,
267- " %lld item(s) " : Strings ( localizations: [
268- " en " : Localization ( variations: . init( plural: [
269- " one " : PluralVariation ( stringUnit: . init( value: " %lld item " ) ) ,
270- " zero " : PluralVariation ( stringUnit: . init( value: " %lld item " ) ) ,
271- " other " : PluralVariation ( stringUnit: . init( value: " %lld items " ) ) ,
267+ " %lld item(s) " : . init ( localizations: [
268+ " en " : . variations( . init( plural: [
269+ " one " : . init ( stringUnit: . init( value: " %lld item " ) ) ,
270+ " zero " : . init ( stringUnit: . init( value: " %lld item " ) ) ,
271+ " other " : . init ( stringUnit: . init( value: " %lld items " ) ) ,
272272 ] ) ) ,
273- " ja " : Localization ( variations: . init( plural: [
274- " zero " : PluralVariation ( stringUnit: . init( value: " %lld個 " ) ) ,
275- " other " : PluralVariation ( stringUnit: . init( value: " %lld個 " ) ) ,
273+ " ja " : . variations( . init( plural: [
274+ " zero " : . init ( stringUnit: . init( value: " %lld個 " ) ) ,
275+ " other " : . init ( stringUnit: . init( value: " %lld個 " ) ) ,
276276 ] ) ) ,
277277 ] ) ,
278278 ] ,
@@ -299,31 +299,31 @@ struct XMMigratorTests {
299299 let input = XCStrings (
300300 sourceLanguage: " test " ,
301301 strings: [
302- " \" Hello %@ \" " : Strings ( localizations: [
303- " en " : Localization ( stringUnit: StringUnit ( value: " \" Hello %@ \" " ) ) ,
304- " ja " : Localization ( stringUnit: StringUnit ( value: " 「こんにちは%@」 " ) ) ,
302+ " \" Hello %@ \" " : . init ( localizations: [
303+ " en " : . stringUnit( . init ( value: " \" Hello %@ \" " ) ) ,
304+ " ja " : . stringUnit( . init ( value: " 「こんにちは%@」 " ) ) ,
305305 ] ) ,
306- " Count = %lld " : Strings ( localizations: [
307- " en " : Localization ( stringUnit: StringUnit ( value: " Count = %lld " ) ) ,
308- " ja " : Localization ( stringUnit: StringUnit ( value: " カウント=%lld " ) ) ,
306+ " Count = %lld " : . init ( localizations: [
307+ " en " : . stringUnit( . init ( value: " Count = %lld " ) ) ,
308+ " ja " : . stringUnit( . init ( value: " カウント=%lld " ) ) ,
309309 ] ) ,
310- " language " : Strings ( localizations: [
311- " en " : Localization ( stringUnit: StringUnit ( value: " English " ) ) ,
312- " ja " : Localization ( stringUnit: StringUnit ( value: " 日本語 " ) ) ,
310+ " language " : . init ( localizations: [
311+ " en " : . stringUnit( . init ( value: " English " ) ) ,
312+ " ja " : . stringUnit( . init ( value: " 日本語 " ) ) ,
313313 ] ) ,
314- " path " : Strings ( localizations: [
315- " en " : Localization ( stringUnit: StringUnit ( value: " / " ) ) ,
316- " ja " : Localization ( stringUnit: StringUnit ( value: " / " ) ) ,
314+ " path " : . init ( localizations: [
315+ " en " : . stringUnit( . init ( value: " / " ) ) ,
316+ " ja " : . stringUnit( . init ( value: " / " ) ) ,
317317 ] ) ,
318- " %lld item(s) " : Strings ( localizations: [
319- " en " : Localization ( variations: . init( plural: [
320- " one " : PluralVariation ( stringUnit: . init( value: " %lld item " ) ) ,
321- " zero " : PluralVariation ( stringUnit: . init( value: " %lld item " ) ) ,
322- " other " : PluralVariation ( stringUnit: . init( value: " %lld items " ) ) ,
318+ " %lld item(s) " : . init ( localizations: [
319+ " en " : . variations( . init( plural: [
320+ " one " : . init ( stringUnit: . init( value: " %lld item " ) ) ,
321+ " zero " : . init ( stringUnit: . init( value: " %lld item " ) ) ,
322+ " other " : . init ( stringUnit: . init( value: " %lld items " ) ) ,
323323 ] ) ) ,
324- " ja " : Localization ( variations: . init( plural: [
325- " zero " : PluralVariation ( stringUnit: . init( value: " %lld個 " ) ) ,
326- " other " : PluralVariation ( stringUnit: . init( value: " %lld個 " ) ) ,
324+ " ja " : . variations( . init( plural: [
325+ " zero " : . init ( stringUnit: . init( value: " %lld個 " ) ) ,
326+ " other " : . init ( stringUnit: . init( value: " %lld個 " ) ) ,
327327 ] ) ) ,
328328 ] ) ,
329329 ] ,
0 commit comments