@@ -5,26 +5,44 @@ const messages = {
5
5
empty : 'test:\n' ,
6
6
numeric : 'test: 1.0.0' ,
7
7
lowercase : 'test: subject' ,
8
+ lowercase_unicode : 'test: тема' , // Bulgarian for `subject`
8
9
mixedcase : 'test: sUbJeCt' ,
9
10
uppercase : 'test: SUBJECT' ,
11
+ uppercase_unicode : 'test: ÛNDERWERP' , // Frisian for `SUBJECT`
10
12
camelcase : 'test: subJect' ,
13
+ camelcase_unicode : 'test: θέΜα' , // Greek for `subJect`
11
14
kebabcase : 'test: sub-ject' ,
15
+ kebabcase_unicode : 'test: áb-har' , // Irish for `sub-ject`
12
16
pascalcase : 'test: SubJect' ,
17
+ pascalcase_unicode : 'test: ТақыРып' , // Kazakh for `SubJect`
13
18
snakecase : 'test: sub_ject' ,
19
+ snakecase_unicode : 'test: сэ_дэв' , // Mongolian for `sub_ject`
14
20
startcase : 'test: Sub Ject' ,
21
+ startcase_unicode : 'test: Äm Ne' , // Swedish for `Sub Ject`
22
+ sentencecase : 'test: Sub ject' ,
23
+ sentencecase_unicode : 'test: Мав зуъ' , // Tajik for `Sub ject`
15
24
} ;
16
25
17
26
const parsed = {
18
27
empty : parse ( messages . empty ) ,
19
28
numeric : parse ( messages . numeric ) ,
20
29
lowercase : parse ( messages . lowercase ) ,
30
+ lowercase_unicode : parse ( messages . lowercase_unicode ) ,
21
31
mixedcase : parse ( messages . mixedcase ) ,
22
32
uppercase : parse ( messages . uppercase ) ,
33
+ uppercase_unicode : parse ( messages . uppercase_unicode ) ,
23
34
camelcase : parse ( messages . camelcase ) ,
35
+ camelcase_unicode : parse ( messages . camelcase_unicode ) ,
24
36
kebabcase : parse ( messages . kebabcase ) ,
37
+ kebabcase_unicode : parse ( messages . kebabcase_unicode ) ,
25
38
pascalcase : parse ( messages . pascalcase ) ,
39
+ pascalcase_unicode : parse ( messages . pascalcase_unicode ) ,
26
40
snakecase : parse ( messages . snakecase ) ,
41
+ snakecase_unicode : parse ( messages . snakecase_unicode ) ,
27
42
startcase : parse ( messages . startcase ) ,
43
+ startcase_unicode : parse ( messages . startcase_unicode ) ,
44
+ sentencecase : parse ( messages . sentencecase ) ,
45
+ sentencecase_unicode : parse ( messages . sentencecase_unicode ) ,
28
46
} ;
29
47
30
48
test ( 'with empty subject should succeed for "never lowercase"' , async ( ) => {
@@ -63,6 +81,16 @@ test('with lowercase subject should succeed for "always lowercase"', async () =>
63
81
expect ( actual ) . toEqual ( expected ) ;
64
82
} ) ;
65
83
84
+ test ( 'with lowercase unicode subject should fail for "always uppercase"' , async ( ) => {
85
+ const [ actual ] = subjectCase (
86
+ await parsed . lowercase_unicode ,
87
+ 'always' ,
88
+ 'upper-case'
89
+ ) ;
90
+ const expected = false ;
91
+ expect ( actual ) . toEqual ( expected ) ;
92
+ } ) ;
93
+
66
94
test ( 'with mixedcase subject should succeed for "never lowercase"' , async ( ) => {
67
95
const [ actual ] = subjectCase ( await parsed . mixedcase , 'never' , 'lowercase' ) ;
68
96
const expected = true ;
@@ -93,12 +121,22 @@ test('with uppercase subject should fail for "never uppercase"', async () => {
93
121
expect ( actual ) . toEqual ( expected ) ;
94
122
} ) ;
95
123
96
- test ( 'with lowercase subject should succeed for "always uppercase"' , async ( ) => {
124
+ test ( 'with uppercase subject should succeed for "always uppercase"' , async ( ) => {
97
125
const [ actual ] = subjectCase ( await parsed . uppercase , 'always' , 'uppercase' ) ;
98
126
const expected = true ;
99
127
expect ( actual ) . toEqual ( expected ) ;
100
128
} ) ;
101
129
130
+ test ( 'with uppercase unicode subject should fail for "always lowercase"' , async ( ) => {
131
+ const [ actual ] = subjectCase (
132
+ await parsed . uppercase_unicode ,
133
+ 'always' ,
134
+ 'lower-case'
135
+ ) ;
136
+ const expected = false ;
137
+ expect ( actual ) . toEqual ( expected ) ;
138
+ } ) ;
139
+
102
140
test ( 'with camelcase subject should fail for "always uppercase"' , async ( ) => {
103
141
const [ actual ] = subjectCase ( await parsed . camelcase , 'always' , 'uppercase' ) ;
104
142
const expected = false ;
@@ -135,6 +173,26 @@ test('with camelcase subject should succeed for "always camelcase"', async () =>
135
173
expect ( actual ) . toEqual ( expected ) ;
136
174
} ) ;
137
175
176
+ test ( 'with camelcase unicode subject should fail for "always sentencecase"' , async ( ) => {
177
+ const [ actual ] = subjectCase (
178
+ await parsed . camelcase_unicode ,
179
+ 'always' ,
180
+ 'sentence-case'
181
+ ) ;
182
+ const expected = false ;
183
+ expect ( actual ) . toEqual ( expected ) ;
184
+ } ) ;
185
+
186
+ test ( 'with kebabcase unicode subject should fail for "always camelcase"' , async ( ) => {
187
+ const [ actual ] = subjectCase (
188
+ await parsed . kebabcase_unicode ,
189
+ 'always' ,
190
+ 'camel-case'
191
+ ) ;
192
+ const expected = false ;
193
+ expect ( actual ) . toEqual ( expected ) ;
194
+ } ) ;
195
+
138
196
test ( 'with pascalcase subject should fail for "always uppercase"' , async ( ) => {
139
197
const [ actual ] = subjectCase ( await parsed . pascalcase , 'always' , 'uppercase' ) ;
140
198
const expected = false ;
@@ -175,6 +233,16 @@ test('with pascalcase subject should fail for "always camelcase"', async () => {
175
233
expect ( actual ) . toEqual ( expected ) ;
176
234
} ) ;
177
235
236
+ test ( 'with pascalcase unicode subject should fail for "always uppercase"' , async ( ) => {
237
+ const [ actual ] = subjectCase (
238
+ await parsed . pascalcase_unicode ,
239
+ 'always' ,
240
+ 'upper-case'
241
+ ) ;
242
+ const expected = false ;
243
+ expect ( actual ) . toEqual ( expected ) ;
244
+ } ) ;
245
+
178
246
test ( 'with snakecase subject should fail for "always uppercase"' , async ( ) => {
179
247
const [ actual ] = subjectCase ( await parsed . snakecase , 'always' , 'uppercase' ) ;
180
248
const expected = false ;
@@ -211,6 +279,16 @@ test('with snakecase subject should fail for "always camelcase"', async () => {
211
279
expect ( actual ) . toEqual ( expected ) ;
212
280
} ) ;
213
281
282
+ test ( 'with snakecase unicode subject should fail for "never lowercase"' , async ( ) => {
283
+ const [ actual ] = subjectCase (
284
+ await parsed . snakecase_unicode ,
285
+ 'never' ,
286
+ 'lower-case'
287
+ ) ;
288
+ const expected = false ;
289
+ expect ( actual ) . toEqual ( expected ) ;
290
+ } ) ;
291
+
214
292
test ( 'with startcase subject should fail for "always uppercase"' , async ( ) => {
215
293
const [ actual ] = subjectCase ( await parsed . startcase , 'always' , 'uppercase' ) ;
216
294
const expected = false ;
@@ -253,6 +331,66 @@ test('with startcase subject should succeed for "always startcase"', async () =>
253
331
expect ( actual ) . toEqual ( expected ) ;
254
332
} ) ;
255
333
334
+ test ( 'with startcase unicode subject should fail for "always pascalcase"' , async ( ) => {
335
+ const [ actual ] = subjectCase (
336
+ await parsed . startcase_unicode ,
337
+ 'always' ,
338
+ 'pascal-case'
339
+ ) ;
340
+ const expected = false ;
341
+ expect ( actual ) . toEqual ( expected ) ;
342
+ } ) ;
343
+
344
+ test ( 'with sentencecase subject should succeed for "always sentence-case"' , async ( ) => {
345
+ const [ actual ] = subjectCase (
346
+ await parsed . sentencecase ,
347
+ 'always' ,
348
+ 'sentence-case'
349
+ ) ;
350
+ const expected = true ;
351
+ expect ( actual ) . toEqual ( expected ) ;
352
+ } ) ;
353
+
354
+ test ( 'with sentencecase subject should fail for "never sentencecase"' , async ( ) => {
355
+ const [ actual ] = subjectCase (
356
+ await parsed . sentencecase ,
357
+ 'never' ,
358
+ 'sentence-case'
359
+ ) ;
360
+ const expected = false ;
361
+ expect ( actual ) . toEqual ( expected ) ;
362
+ } ) ;
363
+
364
+ test ( 'with sentencecase subject should fail for "always pascalcase"' , async ( ) => {
365
+ const [ actual ] = subjectCase (
366
+ await parsed . sentencecase ,
367
+ 'always' ,
368
+ 'pascal-case'
369
+ ) ;
370
+ const expected = false ;
371
+ expect ( actual ) . toEqual ( expected ) ;
372
+ } ) ;
373
+
374
+ test ( 'with sentencecase subject should succeed for "never camelcase"' , async ( ) => {
375
+ const [ actual ] = subjectCase (
376
+ await parsed . sentencecase ,
377
+ 'never' ,
378
+ 'camel-case'
379
+ ) ;
380
+ const expected = true ;
381
+ expect ( actual ) . toEqual ( expected ) ;
382
+ } ) ;
383
+
384
+ test ( 'with sentencecase unicode subject should fail for "always camelcase"' , async ( ) => {
385
+ const [ actual ] = subjectCase (
386
+ await parsed . sentencecase_unicode ,
387
+ 'always' ,
388
+ 'camel-case'
389
+ ) ;
390
+ const expected = false ;
391
+ expect ( actual ) . toEqual ( expected ) ;
392
+ } ) ;
393
+
256
394
test ( 'should use expected message with "always"' , async ( ) => {
257
395
const [ , message ] = subjectCase (
258
396
await parsed . uppercase ,
0 commit comments