summaryrefslogblamecommitdiffstats
path: root/swedish.test.c
blob: b3bd4a3c0f57ae1b237995aeb8bfa44b5557d4e6 (plain) (tree)
1
2
3
4
5
6
7
8
9
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
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
                                                         
                   

                                             
                      
 


                        
                      


                           







































































































































































































































































































































































































































































































































































































































































                                                                                                                         





          
                             
                          


                                             

                                                              









































                                                                                                                                      
                    



                                                                    

         
                                                         
                                             



                                                            




                                                                  
 
/* See LICENSE file for copyright and license details. */
#include "common.h"

#define F(FLAG) LIBNUMTEXT_N2T_SWEDISH_##FLAG
#define ORD F(ORDINAL)


static struct test {
	const char *num;
	size_t zeroes;
	const char *expect;
	uint32_t flags;
} tests[] = {
	{"0", 0, "noll", 0},
	{"+0", 0, "plus noll", 0},
	{"-0", 0, "minus noll", 0},
	{UNICODE_MINUS"0", 0, "minus noll", 0},
	{"0", 0, "nollte", ORD},
	{"+0", 0, "plus-nollte", ORD},
	{"-0", 0, "minus-nollte", ORD},
	{UNICODE_MINUS"0", 0, "minus-nollte", ORD},
	{"1", 0, "ett", 0},
	{"+1", 0, "plus ett", 0},
	{"-1", 0, "minus ett", 0},
	{UNICODE_MINUS"1", 0, "minus ett", 0},
	{"1", 0, "första", ORD},
	{"+1", 0, "plus-första", ORD},
	{"-1", 0, "minus-första", ORD},
	{UNICODE_MINUS"1", 0, "minus-första", ORD},
	{"2", 0, "två", 0},
	{"+2", 0, "plus två", 0},
	{"-2", 0, "minus två", 0},
	{UNICODE_MINUS"2", 0, "minus två", 0},
	{"2", 0, "andra", ORD},
	{"+2", 0, "plus-andra", ORD},
	{"-2", 0, "minus-andra", ORD},
	{UNICODE_MINUS"2", 0, "minus-andra", ORD},
	{"3", 0, "tre", 0},
	{"+3", 0, "plus tre", 0},
	{"-3", 0, "minus tre", 0},
	{UNICODE_MINUS"3", 0, "minus tre", 0},
	{"3", 0, "tredje", ORD},
	{"+3", 0, "plus-tredje", ORD},
	{"-3", 0, "minus-tredje", ORD},
	{UNICODE_MINUS"3", 0, "minus-tredje", ORD},
	{"4", 0, "fyra", 0},
	{"4", 0, "fjärde", ORD},
	{"5", 0, "fem", 0},
	{"5", 0, "femte", ORD},
	{"6", 0, "sex", 0},
	{"6", 0, "sjätte", ORD},
	{"7", 0, "sju", 0},
	{"7", 0, "sjunde", ORD},
	{"8", 0, "åtta", 0},
	{"8", 0, "åttonde", ORD},
	{"9", 0, "nio", 0},
	{"9", 0, "nionde", ORD},
	{"10", 0, "tio", 0},
	{"10", 0, "tionde", ORD},
	{"11", 0, "elva", 0},
	{"11", 0, "elfte", ORD},
	{"12", 0, "tolv", 0},
	{"12", 0, "tolfte", ORD},
	{"13", 0, "tretton", 0},
	{"13", 0, "trettonde", ORD},
	{"14", 0, "fjorton", 0},
	{"14", 0, "fjortonde", ORD},
	{"15", 0, "femton", 0},
	{"15", 0, "femtonde", ORD},
	{"16", 0, "sexton", 0},
	{"16", 0, "sextonde", ORD},
	{"17", 0, "sjutton", 0},
	{"17", 0, "sjuttonde", ORD},
	{"18", 0, "arton", 0},
	{"18", 0, "artonde", ORD},
	{"19", 0, "nitton", 0},
	{"19", 0, "nittonde", ORD},
	{"20", 0, "tjugo", 0},
	{"20", 0, "tjugonde", ORD},
	{"21", 0, "tjugoett", 0},
	{"21", 0, "tjugoförsta", ORD},
	{"22", 0, "tjugotvå", 0},
	{"22", 0, "tjugoandra", ORD},
	{"23", 0, "tjugotre", 0},
	{"23", 0, "tjugotredje", ORD},
	{"28", 0, "tjugoåtta", 0},
	{"28", 0, "tjugoåttonde", ORD},
	{"29", 0, "tjugonio", 0},
	{"29", 0, "tjugonionde", ORD},
	{"30", 0, "trettio", 0},
	{"30", 0, "trettionde", ORD},
	{"31", 0, "trettioett", 0},
	{"31", 0, "trettioförsta", ORD},
	{"32", 0, "trettiotvå", 0},
	{"32", 0, "trettioandra", ORD},
	{"40", 0, "fyrtio", 0},
	{"40", 0, "fyrtionde", ORD},
	{"43", 0, "fyrtiotre", 0},
	{"43", 0, "fyrtiotredje", ORD},
	{"50", 0, "femtio", 0},
	{"50", 0, "femtionde", ORD},
	{"54", 0, "femtiofyra", 0},
	{"54", 0, "femtiofjärde", ORD},
	{"60", 0, "sextio", 0},
	{"60", 0, "sextionde", ORD},
	{"65", 0, "sextiofem", 0},
	{"65", 0, "sextiofemte", ORD},
	{"70", 0, "sjuttio", 0},
	{"70", 0, "sjuttionde", ORD},
	{"76", 0, "sjuttiosex", 0},
	{"76", 0, "sjuttiosjätte", ORD},
	{"80", 0, "åttio", 0},
	{"80", 0, "åttionde", ORD},
	{"87", 0, "åttiosju", 0},
	{"87", 0, "åttiosjunde", ORD},
	{"90", 0, "nittio", 0},
	{"90", 0, "nittionde", ORD},
	{"98", 0, "nittioåtta", 0},
	{"98", 0, "nittioåttonde", ORD},
	{"99", 0, "nittionio", 0},
	{"99", 0, "nittionionde", ORD},
	{"100", 0, "etthundra", 0},
	{"100", 0, "etthundrade", ORD},
	{"101", 0, "etthundraett", 0},
	{"101", 0, "etthundraförsta", ORD},
	{"110", 0, "etthundratio", 0},
	{"110", 0, "etthundrationde", ORD},
	{"111", 0, "etthundraelva", 0},
	{"111", 0, "etthundraelfte", ORD},
	{"120", 0, "etthundratjugo", 0},
	{"120", 0, "etthundratjugonde", ORD},
	{"121", 0, "etthundratjugoett", 0},
	{"121", 0, "etthundratjugoförsta", ORD},
	{"999", 0, "niohundranittionio", 0},
	{"999", 0, "niohundranittionionde", ORD},
	{"1000", 0, "ettusen", 0},
	{"1000", 0, "ettusende", ORD},
	{"1001", 0, "ettusenett", 0},
	{"1001", 0, "ettusenförsta", ORD},
	{"1002", 0, "ettusentvå", 0},
	{"1002", 0, "ettusenandra", ORD},
	{"1100", 0, "ettusenetthundra", 0},
	{"1100", 0, "ettusenetthundrade", ORD},
	{"1101", 0, "ettusenetthundraett", 0},
	{"1101", 0, "ettusenetthundraförsta", ORD},
	{"1123", 0, "ettusenetthundratjugotre", 0},
	{"1123", 0, "ettusenetthundratjugotredje", ORD},
	{"2000", 0, "tvåtusen", 0},
	{"2000", 0, "tvåtusende", ORD},
	{"3000", 0, "tretusen", 0},
	{"3000", 0, "tretusende", ORD},
	{"4000", 0, "fyratusen", 0},
	{"4000", 0, "fyratusende", ORD},
	{"5000", 0, "femtusen", 0},
	{"5000", 0, "femtusende", ORD},
	{"8000", 0, "åttatusen", 0},
	{"8000", 0, "åttatusende", ORD},
	{"9000", 0, "niotusen", 0},
	{"9000", 0, "niotusende", ORD},
	{"10000", 0, "tiotusen", 0},
	{"10000", 0, "tiotusende", ORD},
	{"11000", 0, "elvatusen", 0},
	{"11000", 0, "elvatusende", ORD},
	{"20000", 0, "tjugotusen", 0},
	{"20000", 0, "tjugotusende", ORD},
	{"21000", 0, "tjugoettusen", 0}, /* "tjugoentusen" is actually incorrect (it's colloquial) */
	{"30000", 0, "trettiotusen", 0},
	{"31000", 0, "trettioettusen", 0},
	{"32000", 0, "trettiotvåtusen", 0},
	{"40001", 0, "fyrtiotusenett", 0},
	{"40001", 0, "fyrtiotusenförsta", ORD},
	{"40010", 0, "fyrtiotusentio", 0},
	{"40010", 0, "fyrtiotusentionde", ORD},
	{"40012", 0, "fyrtiotusentolv", 0},
	{"40012", 0, "fyrtiotusentolfte", ORD},
	{"50100", 0, "femtiotusenetthundra", 0},
	{"50100", 0, "femtiotusenetthundrade", ORD},
	{"50200", 0, "femtiotusentvåhundra", 0},
	{"50200", 0, "femtiotusentvåhundrade", ORD},
	{"50210", 0, "femtiotusentvåhundratio", 0},
	{"50240", 0, "femtiotusentvåhundrafyrtio", 0},
	{"50240", 0, "femtiotusentvåhundrafyrtionde", ORD},
	{"50248", 0, "femtiotusentvåhundrafyrtioåtta", 0},
	{"50248", 0, "femtiotusentvåhundrafyrtioåttonde", ORD},
	{"100000", 0, "etthundratusen", 0},
	{"100000", 0, "etthundratusende", ORD},
	{"100001", 0, "etthundratusenett", 0},
	{"100001", 0, "etthundratusenförsta", ORD},
	{"100014", 0, "etthundratusenfjorton", 0},
	{"100014", 0, "etthundratusenfjortonde", ORD},
	{"100020", 0, "etthundratusentjugo", 0},
	{"100020", 0, "etthundratusentjugonde", ORD},
	{"100026", 0, "etthundratusentjugosex", 0},
	{"100026", 0, "etthundratusentjugosjätte", ORD},
	{"100100", 0, "etthundratusenetthundra", 0},
	{"100100", 0, "etthundratusenetthundrade", ORD},
	{"100200", 0, "etthundratusentvåhundra", 0},
	{"100200", 0, "etthundratusentvåhundrade", ORD},
	{"100210", 0, "etthundratusentvåhundratio", 0},
	{"100247", 0, "etthundratusentvåhundrafyrtiosju", 0},
	{"101000", 0, "etthundraettusen", 0},
	{"101000", 0, "etthundraettusende", ORD},
	{"102000", 0, "etthundratvåtusen", 0},
	{"110000", 0, "etthundratiotusen", 0},
	{"118000", 0, "etthundraartontusen", 0},
	{"130000", 0, "etthundratrettiotusen", 0},
	{"182000", 0, "etthundraåttiotvåtusen", 0},
	{"182000", 0, "etthundraåttiotvåtusende", ORD},
	{"300000", 0, "trehundratusen", 0},
	{"300000", 0, "trehundratusende", ORD},
	{"1""000000", 0, "enmiljon", 0},
	{"1""000000", 0, "enmiljonte", ORD},
	{"1""200000", 0, "enmiljontvåhundratusen", 0},
	{"1""200000", 0, "enmiljontvåhundratusende", ORD},
	{"2""000000", 0, "tvåmiljoner", 0},
	{"2""000000", 0, "tvåmiljonte", ORD},
	{"3""000000", 0, "tremiljoner", 0},
	{"5""000000", 0, "femmiljoner", 0},
	{"5""000000", 0, "femmiljonte", ORD},
	{"5""010000", 0, "femmiljonertiotusen", 0},
	{"5""010000", 0, "femmiljonertiotusende", ORD},
	{"5""010100", 0, "femmiljonertiotusenetthundra", 0},
	{"5""010100", 0, "femmiljonertiotusenetthundrade", ORD},
	{"5""010111", 0, "femmiljonertiotusenetthundraelva", 0},
	{"5""010111", 0, "femmiljonertiotusenetthundraelfte", ORD},
	{"9""999999", 0, "niomiljonerniohundranittioniotusenniohundranittionio", 0},
	{"9""999999", 0, "niomiljonerniohundranittioniotusenniohundranittionionde", ORD},
	{"10""000000", 0, "tiomiljoner", 0},
	{"10""000000", 0, "tiomiljonte", ORD},
	{"11""000000", 0, "elvamiljoner", 0},
	{"11""000000", 0, "elvamiljonte", ORD},
	{"20""000000", 0, "tjugomiljoner", 0},
	{"20""000000", 0, "tjugomiljonte", ORD},
	{"100""000000", 0, "etthundramiljoner", 0},
	{"100""000000", 0, "etthundramiljonte", ORD},
	{"101""000000", 0, "etthundraenmiljoner", 0},
	{"102""000000", 0, "etthundratvåmiljoner", 0},
	{"112""000000", 0, "etthundratolvmiljoner", 0},
	{"160""000000", 0, "etthundrasextiomiljoner", 0},
	{"169""000000", 0, "etthundrasextioniomiljoner", 0},
	{"169""000000", 0, "etthundrasextioniomiljonte", ORD},
	{"200""000000", 0, "tvåhundramiljoner", 0},
	{"200""000000", 0, "tvåhundramiljonte", ORD},
	{"1000""000000", 0, "enmiljard", 0},
	{"1000""000000", 0, "enmiljarde", ORD},
	{"2000""000000", 0, "tvåmiljarder", 0},
	{"2000""000000", 0, "tvåmiljarde", ORD},
	{"20000""000000", 0, "tjugomiljarder", 0},
	{"21000""000000", 0, "tjugoenmiljarder", 0},
	{"100000""000000", 0, "etthundramiljarder", 0},
	{"101000""000000", 0, "etthundraenmiljarder", 0},
	{"101000""000000", 0, "etthundraenmiljarde", ORD},
	{"101001""000000", 0, "etthundraenmiljarderenmiljon", 0},
	{"101001""000000", 0, "etthundraenmiljarderenmiljonte", ORD},
	{"101100""000000", 0, "etthundraenmiljarderetthundramiljoner", 0},
	{"101100""000000", 0, "etthundraenmiljarderetthundramiljonte", ORD},
	{"1""000000""000000", 0, "enbiljon", 0},
	{"1""000000""000000", 0, "enbiljonte", ORD},
	{"1""001000""000000", 0, "enbiljonenmiljard", 0},
	{"1""001000""000000", 0, "enbiljonenmiljarde", ORD},
	{"1""001001""000000", 0, "enbiljonenmiljardenmiljon", 0},
	{"1""001001""000000", 0, "enbiljonenmiljardenmiljonte", ORD},
	{"1""001001""001000", 0, "enbiljonenmiljardenmiljonettusen", 0},
	{"1""001001""001000", 0, "enbiljonenmiljardenmiljonettusende", ORD},
	{"1""001001""001001", 0, "enbiljonenmiljardenmiljonettusenett", 0},
	{"1""001001""001001", 0, "enbiljonenmiljardenmiljonettusenförsta", ORD},
	{"2""000000""000000", 0, "tvåbiljoner", 0},
	{"2""000000""000000", 0, "tvåbiljonte", ORD},
	{"1000""000000""000000", 0, "enbiljard", 0},
	{"1000""000000""000000", 0, "enbiljarde", ORD},
	{"1", 3 * 6, "entriljon", 0},
	{"1", 3 * 6, "entriljonte", ORD},
	{"1000", 3 * 6, "entriljard", 0},
	{"1", 4 * 6, "enkvadriljon", 0},
	{"1", 5 * 6, "enkvintiljon", 0},
	{"1", 6 * 6, "ensextiljon", 0},
	{"1", 7 * 6, "enseptiljon", 0},
	{"1", 8 * 6, "enoktiljon", 0},
	{"1", 8 * 6, "enoktiljonte", ORD},
	{"1", 9 * 6, "ennoniljon", 0},
	{"1", 10 * 6, "endeciljon", 0},
	{"1", 11 * 6, "enundeciljon", 0},
	{"1", 12 * 6, "enduodeciljon", 0},
	{"1", 13 * 6, "entredeciljon", 0},
	{"1", 14 * 6, "enkvattuordeciljon", 0},
	{"1", 15 * 6, "enkvindeciljon", 0},
	{"1", 16 * 6, "ensedeciljon", 0},
	{"1", 17 * 6, "enseptendeciljon", 0},
	{"1", 18 * 6, "enoktodeciljon", 0},
	{"1", 19 * 6, "ennovendeciljon", 0},
	{"1", 20 * 6, "envigintiljon", 0},
	{"1", 21 * 6, "enunvigintiljon", 0},
	{"1", 22 * 6, "enduovigintiljon", 0},
	{"1", 23 * 6, "entresvigintiljon", 0},
	{"1", 24 * 6, "enkvattuorvigintiljon", 0},
	{"1", 25 * 6, "enkvinvigintiljon", 0},
	{"1", 26 * 6, "ensesvigintiljon", 0},
	{"1", 27 * 6, "enseptemvigintiljon", 0},
	{"1", 28 * 6, "enoktovigintiljon", 0},
	{"1", 29 * 6, "ennovemvigintiljon", 0},
	{"1", 30 * 6, "entrigintiljon", 0},
	{"1", 31 * 6, "enuntrigintiljon", 0},
	{"1", 32 * 6, "enduotrigintiljon", 0},
	{"1", 33 * 6, "entrestrigintiljon", 0},
	{"1", 34 * 6, "enkvattuortrigintiljon", 0},
	{"1", 35 * 6, "enkvintrigintiljon", 0},
	{"1", 36 * 6, "ensestrigintiljon", 0},
	{"1", 37 * 6, "enseptentrigintiljon", 0},
	{"1", 38 * 6, "enoktotrigintiljon", 0},
	{"1", 39 * 6, "ennoventrigintiljon", 0},
	{"1", 40 * 6, "enkvadragintiljon", 0},
	{"1", 41 * 6, "enunkvadragintiljon", 0},
	{"1", 42 * 6, "enduokvadragintiljon", 0},
	{"1", 43 * 6, "entreskvadragintiljon", 0},
	{"1", 44 * 6, "enkvattuorkvadragintiljon", 0},
	{"1", 45 * 6, "enkvinkvadragintiljon", 0},
	{"1", 46 * 6, "enseskvadragintiljon", 0},
	{"1", 47 * 6, "enseptenkvadragintiljon", 0},
	{"1", 48 * 6, "enoktokvadragintiljon", 0},
	{"1", 49 * 6, "ennovenkvadragintiljon", 0},
	{"1", 50 * 6, "enkvinkvagintiljon", 0},
	{"1", 51 * 6, "enunkvinkvagintiljon", 0},
	{"1", 52 * 6, "enduokvinkvagintiljon", 0},
	{"1", 53 * 6, "entreskvinkvagintiljon", 0},
	{"1", 54 * 6, "enkvattuorkvinkvagintiljon", 0},
	{"1", 55 * 6, "enkvinkvinkvagintiljon", 0},
	{"1", 56 * 6, "enseskvinkvagintiljon", 0},
	{"1", 57 * 6, "enseptenkvinkvagintiljon", 0},
	{"1", 58 * 6, "enoktokvinkvagintiljon", 0},
	{"1", 59 * 6, "ennovenkvinkvagintiljon", 0},
	{"1", 60 * 6, "ensexagintiljon", 0},
	{"1", 61 * 6, "enunsexagintiljon", 0},
	{"1", 62 * 6, "enduosexagintiljon", 0},
	{"1", 63 * 6, "entresexagintiljon", 0},
	{"1", 64 * 6, "enkvattuorsexagintiljon", 0},
	{"1", 65 * 6, "enkvinsexagintiljon", 0},
	{"1", 66 * 6, "ensesexagintiljon", 0},
	{"1", 67 * 6, "enseptensexagintiljon", 0},
	{"1", 68 * 6, "enoktosexagintiljon", 0},
	{"1", 69 * 6, "ennovensexagintiljon", 0},
	{"1", 70 * 6, "enseptuagintiljon", 0},
	{"1", 71 * 6, "enunseptuagintiljon", 0},
	{"1", 72 * 6, "enduoseptuagintiljon", 0},
	{"1", 73 * 6, "entreseptuagintiljon", 0},
	{"1", 74 * 6, "enkvattuorseptuagintiljon", 0},
	{"1", 75 * 6, "enkvinseptuagintiljon", 0},
	{"1", 76 * 6, "enseseptuagintiljon", 0},
	{"1", 77 * 6, "enseptenseptuagintiljon", 0},
	{"1", 78 * 6, "enoktoseptuagintiljon", 0},
	{"1", 79 * 6, "ennovenseptuagintiljon", 0},
	{"1", 80 * 6, "enoktogintiljon", 0},
	{"1", 81 * 6, "enunoktogintiljon", 0},
	{"1", 82 * 6, "enduooktogintiljon", 0},
	{"1", 83 * 6, "entresoktogintiljon", 0},
	{"1", 84 * 6, "enkvattuoroktogintiljon", 0},
	{"1", 85 * 6, "enkvinoktogintiljon", 0},
	{"1", 86 * 6, "ensexoktogintiljon", 0},
	{"1", 87 * 6, "enseptemoktogintiljon", 0},
	{"1", 88 * 6, "enoktooktogintiljon", 0},
	{"1", 89 * 6, "ennovemoktogintiljon", 0},
	{"1", 90 * 6, "ennonagintiljon", 0},
	{"1", 91 * 6, "enunnonagintiljon", 0},
	{"1", 92 * 6, "enduononagintiljon", 0},
	{"1", 93 * 6, "entrenonagintiljon", 0},
	{"1", 94 * 6, "enkvattuornonagintiljon", 0},
	{"1", 95 * 6, "enkvinnonagintiljon", 0},
	{"1", 96 * 6, "ensenonagintiljon", 0},
	{"1", 97 * 6, "enseptenonagintiljon", 0},
	{"1", 98 * 6, "enoktononagintiljon", 0},
	{"1", 99 * 6, "ennovenonagintiljon", 0},
	{"1", 100 * 6, "encentiljon", 0},
	{"1", 101 * 6, "enuncentiljon", 0},
	{"1", 102 * 6, "enduocentiljon", 0},
	{"1", 103 * 6, "entrescentiljon", 0},
	{"1", 104 * 6, "enkvattuorcentiljon", 0},
	{"1", 105 * 6, "enkvincentiljon", 0},
	{"1", 106 * 6, "ensexcentiljon", 0},
	{"1", 107 * 6, "enseptencentiljon", 0},
	{"1", 108 * 6, "enoktocentiljon", 0},
	{"1", 109 * 6, "ennovencentiljon", 0},
	{"1", 110 * 6, "endecicentiljon", 0},
	{"1", 120 * 6, "enviginticentiljon", 0},
	{"1", 130 * 6, "entrigintacentiljon", 0},
	{"1", 140 * 6, "enkvadragintacentiljon", 0},
	{"1", 150 * 6, "enkvinkvagintacentiljon", 0},
	{"1", 160 * 6, "ensexagintacentiljon", 0},
	{"1", 170 * 6, "enseptuagintacentiljon", 0},
	{"1", 177 * 6, "enseptenseptuagintacentiljon", 0},
	{"1", 180 * 6, "enoktogintacentiljon", 0},
	{"1", 190 * 6, "ennonagintacentiljon", 0},
	{"1", 199 * 6, "ennovenonagintacentiljon", 0},
	{"1", 200 * 6, "enducentiljon", 0},
	{"1", 201 * 6, "enunducentiljon", 0},
	{"1", 202 * 6, "enduoducentiljon", 0},
	{"1", 203 * 6, "entreducentiljon", 0},
	{"1", 204 * 6, "enkvattuorducentiljon", 0},
	{"1", 205 * 6, "enkvinducentiljon", 0},
	{"1", 206 * 6, "enseducentiljon", 0},
	{"1", 207 * 6, "enseptenducentiljon", 0},
	{"1", 208 * 6, "enoktoducentiljon", 0},
	{"1", 209 * 6, "ennovenducentiljon", 0},
	{"1", 300 * 6, "entrecentiljon", 0},
	{"1", 301 * 6, "enuntrecentiljon", 0},
	{"1", 302 * 6, "enduotrecentiljon", 0},
	{"1", 303 * 6, "entrestrecentiljon", 0},
	{"1", 304 * 6, "enkvattuortrecentiljon", 0},
	{"1", 305 * 6, "enkvintrecentiljon", 0},
	{"1", 306 * 6, "ensestrecentiljon", 0},
	{"1", 307 * 6, "enseptentrecentiljon", 0},
	{"1", 308 * 6, "enoktotrecentiljon", 0},
	{"1", 309 * 6, "ennoventrecentiljon", 0},
	{"1", 400 * 6, "enkvadringentiljon", 0},
	{"1", 401 * 6, "enunkvadringentiljon", 0},
	{"1", 402 * 6, "enduokvadringentiljon", 0},
	{"1", 403 * 6, "entreskvadringentiljon", 0},
	{"1", 404 * 6, "enkvattuorkvadringentiljon", 0},
	{"1", 405 * 6, "enkvinkvadringentiljon", 0},
	{"1", 406 * 6, "enseskvadringentiljon", 0},
	{"1", 407 * 6, "enseptenkvadringentiljon", 0},
	{"1", 408 * 6, "enoktokvadringentiljon", 0},
	{"1", 409 * 6, "ennovenkvadringentiljon", 0},
	{"1", 500 * 6, "enkvingentiljon", 0},
	{"1", 501 * 6, "enunkvingentiljon", 0},
	{"1", 502 * 6, "enduokvingentiljon", 0},
	{"1", 503 * 6, "entreskvingentiljon", 0},
	{"1", 504 * 6, "enkvattuorkvingentiljon", 0},
	{"1", 505 * 6, "enkvinkvingentiljon", 0},
	{"1", 506 * 6, "enseskvingentiljon", 0},
	{"1", 507 * 6, "enseptenkvingentiljon", 0},
	{"1", 508 * 6, "enoktokvingentiljon", 0},
	{"1", 509 * 6, "ennovenkvingentiljon", 0},
	{"1", 600 * 6, "ensescentiljon", 0},
	{"1", 601 * 6, "enunsescentiljon", 0},
	{"1", 602 * 6, "enduosescentiljon", 0},
	{"1", 603 * 6, "entresescentiljon", 0},
	{"1", 604 * 6, "enkvattuorsescentiljon", 0},
	{"1", 605 * 6, "enkvinsescentiljon", 0},
	{"1", 606 * 6, "ensesescentiljon", 0},
	{"1", 607 * 6, "enseptensescentiljon", 0},
	{"1", 608 * 6, "enoktosescentiljon", 0},
	{"1", 609 * 6, "ennovensescentiljon", 0},
	{"1", 700 * 6, "enseptingentiljon", 0},
	{"1", 701 * 6, "enunseptingentiljon", 0},
	{"1", 702 * 6, "enduoseptingentiljon", 0},
	{"1", 703 * 6, "entreseptingentiljon", 0},
	{"1", 704 * 6, "enkvattuorseptingentiljon", 0},
	{"1", 705 * 6, "enkvinseptingentiljon", 0},
	{"1", 706 * 6, "enseseptingentiljon", 0},
	{"1", 707 * 6, "enseptenseptingentiljon", 0},
	{"1", 708 * 6, "enoktoseptingentiljon", 0},
	{"1", 709 * 6, "ennovenseptingentiljon", 0},
	{"1", 800 * 6, "enoktingentiljon", 0},
	{"1", 801 * 6, "enunoktingentiljon", 0},
	{"1", 802 * 6, "enduooktingentiljon", 0},
	{"1", 803 * 6, "entresoktingentiljon", 0},
	{"1", 804 * 6, "enkvattuoroktingentiljon", 0},
	{"1", 805 * 6, "enkvinoktingentiljon", 0},
	{"1", 806 * 6, "ensexoktingentiljon", 0},
	{"1", 807 * 6, "enseptemoktingentiljon", 0},
	{"1", 808 * 6, "enoktooktingentiljon", 0},
	{"1", 809 * 6, "ennovemoktingentiljon", 0},
	{"1", 900 * 6, "ennongentiljon", 0},
	{"1", 901 * 6, "enunnongentiljon", 0},
	{"1", 902 * 6, "enduonongentiljon", 0},
	{"1", 903 * 6, "entrenongentiljon", 0},
	{"1", 904 * 6, "enkvattuornongentiljon", 0},
	{"1", 905 * 6, "enkvinnongentiljon", 0},
	{"1", 906 * 6, "ensenongentiljon", 0},
	{"1", 907 * 6, "enseptenongentiljon", 0},
	{"1", 908 * 6, "enoktonongentiljon", 0},
	{"1", 909 * 6, "ennovenongentiljon", 0},
	{"1", 990 * 6, "ennonagintanongentiljon", 0},
	{"1", 999 * 6, "ennovenonagintanongentiljon", 0},
	{"1", 999 * 6, "ennovenonagintanongentiljonte", ORD},
	{"1000", 999 * 6, "ennovenonagintanongentiljard", 0},
	{"1000", 999 * 6, "ennovenonagintanongentiljarde", ORD},
	{"0", 0, "noll", F(IMPLICIT_ONE)},
	{"0", 0, "nollte", F(IMPLICIT_ONE) | ORD},
	{"1", 0, "ett", F(IMPLICIT_ONE)},
	{"1", 0, "första", F(IMPLICIT_ONE) | ORD},
	{"2", 0, "två", F(IMPLICIT_ONE)},
	{"2", 0, "andra", F(IMPLICIT_ONE) | ORD},
	{"3", 0, "tre", F(IMPLICIT_ONE)},
	{"3", 0, "tredje", F(IMPLICIT_ONE) | ORD},
	{"4", 0, "fyra", F(IMPLICIT_ONE)},
	{"20", 0, "tjugo", F(IMPLICIT_ONE)},
	{"30", 0, "trettio", F(IMPLICIT_ONE)},
	{"100", 0, "hundra", F(IMPLICIT_ONE)},
	{"100", 0, "hundrade", F(IMPLICIT_ONE) | ORD},
	{"101", 0, "hundraett", F(IMPLICIT_ONE)},
	{"101", 0, "hundraförsta", F(IMPLICIT_ONE) | ORD},
	{"110", 0, "hundratio", F(IMPLICIT_ONE)},
	{"110", 0, "hundrationde", F(IMPLICIT_ONE) | ORD},
	{"999", 0, "niohundranittionio", F(IMPLICIT_ONE)},
	{"999", 0, "niohundranittionionde", F(IMPLICIT_ONE) | ORD},
	{"1000", 0, "tusen", F(IMPLICIT_ONE)},
	{"1000", 0, "tusende", F(IMPLICIT_ONE) | ORD},
	{"1001", 0, "tusenett", F(IMPLICIT_ONE)},
	{"1001", 0, "tusenförsta", F(IMPLICIT_ONE) | ORD},
	{"2000", 0, "tvåtusen", F(IMPLICIT_ONE)},
	{"2000", 0, "tvåtusende", F(IMPLICIT_ONE) | ORD},
	{"100000", 0, "hundratusen", F(IMPLICIT_ONE)},
	{"100000", 0, "hundratusende", F(IMPLICIT_ONE) | ORD},
	{"101000", 0, "hundraettusen", F(IMPLICIT_ONE)},
	{"101000", 0, "hundraettusende", F(IMPLICIT_ONE) | ORD},
	{"300000", 0, "trehundratusen", F(IMPLICIT_ONE)},
	{"1""000000", 0, "enmiljon", F(IMPLICIT_ONE)},
	{"1""000000", 0, "enmiljonte", F(IMPLICIT_ONE) | ORD},
	{"1""200000", 0, "enmiljontvåhundratusen", F(IMPLICIT_ONE)},
	{"2""000000", 0, "tvåmiljoner", F(IMPLICIT_ONE)},
	{"2""000000", 0, "tvåmiljonte", F(IMPLICIT_ONE) | ORD},
	{"100""000000", 0, "hundramiljoner", F(IMPLICIT_ONE)},
	{"1000""000000", 0, "enmiljard", F(IMPLICIT_ONE)},
	{"1""000000""000000", 0, "enbiljon", F(IMPLICIT_ONE)},
	{"1", 4 * 6, "enkvadriljon", F(IMPLICIT_ONE)},
	{"1", 100 * 6, "encentiljon", F(IMPLICIT_ONE)},
	{"+0", 0, "Plus Noll", F(PASCAL_CASE)},
	{"+0", 0, "PLUS NOLL", F(UPPER_CASE)},
	{"+0", 0, "Plus noll", F(SENTENCE_CASE)},
	{"-0", 0, "Minus Noll", F(PASCAL_CASE)},
	{"-0", 0, "MINUS NOLL", F(UPPER_CASE)},
	{"-0", 0, "Minus noll", F(SENTENCE_CASE)},
	{"54248", 0, "FemtioFyratusenTvåhundraFyrtioÅtta", F(PASCAL_CASE)},
	{"54248", 0, "FEMTIOFYRATUSENTVÅHUNDRAFYRTIOÅTTA", F(UPPER_CASE)},
	{"54248", 0, "Femtiofyratusentvåhundrafyrtioåtta", F(SENTENCE_CASE)},
	{"54248", 0, "femtio-fyratusen-tvåhundra-fyrtio-åtta", F(HYPHENATED)},
	{"54248", 0, "Femtio-Fyratusen-Tvåhundra-Fyrtio-Åtta", F(HYPHENATED) | F(PASCAL_CASE)},
	{"54248", 0, "FEMTIO-FYRATUSEN-TVÅHUNDRA-FYRTIO-ÅTTA", F(HYPHENATED) | F(UPPER_CASE)},
	{"54248", 0, "Femtio-fyratusen-tvåhundra-fyrtio-åtta", F(HYPHENATED) | F(SENTENCE_CASE)},
	{"100", 0, "etthundra", F(EXPLICIT_TRIPLETS)},
	{"100", 0, "etthundra", F(LATEX_TRIPLETS)},
	{"1000", 0, "etttusen", F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "e\"ttusen", F(LATEX_TRIPLETS)},
	{"1000", 0, "tusen", F(IMPLICIT_ONE) | F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "tusen", F(IMPLICIT_ONE) | F(LATEX_TRIPLETS)},
	{"0", 0, "noll", F(NEUTER_GENDER)},
	{"0", 0, "nollte", F(NEUTER_GENDER) | ORD},
	{"1", 0, "en", F(NEUTER_GENDER)},
	{"1", 0, "första", F(NEUTER_GENDER) | ORD},
	{"2", 0, "två", F(NEUTER_GENDER)},
	{"2", 0, "andra", F(NEUTER_GENDER) | ORD},
	{"3", 0, "tre", F(NEUTER_GENDER)},
	{"3", 0, "tredje", F(NEUTER_GENDER) | ORD},
	{"21", 0, "tjugoen", F(NEUTER_GENDER)},
	{"21", 0, "tjugoförsta", F(NEUTER_GENDER) | ORD},
	{"22", 0, "tjugotvå", F(NEUTER_GENDER)},
	{"22", 0, "tjugoandra", F(NEUTER_GENDER) | ORD},
	{"23", 0, "tjugotre", F(NEUTER_GENDER)},
	{"23", 0, "tjugotredje", F(NEUTER_GENDER) | ORD},
	{"100", 0, "etthundra", F(NEUTER_GENDER)},
	{"100", 0, "etthundrade", F(NEUTER_GENDER) | ORD},
	{"101", 0, "etthundraen", F(NEUTER_GENDER)},
	{"101", 0, "etthundraförsta", F(NEUTER_GENDER) | ORD},
	{"1000", 0, "ettusen", F(NEUTER_GENDER)},
	{"1000", 0, "ettusende", F(NEUTER_GENDER) | ORD},
	{"1001", 0, "ettusenen", F(NEUTER_GENDER)},
	{"1001", 0, "ettusenförsta", F(NEUTER_GENDER) | ORD},
	{"1002", 0, "ettusentvå", F(NEUTER_GENDER)},
	{"1002", 0, "ettusenandra", F(NEUTER_GENDER) | ORD},
	{"1000000", 0, "enmiljon", F(NEUTER_GENDER)},
	{"1000000", 0, "enmiljonte", F(NEUTER_GENDER) | ORD},
	{"1000001", 0, "enmiljonen", F(NEUTER_GENDER)},
	{"1000001", 0, "enmiljonförsta", F(NEUTER_GENDER) | ORD},
	{"1000002", 0, "enmiljontvå", F(NEUTER_GENDER)},
	{"1000002", 0, "enmiljonandra", F(NEUTER_GENDER) | ORD},
	{"1000003", 0, "enmiljontre", F(NEUTER_GENDER)},
	{"1000003", 0, "enmiljontredje", F(NEUTER_GENDER) | ORD},
	{"0", 0, "noll", F(MASCULINE_GENDER)},
	{"0", 0, "nollte", F(MASCULINE_GENDER) | ORD},
	{"1", 0, "en", F(MASCULINE_GENDER)},
	{"1", 0, "förste", F(MASCULINE_GENDER) | ORD},
	{"2", 0, "två", F(MASCULINE_GENDER)},
	{"2", 0, "andre", F(MASCULINE_GENDER) | ORD},
	{"3", 0, "tre", F(MASCULINE_GENDER)},
	{"3", 0, "tredje", F(MASCULINE_GENDER) | ORD},
	{"21", 0, "tjugoen", F(MASCULINE_GENDER)},
	{"21", 0, "tjugoförste", F(MASCULINE_GENDER) | ORD},
	{"22", 0, "tjugotvå", F(MASCULINE_GENDER)},
	{"22", 0, "tjugoandre", F(MASCULINE_GENDER) | ORD},
	{"23", 0, "tjugotre", F(MASCULINE_GENDER)},
	{"23", 0, "tjugotredje", F(MASCULINE_GENDER) | ORD},
	{"100", 0, "etthundra", F(MASCULINE_GENDER)},
	{"100", 0, "etthundrade", F(MASCULINE_GENDER) | ORD},
	{"101", 0, "etthundraen", F(MASCULINE_GENDER)},
	{"101", 0, "etthundraförste", F(MASCULINE_GENDER) | ORD},
	{"1000", 0, "ettusen", F(MASCULINE_GENDER)},
	{"1000", 0, "ettusende", F(MASCULINE_GENDER) | ORD},
	{"1001", 0, "ettusenen", F(MASCULINE_GENDER)},
	{"1001", 0, "ettusenförste", F(MASCULINE_GENDER) | ORD},
	{"1002", 0, "ettusentvå", F(MASCULINE_GENDER)},
	{"1002", 0, "ettusenandre", F(MASCULINE_GENDER) | ORD},
	{"1000000", 0, "enmiljon", F(MASCULINE_GENDER)},
	{"1000000", 0, "enmiljonte", F(MASCULINE_GENDER) | ORD},
	{"1000001", 0, "enmiljonen", F(MASCULINE_GENDER)},
	{"1000001", 0, "enmiljonförste", F(MASCULINE_GENDER) | ORD},
	{"1000002", 0, "enmiljontvå", F(MASCULINE_GENDER)},
	{"1000002", 0, "enmiljonandre", F(MASCULINE_GENDER) | ORD},
	{"1000003", 0, "enmiljontre", F(MASCULINE_GENDER)},
	{"1000003", 0, "enmiljontredje", F(MASCULINE_GENDER) | ORD},
	{"0", 0, "noll", F(FEMININE_GENDER)},
	{"0", 0, "nollte", F(FEMININE_GENDER) | ORD},
	{"1", 0, "en", F(FEMININE_GENDER)},
	{"1", 0, "första", F(FEMININE_GENDER) | ORD},
	{"2", 0, "två", F(FEMININE_GENDER)},
	{"2", 0, "andra", F(FEMININE_GENDER) | ORD},
	{"3", 0, "tre", F(FEMININE_GENDER)},
	{"3", 0, "tredje", F(FEMININE_GENDER) | ORD},
	{"21", 0, "tjugoen", F(FEMININE_GENDER)},
	{"21", 0, "tjugoförsta", F(FEMININE_GENDER) | ORD},
	{"22", 0, "tjugotvå", F(FEMININE_GENDER)},
	{"22", 0, "tjugoandra", F(FEMININE_GENDER) | ORD},
	{"23", 0, "tjugotre", F(FEMININE_GENDER)},
	{"23", 0, "tjugotredje", F(FEMININE_GENDER) | ORD},
	{"100", 0, "etthundra", F(FEMININE_GENDER)},
	{"100", 0, "etthundrade", F(FEMININE_GENDER) | ORD},
	{"101", 0, "etthundraen", F(FEMININE_GENDER)},
	{"101", 0, "etthundraförsta", F(FEMININE_GENDER) | ORD},
	{"1000", 0, "ettusen", F(FEMININE_GENDER)},
	{"1000", 0, "ettusende", F(FEMININE_GENDER) | ORD},
	{"1001", 0, "ettusenen", F(FEMININE_GENDER)},
	{"1001", 0, "ettusenförsta", F(FEMININE_GENDER) | ORD},
	{"1002", 0, "ettusentvå", F(FEMININE_GENDER)},
	{"1002", 0, "ettusenandra", F(FEMININE_GENDER) | ORD},
	{"1000000", 0, "enmiljon", F(FEMININE_GENDER)},
	{"1000000", 0, "enmiljonte", F(FEMININE_GENDER) | ORD},
	{"1000001", 0, "enmiljonen", F(FEMININE_GENDER)},
	{"1000001", 0, "enmiljonförsta", F(FEMININE_GENDER) | ORD},
	{"1000002", 0, "enmiljontvå", F(FEMININE_GENDER)},
	{"1000002", 0, "enmiljonandra", F(FEMININE_GENDER) | ORD},
	{"1000003", 0, "enmiljontre", F(FEMININE_GENDER)},
	{"1000003", 0, "enmiljontredje", F(FEMININE_GENDER) | ORD},
	{"100", 0, "ett|hundra", F(COMPONENT_HYPHENATION)},
	{"100", 0, "ett|hun|dra", F(SYLLABLE_HYPHENATION)},
	{"100", 0, "ett|hun¦dra", F(SECONDARY_HYPHENATION)},
	{"100", 0, "ett|hundra", F(HYPHENATED) | F(COMPONENT_HYPHENATION)},
	{"100", 0, "ett|hun|dra", F(HYPHENATED) | F(SYLLABLE_HYPHENATION)},
	{"100", 0, "ett|hun¦dra", F(HYPHENATED) | F(SECONDARY_HYPHENATION)},
	{"1000", 0, "ettusen", F(COMPONENT_HYPHENATION)},
	{"1000", 0, "ettu|sen", F(SYLLABLE_HYPHENATION)},
	{"1000", 0, "ettu¦sen", F(SECONDARY_HYPHENATION)},
	{"1000", 0, "ettusen", F(HYPHENATED) | F(COMPONENT_HYPHENATION)},
	{"1000", 0, "ettu|sen", F(HYPHENATED) | F(SYLLABLE_HYPHENATION)},
	{"1000", 0, "ettu¦sen", F(HYPHENATED) | F(SECONDARY_HYPHENATION)},
	{"1000", 0, "e\"ttusen", F(COMPONENT_HYPHENATION) | F(LATEX_TRIPLETS)},
	{"1000", 0, "e\"ttu|sen", F(SYLLABLE_HYPHENATION) | F(LATEX_TRIPLETS)},
	{"1000", 0, "e\"ttu¦sen", F(SECONDARY_HYPHENATION) | F(LATEX_TRIPLETS)},
	{"1000", 0, "e\"ttusen", F(HYPHENATED) | F(COMPONENT_HYPHENATION) | F(LATEX_TRIPLETS)},
	{"1000", 0, "e\"ttu|sen", F(HYPHENATED) | F(SYLLABLE_HYPHENATION) | F(LATEX_TRIPLETS)},
	{"1000", 0, "e\"ttu¦sen", F(HYPHENATED) | F(SECONDARY_HYPHENATION) | F(LATEX_TRIPLETS)},
	{"1000", 0, "ett|tusen", F(COMPONENT_HYPHENATION) | F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "ett|tu|sen", F(SYLLABLE_HYPHENATION) | F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "ett|tu¦sen", F(SECONDARY_HYPHENATION) | F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "ett|tusen", F(HYPHENATED) | F(COMPONENT_HYPHENATION) | F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "ett|tu|sen", F(HYPHENATED) | F(SYLLABLE_HYPHENATION) | F(EXPLICIT_TRIPLETS)},
	{"1000", 0, "ett|tu¦sen", F(HYPHENATED) | F(SECONDARY_HYPHENATION) | F(EXPLICIT_TRIPLETS)},
	{"54248", 0, "femtio|fyra|tusen|två|hundra|fyrtio|åtta", F(COMPONENT_HYPHENATION)},
	{"54248", 0, "fem|tio|fy|ra|tu|sen|två|hun|dra|fyr|tio|åt|ta", F(SYLLABLE_HYPHENATION)},
	{"54248", 0, "fem¦tio|fy¦ra|tu¦sen|två|hun¦dra|fyr¦tio|åt¦ta", F(SECONDARY_HYPHENATION)},
	{"54248", 0, "femtio-fyra|tusen-två|hundra-fyrtio-åtta", F(HYPHENATED) | F(COMPONENT_HYPHENATION)},
	{"54248", 0, "fem|tio-fy|ra|tu|sen-två|hun|dra-fyr|tio-åt|ta", F(HYPHENATED) | F(SYLLABLE_HYPHENATION)},
	{"54248", 0, "fem¦tio-fy¦ra|tu¦sen-två|hun¦dra-fyr¦tio-åt¦ta", F(HYPHENATED) | F(SECONDARY_HYPHENATION)},
};


int
main(void)
{
	char numbuf[8 << 10];
	char buf[2 << 10];
	ssize_t len, r;
	size_t i, j, z, numlen, failures = 0;
	struct test *t;

	for (i = 0; i < sizeof(tests) / sizeof(*tests); i++) {
		j = i + 1;
		t = &tests[i];
		numlen = strlen(t->num);
		memcpy(numbuf, t->num, numlen);
		for (z = 0; z < t->zeroes; z++)
			numbuf[numlen++] = '0';
		numbuf[numlen] = '\0';
		len = libnumtext_num2text(buf, sizeof(buf), numbuf, numlen, LIBNUMTEXT_SWEDISH, t->flags);
		if (len < 0) {
			fprintf(stderr, "Error at test %zu: %s\n", j, strerror(errno));
		} else if ((size_t)len > sizeof(buf)) {
			fprintf(stderr, "Test %zu returned result larger (%zi) than buffer (%zu)\n", j, len, sizeof(buf));
		} else if (!len) {
			fprintf(stderr, "Test %zu returned zero-sized result\n", j);
		} else if (buf[len - 1]) {
			fprintf(stderr, "Test %zu returned non-NUL-terminated result\n", j);
		} else if (strcmp(buf, t->expect)) {
			fprintf(stderr, "Test %zu returned incorrect result: %s\n", j, buf);
		} else if ((r = libnumtext_num2text(buf, 2, numbuf, numlen, LIBNUMTEXT_SWEDISH, t->flags)) != len) {
			fprintf(stderr, "Test %zu has invalid return size when buffer is undersized: %zi\n", j, r);
		} else if (buf[1]) {
			fprintf(stderr, "Test %zu returned non-NUL-terminated result when buffer is undersized\n", j);
		} else if (buf[0] != t->expect[0]) {
			fprintf(stderr, "Test %zu returned incorrect result when buffer is undersized\n", j);
		} else if ((r = libnumtext_num2text(NULL, 0, numbuf, numlen, LIBNUMTEXT_SWEDISH, t->flags)) != len) {
			fprintf(stderr, "Test %zu has invalid return size when buffer is NULL: %zi\n", j, r);
		} else {
			numbuf[numlen + 0] = 'x';
			numbuf[numlen + 1] = '\0';
			libnumtext_num2text(buf, sizeof(buf), numbuf, numlen, LIBNUMTEXT_SWEDISH, t->flags);
			if (r != len) {
				fprintf(stderr, "Test %zu has invalid return size when buffer is not NUL-terminated: %zi\n", j, r);
			} else if (buf[len - 1]) {
				fprintf(stderr, "Test %zu returned non-NUL-terminated result when buffer is not NUL-terminated\n", j);
			} else if (strcmp(buf, t->expect)) {
				fprintf(stderr, "Test %zu has incorrect result when buffer is not NUL-terminated: %s\n", j, buf);
			} else {
				continue;
			}
		}
		if (t->zeroes)
			fprintf(stderr, "\tInput:    \"%s\"e%zu\n", t->num, t->zeroes);
		else
			fprintf(stderr, "\tInput:    %s\n", t->num);
		fprintf(stderr, "\tExpected: %s\n", t->expect);
		fprintf(stderr, "\tFlags:    0x%08x\n", t->flags);
		failures += 1;
	}

	/* TODO test for incorrect and oversized input */
	/* TODO test for separator removal */
	/* TODO test LIBNUMTEXT_N2T_SWEDISH_DENOMINATOR */
	/* TODO test LIBNUMTEXT_N2T_SWEDISH_PLURAL_FORM */
	/* TODO test LIBNUMTEXT_N2T_SWEDISH_DEFINITE_FORM */

	if (failures > 0) {
		fprintf(stderr, "Failure count: %zu\n", failures);
		return 1;
	}
	return 0;
}