diff --git a/scheme/run-tests.ss b/scheme/run-tests.ss index 287c8a6..eeb35cc 100755 --- a/scheme/run-tests.ss +++ b/scheme/run-tests.ss @@ -33,6 +33,7 @@ (tests fldiv-and-mod) (tests parse-flonums) (tests io) + (tests case-folding) ) (define (test-exact-integer-sqrt) @@ -48,8 +49,9 @@ (f 0 536870911000 536870911) (printf "[exact-integer-sqrt] Happy Happy Joy Joy\n")) -(test-parse-flonums) +(test-case-folding) +(test-parse-flonums) (test-reader) (test-char-syntax) (test-bytevectors) diff --git a/scheme/tests/case-folding.ss b/scheme/tests/case-folding.ss new file mode 100644 index 0000000..ac2a0aa --- /dev/null +++ b/scheme/tests/case-folding.ss @@ -0,0 +1,1036 @@ + +(library (tests case-folding) + (export test-case-folding) + (import (ikarus)) + + (define case-fold-mapping + '((#\x0041 #\x0061) + (#\x0042 #\x0062) + (#\x0043 #\x0063) + (#\x0044 #\x0064) + (#\x0045 #\x0065) + (#\x0046 #\x0066) + (#\x0047 #\x0067) + (#\x0048 #\x0068) + (#\x0049 #\x0069) + (#\x004A #\x006A) + (#\x004B #\x006B) + (#\x004C #\x006C) + (#\x004D #\x006D) + (#\x004E #\x006E) + (#\x004F #\x006F) + (#\x0050 #\x0070) + (#\x0051 #\x0071) + (#\x0052 #\x0072) + (#\x0053 #\x0073) + (#\x0054 #\x0074) + (#\x0055 #\x0075) + (#\x0056 #\x0076) + (#\x0057 #\x0077) + (#\x0058 #\x0078) + (#\x0059 #\x0079) + (#\x005A #\x007A) + (#\x00B5 #\x03BC) + (#\x00C0 #\x00E0) + (#\x00C1 #\x00E1) + (#\x00C2 #\x00E2) + (#\x00C3 #\x00E3) + (#\x00C4 #\x00E4) + (#\x00C5 #\x00E5) + (#\x00C6 #\x00E6) + (#\x00C7 #\x00E7) + (#\x00C8 #\x00E8) + (#\x00C9 #\x00E9) + (#\x00CA #\x00EA) + (#\x00CB #\x00EB) + (#\x00CC #\x00EC) + (#\x00CD #\x00ED) + (#\x00CE #\x00EE) + (#\x00CF #\x00EF) + (#\x00D0 #\x00F0) + (#\x00D1 #\x00F1) + (#\x00D2 #\x00F2) + (#\x00D3 #\x00F3) + (#\x00D4 #\x00F4) + (#\x00D5 #\x00F5) + (#\x00D6 #\x00F6) + (#\x00D8 #\x00F8) + (#\x00D9 #\x00F9) + (#\x00DA #\x00FA) + (#\x00DB #\x00FB) + (#\x00DC #\x00FC) + (#\x00DD #\x00FD) + (#\x00DE #\x00FE) + (#\x00DF #\x0073 #\x0073) + (#\x0100 #\x0101) + (#\x0102 #\x0103) + (#\x0104 #\x0105) + (#\x0106 #\x0107) + (#\x0108 #\x0109) + (#\x010A #\x010B) + (#\x010C #\x010D) + (#\x010E #\x010F) + (#\x0110 #\x0111) + (#\x0112 #\x0113) + (#\x0114 #\x0115) + (#\x0116 #\x0117) + (#\x0118 #\x0119) + (#\x011A #\x011B) + (#\x011C #\x011D) + (#\x011E #\x011F) + (#\x0120 #\x0121) + (#\x0122 #\x0123) + (#\x0124 #\x0125) + (#\x0126 #\x0127) + (#\x0128 #\x0129) + (#\x012A #\x012B) + (#\x012C #\x012D) + (#\x012E #\x012F) + (#\x0130 #\x0069 #\x0307) + (#\x0132 #\x0133) + (#\x0134 #\x0135) + (#\x0136 #\x0137) + (#\x0139 #\x013A) + (#\x013B #\x013C) + (#\x013D #\x013E) + (#\x013F #\x0140) + (#\x0141 #\x0142) + (#\x0143 #\x0144) + (#\x0145 #\x0146) + (#\x0147 #\x0148) + (#\x0149 #\x02BC #\x006E) + (#\x014A #\x014B) + (#\x014C #\x014D) + (#\x014E #\x014F) + (#\x0150 #\x0151) + (#\x0152 #\x0153) + (#\x0154 #\x0155) + (#\x0156 #\x0157) + (#\x0158 #\x0159) + (#\x015A #\x015B) + (#\x015C #\x015D) + (#\x015E #\x015F) + (#\x0160 #\x0161) + (#\x0162 #\x0163) + (#\x0164 #\x0165) + (#\x0166 #\x0167) + (#\x0168 #\x0169) + (#\x016A #\x016B) + (#\x016C #\x016D) + (#\x016E #\x016F) + (#\x0170 #\x0171) + (#\x0172 #\x0173) + (#\x0174 #\x0175) + (#\x0176 #\x0177) + (#\x0178 #\x00FF) + (#\x0179 #\x017A) + (#\x017B #\x017C) + (#\x017D #\x017E) + (#\x017F #\x0073) + (#\x0181 #\x0253) + (#\x0182 #\x0183) + (#\x0184 #\x0185) + (#\x0186 #\x0254) + (#\x0187 #\x0188) + (#\x0189 #\x0256) + (#\x018A #\x0257) + (#\x018B #\x018C) + (#\x018E #\x01DD) + (#\x018F #\x0259) + (#\x0190 #\x025B) + (#\x0191 #\x0192) + (#\x0193 #\x0260) + (#\x0194 #\x0263) + (#\x0196 #\x0269) + (#\x0197 #\x0268) + (#\x0198 #\x0199) + (#\x019C #\x026F) + (#\x019D #\x0272) + (#\x019F #\x0275) + (#\x01A0 #\x01A1) + (#\x01A2 #\x01A3) + (#\x01A4 #\x01A5) + (#\x01A6 #\x0280) + (#\x01A7 #\x01A8) + (#\x01A9 #\x0283) + (#\x01AC #\x01AD) + (#\x01AE #\x0288) + (#\x01AF #\x01B0) + (#\x01B1 #\x028A) + (#\x01B2 #\x028B) + (#\x01B3 #\x01B4) + (#\x01B5 #\x01B6) + (#\x01B7 #\x0292) + (#\x01B8 #\x01B9) + (#\x01BC #\x01BD) + (#\x01C4 #\x01C6) + (#\x01C5 #\x01C6) + (#\x01C7 #\x01C9) + (#\x01C8 #\x01C9) + (#\x01CA #\x01CC) + (#\x01CB #\x01CC) + (#\x01CD #\x01CE) + (#\x01CF #\x01D0) + (#\x01D1 #\x01D2) + (#\x01D3 #\x01D4) + (#\x01D5 #\x01D6) + (#\x01D7 #\x01D8) + (#\x01D9 #\x01DA) + (#\x01DB #\x01DC) + (#\x01DE #\x01DF) + (#\x01E0 #\x01E1) + (#\x01E2 #\x01E3) + (#\x01E4 #\x01E5) + (#\x01E6 #\x01E7) + (#\x01E8 #\x01E9) + (#\x01EA #\x01EB) + (#\x01EC #\x01ED) + (#\x01EE #\x01EF) + (#\x01F0 #\x006A #\x030C) + (#\x01F1 #\x01F3) + (#\x01F2 #\x01F3) + (#\x01F4 #\x01F5) + (#\x01F6 #\x0195) + (#\x01F7 #\x01BF) + (#\x01F8 #\x01F9) + (#\x01FA #\x01FB) + (#\x01FC #\x01FD) + (#\x01FE #\x01FF) + (#\x0200 #\x0201) + (#\x0202 #\x0203) + (#\x0204 #\x0205) + (#\x0206 #\x0207) + (#\x0208 #\x0209) + (#\x020A #\x020B) + (#\x020C #\x020D) + (#\x020E #\x020F) + (#\x0210 #\x0211) + (#\x0212 #\x0213) + (#\x0214 #\x0215) + (#\x0216 #\x0217) + (#\x0218 #\x0219) + (#\x021A #\x021B) + (#\x021C #\x021D) + (#\x021E #\x021F) + (#\x0220 #\x019E) + (#\x0222 #\x0223) + (#\x0224 #\x0225) + (#\x0226 #\x0227) + (#\x0228 #\x0229) + (#\x022A #\x022B) + (#\x022C #\x022D) + (#\x022E #\x022F) + (#\x0230 #\x0231) + (#\x0232 #\x0233) + (#\x023A #\x2C65) + (#\x023B #\x023C) + (#\x023D #\x019A) + (#\x023E #\x2C66) + (#\x0241 #\x0242) + (#\x0243 #\x0180) + (#\x0244 #\x0289) + (#\x0245 #\x028C) + (#\x0246 #\x0247) + (#\x0248 #\x0249) + (#\x024A #\x024B) + (#\x024C #\x024D) + (#\x024E #\x024F) + (#\x0345 #\x03B9) + (#\x0386 #\x03AC) + (#\x0388 #\x03AD) + (#\x0389 #\x03AE) + (#\x038A #\x03AF) + (#\x038C #\x03CC) + (#\x038E #\x03CD) + (#\x038F #\x03CE) + (#\x0390 #\x03B9 #\x0308 #\x0301) + (#\x0391 #\x03B1) + (#\x0392 #\x03B2) + (#\x0393 #\x03B3) + (#\x0394 #\x03B4) + (#\x0395 #\x03B5) + (#\x0396 #\x03B6) + (#\x0397 #\x03B7) + (#\x0398 #\x03B8) + (#\x0399 #\x03B9) + (#\x039A #\x03BA) + (#\x039B #\x03BB) + (#\x039C #\x03BC) + (#\x039D #\x03BD) + (#\x039E #\x03BE) + (#\x039F #\x03BF) + (#\x03A0 #\x03C0) + (#\x03A1 #\x03C1) + (#\x03A3 #\x03C3) + (#\x03A4 #\x03C4) + (#\x03A5 #\x03C5) + (#\x03A6 #\x03C6) + (#\x03A7 #\x03C7) + (#\x03A8 #\x03C8) + (#\x03A9 #\x03C9) + (#\x03AA #\x03CA) + (#\x03AB #\x03CB) + (#\x03B0 #\x03C5 #\x0308 #\x0301) + (#\x03C2 #\x03C3) + (#\x03D0 #\x03B2) + (#\x03D1 #\x03B8) + (#\x03D5 #\x03C6) + (#\x03D6 #\x03C0) + (#\x03D8 #\x03D9) + (#\x03DA #\x03DB) + (#\x03DC #\x03DD) + (#\x03DE #\x03DF) + (#\x03E0 #\x03E1) + (#\x03E2 #\x03E3) + (#\x03E4 #\x03E5) + (#\x03E6 #\x03E7) + (#\x03E8 #\x03E9) + (#\x03EA #\x03EB) + (#\x03EC #\x03ED) + (#\x03EE #\x03EF) + (#\x03F0 #\x03BA) + (#\x03F1 #\x03C1) + (#\x03F4 #\x03B8) + (#\x03F5 #\x03B5) + (#\x03F7 #\x03F8) + (#\x03F9 #\x03F2) + (#\x03FA #\x03FB) + (#\x03FD #\x037B) + (#\x03FE #\x037C) + (#\x03FF #\x037D) + (#\x0400 #\x0450) + (#\x0401 #\x0451) + (#\x0402 #\x0452) + (#\x0403 #\x0453) + (#\x0404 #\x0454) + (#\x0405 #\x0455) + (#\x0406 #\x0456) + (#\x0407 #\x0457) + (#\x0408 #\x0458) + (#\x0409 #\x0459) + (#\x040A #\x045A) + (#\x040B #\x045B) + (#\x040C #\x045C) + (#\x040D #\x045D) + (#\x040E #\x045E) + (#\x040F #\x045F) + (#\x0410 #\x0430) + (#\x0411 #\x0431) + (#\x0412 #\x0432) + (#\x0413 #\x0433) + (#\x0414 #\x0434) + (#\x0415 #\x0435) + (#\x0416 #\x0436) + (#\x0417 #\x0437) + (#\x0418 #\x0438) + (#\x0419 #\x0439) + (#\x041A #\x043A) + (#\x041B #\x043B) + (#\x041C #\x043C) + (#\x041D #\x043D) + (#\x041E #\x043E) + (#\x041F #\x043F) + (#\x0420 #\x0440) + (#\x0421 #\x0441) + (#\x0422 #\x0442) + (#\x0423 #\x0443) + (#\x0424 #\x0444) + (#\x0425 #\x0445) + (#\x0426 #\x0446) + (#\x0427 #\x0447) + (#\x0428 #\x0448) + (#\x0429 #\x0449) + (#\x042A #\x044A) + (#\x042B #\x044B) + (#\x042C #\x044C) + (#\x042D #\x044D) + (#\x042E #\x044E) + (#\x042F #\x044F) + (#\x0460 #\x0461) + (#\x0462 #\x0463) + (#\x0464 #\x0465) + (#\x0466 #\x0467) + (#\x0468 #\x0469) + (#\x046A #\x046B) + (#\x046C #\x046D) + (#\x046E #\x046F) + (#\x0470 #\x0471) + (#\x0472 #\x0473) + (#\x0474 #\x0475) + (#\x0476 #\x0477) + (#\x0478 #\x0479) + (#\x047A #\x047B) + (#\x047C #\x047D) + (#\x047E #\x047F) + (#\x0480 #\x0481) + (#\x048A #\x048B) + (#\x048C #\x048D) + (#\x048E #\x048F) + (#\x0490 #\x0491) + (#\x0492 #\x0493) + (#\x0494 #\x0495) + (#\x0496 #\x0497) + (#\x0498 #\x0499) + (#\x049A #\x049B) + (#\x049C #\x049D) + (#\x049E #\x049F) + (#\x04A0 #\x04A1) + (#\x04A2 #\x04A3) + (#\x04A4 #\x04A5) + (#\x04A6 #\x04A7) + (#\x04A8 #\x04A9) + (#\x04AA #\x04AB) + (#\x04AC #\x04AD) + (#\x04AE #\x04AF) + (#\x04B0 #\x04B1) + (#\x04B2 #\x04B3) + (#\x04B4 #\x04B5) + (#\x04B6 #\x04B7) + (#\x04B8 #\x04B9) + (#\x04BA #\x04BB) + (#\x04BC #\x04BD) + (#\x04BE #\x04BF) + (#\x04C0 #\x04CF) + (#\x04C1 #\x04C2) + (#\x04C3 #\x04C4) + (#\x04C5 #\x04C6) + (#\x04C7 #\x04C8) + (#\x04C9 #\x04CA) + (#\x04CB #\x04CC) + (#\x04CD #\x04CE) + (#\x04D0 #\x04D1) + (#\x04D2 #\x04D3) + (#\x04D4 #\x04D5) + (#\x04D6 #\x04D7) + (#\x04D8 #\x04D9) + (#\x04DA #\x04DB) + (#\x04DC #\x04DD) + (#\x04DE #\x04DF) + (#\x04E0 #\x04E1) + (#\x04E2 #\x04E3) + (#\x04E4 #\x04E5) + (#\x04E6 #\x04E7) + (#\x04E8 #\x04E9) + (#\x04EA #\x04EB) + (#\x04EC #\x04ED) + (#\x04EE #\x04EF) + (#\x04F0 #\x04F1) + (#\x04F2 #\x04F3) + (#\x04F4 #\x04F5) + (#\x04F6 #\x04F7) + (#\x04F8 #\x04F9) + (#\x04FA #\x04FB) + (#\x04FC #\x04FD) + (#\x04FE #\x04FF) + (#\x0500 #\x0501) + (#\x0502 #\x0503) + (#\x0504 #\x0505) + (#\x0506 #\x0507) + (#\x0508 #\x0509) + (#\x050A #\x050B) + (#\x050C #\x050D) + (#\x050E #\x050F) + (#\x0510 #\x0511) + (#\x0512 #\x0513) + (#\x0531 #\x0561) + (#\x0532 #\x0562) + (#\x0533 #\x0563) + (#\x0534 #\x0564) + (#\x0535 #\x0565) + (#\x0536 #\x0566) + (#\x0537 #\x0567) + (#\x0538 #\x0568) + (#\x0539 #\x0569) + (#\x053A #\x056A) + (#\x053B #\x056B) + (#\x053C #\x056C) + (#\x053D #\x056D) + (#\x053E #\x056E) + (#\x053F #\x056F) + (#\x0540 #\x0570) + (#\x0541 #\x0571) + (#\x0542 #\x0572) + (#\x0543 #\x0573) + (#\x0544 #\x0574) + (#\x0545 #\x0575) + (#\x0546 #\x0576) + (#\x0547 #\x0577) + (#\x0548 #\x0578) + (#\x0549 #\x0579) + (#\x054A #\x057A) + (#\x054B #\x057B) + (#\x054C #\x057C) + (#\x054D #\x057D) + (#\x054E #\x057E) + (#\x054F #\x057F) + (#\x0550 #\x0580) + (#\x0551 #\x0581) + (#\x0552 #\x0582) + (#\x0553 #\x0583) + (#\x0554 #\x0584) + (#\x0555 #\x0585) + (#\x0556 #\x0586) + (#\x0587 #\x0565 #\x0582) + (#\x10A0 #\x2D00) + (#\x10A1 #\x2D01) + (#\x10A2 #\x2D02) + (#\x10A3 #\x2D03) + (#\x10A4 #\x2D04) + (#\x10A5 #\x2D05) + (#\x10A6 #\x2D06) + (#\x10A7 #\x2D07) + (#\x10A8 #\x2D08) + (#\x10A9 #\x2D09) + (#\x10AA #\x2D0A) + (#\x10AB #\x2D0B) + (#\x10AC #\x2D0C) + (#\x10AD #\x2D0D) + (#\x10AE #\x2D0E) + (#\x10AF #\x2D0F) + (#\x10B0 #\x2D10) + (#\x10B1 #\x2D11) + (#\x10B2 #\x2D12) + (#\x10B3 #\x2D13) + (#\x10B4 #\x2D14) + (#\x10B5 #\x2D15) + (#\x10B6 #\x2D16) + (#\x10B7 #\x2D17) + (#\x10B8 #\x2D18) + (#\x10B9 #\x2D19) + (#\x10BA #\x2D1A) + (#\x10BB #\x2D1B) + (#\x10BC #\x2D1C) + (#\x10BD #\x2D1D) + (#\x10BE #\x2D1E) + (#\x10BF #\x2D1F) + (#\x10C0 #\x2D20) + (#\x10C1 #\x2D21) + (#\x10C2 #\x2D22) + (#\x10C3 #\x2D23) + (#\x10C4 #\x2D24) + (#\x10C5 #\x2D25) + (#\x1E00 #\x1E01) + (#\x1E02 #\x1E03) + (#\x1E04 #\x1E05) + (#\x1E06 #\x1E07) + (#\x1E08 #\x1E09) + (#\x1E0A #\x1E0B) + (#\x1E0C #\x1E0D) + (#\x1E0E #\x1E0F) + (#\x1E10 #\x1E11) + (#\x1E12 #\x1E13) + (#\x1E14 #\x1E15) + (#\x1E16 #\x1E17) + (#\x1E18 #\x1E19) + (#\x1E1A #\x1E1B) + (#\x1E1C #\x1E1D) + (#\x1E1E #\x1E1F) + (#\x1E20 #\x1E21) + (#\x1E22 #\x1E23) + (#\x1E24 #\x1E25) + (#\x1E26 #\x1E27) + (#\x1E28 #\x1E29) + (#\x1E2A #\x1E2B) + (#\x1E2C #\x1E2D) + (#\x1E2E #\x1E2F) + (#\x1E30 #\x1E31) + (#\x1E32 #\x1E33) + (#\x1E34 #\x1E35) + (#\x1E36 #\x1E37) + (#\x1E38 #\x1E39) + (#\x1E3A #\x1E3B) + (#\x1E3C #\x1E3D) + (#\x1E3E #\x1E3F) + (#\x1E40 #\x1E41) + (#\x1E42 #\x1E43) + (#\x1E44 #\x1E45) + (#\x1E46 #\x1E47) + (#\x1E48 #\x1E49) + (#\x1E4A #\x1E4B) + (#\x1E4C #\x1E4D) + (#\x1E4E #\x1E4F) + (#\x1E50 #\x1E51) + (#\x1E52 #\x1E53) + (#\x1E54 #\x1E55) + (#\x1E56 #\x1E57) + (#\x1E58 #\x1E59) + (#\x1E5A #\x1E5B) + (#\x1E5C #\x1E5D) + (#\x1E5E #\x1E5F) + (#\x1E60 #\x1E61) + (#\x1E62 #\x1E63) + (#\x1E64 #\x1E65) + (#\x1E66 #\x1E67) + (#\x1E68 #\x1E69) + (#\x1E6A #\x1E6B) + (#\x1E6C #\x1E6D) + (#\x1E6E #\x1E6F) + (#\x1E70 #\x1E71) + (#\x1E72 #\x1E73) + (#\x1E74 #\x1E75) + (#\x1E76 #\x1E77) + (#\x1E78 #\x1E79) + (#\x1E7A #\x1E7B) + (#\x1E7C #\x1E7D) + (#\x1E7E #\x1E7F) + (#\x1E80 #\x1E81) + (#\x1E82 #\x1E83) + (#\x1E84 #\x1E85) + (#\x1E86 #\x1E87) + (#\x1E88 #\x1E89) + (#\x1E8A #\x1E8B) + (#\x1E8C #\x1E8D) + (#\x1E8E #\x1E8F) + (#\x1E90 #\x1E91) + (#\x1E92 #\x1E93) + (#\x1E94 #\x1E95) + (#\x1E96 #\x0068 #\x0331) + (#\x1E97 #\x0074 #\x0308) + (#\x1E98 #\x0077 #\x030A) + (#\x1E99 #\x0079 #\x030A) + (#\x1E9A #\x0061 #\x02BE) + (#\x1E9B #\x1E61) + (#\x1EA0 #\x1EA1) + (#\x1EA2 #\x1EA3) + (#\x1EA4 #\x1EA5) + (#\x1EA6 #\x1EA7) + (#\x1EA8 #\x1EA9) + (#\x1EAA #\x1EAB) + (#\x1EAC #\x1EAD) + (#\x1EAE #\x1EAF) + (#\x1EB0 #\x1EB1) + (#\x1EB2 #\x1EB3) + (#\x1EB4 #\x1EB5) + (#\x1EB6 #\x1EB7) + (#\x1EB8 #\x1EB9) + (#\x1EBA #\x1EBB) + (#\x1EBC #\x1EBD) + (#\x1EBE #\x1EBF) + (#\x1EC0 #\x1EC1) + (#\x1EC2 #\x1EC3) + (#\x1EC4 #\x1EC5) + (#\x1EC6 #\x1EC7) + (#\x1EC8 #\x1EC9) + (#\x1ECA #\x1ECB) + (#\x1ECC #\x1ECD) + (#\x1ECE #\x1ECF) + (#\x1ED0 #\x1ED1) + (#\x1ED2 #\x1ED3) + (#\x1ED4 #\x1ED5) + (#\x1ED6 #\x1ED7) + (#\x1ED8 #\x1ED9) + (#\x1EDA #\x1EDB) + (#\x1EDC #\x1EDD) + (#\x1EDE #\x1EDF) + (#\x1EE0 #\x1EE1) + (#\x1EE2 #\x1EE3) + (#\x1EE4 #\x1EE5) + (#\x1EE6 #\x1EE7) + (#\x1EE8 #\x1EE9) + (#\x1EEA #\x1EEB) + (#\x1EEC #\x1EED) + (#\x1EEE #\x1EEF) + (#\x1EF0 #\x1EF1) + (#\x1EF2 #\x1EF3) + (#\x1EF4 #\x1EF5) + (#\x1EF6 #\x1EF7) + (#\x1EF8 #\x1EF9) + (#\x1F08 #\x1F00) + (#\x1F09 #\x1F01) + (#\x1F0A #\x1F02) + (#\x1F0B #\x1F03) + (#\x1F0C #\x1F04) + (#\x1F0D #\x1F05) + (#\x1F0E #\x1F06) + (#\x1F0F #\x1F07) + (#\x1F18 #\x1F10) + (#\x1F19 #\x1F11) + (#\x1F1A #\x1F12) + (#\x1F1B #\x1F13) + (#\x1F1C #\x1F14) + (#\x1F1D #\x1F15) + (#\x1F28 #\x1F20) + (#\x1F29 #\x1F21) + (#\x1F2A #\x1F22) + (#\x1F2B #\x1F23) + (#\x1F2C #\x1F24) + (#\x1F2D #\x1F25) + (#\x1F2E #\x1F26) + (#\x1F2F #\x1F27) + (#\x1F38 #\x1F30) + (#\x1F39 #\x1F31) + (#\x1F3A #\x1F32) + (#\x1F3B #\x1F33) + (#\x1F3C #\x1F34) + (#\x1F3D #\x1F35) + (#\x1F3E #\x1F36) + (#\x1F3F #\x1F37) + (#\x1F48 #\x1F40) + (#\x1F49 #\x1F41) + (#\x1F4A #\x1F42) + (#\x1F4B #\x1F43) + (#\x1F4C #\x1F44) + (#\x1F4D #\x1F45) + (#\x1F50 #\x03C5 #\x0313) + (#\x1F52 #\x03C5 #\x0313 #\x0300) + (#\x1F54 #\x03C5 #\x0313 #\x0301) + (#\x1F56 #\x03C5 #\x0313 #\x0342) + (#\x1F59 #\x1F51) + (#\x1F5B #\x1F53) + (#\x1F5D #\x1F55) + (#\x1F5F #\x1F57) + (#\x1F68 #\x1F60) + (#\x1F69 #\x1F61) + (#\x1F6A #\x1F62) + (#\x1F6B #\x1F63) + (#\x1F6C #\x1F64) + (#\x1F6D #\x1F65) + (#\x1F6E #\x1F66) + (#\x1F6F #\x1F67) + (#\x1F80 #\x1F00 #\x03B9) + (#\x1F81 #\x1F01 #\x03B9) + (#\x1F82 #\x1F02 #\x03B9) + (#\x1F83 #\x1F03 #\x03B9) + (#\x1F84 #\x1F04 #\x03B9) + (#\x1F85 #\x1F05 #\x03B9) + (#\x1F86 #\x1F06 #\x03B9) + (#\x1F87 #\x1F07 #\x03B9) + (#\x1F88 #\x1F00 #\x03B9) + (#\x1F89 #\x1F01 #\x03B9) + (#\x1F8A #\x1F02 #\x03B9) + (#\x1F8B #\x1F03 #\x03B9) + (#\x1F8C #\x1F04 #\x03B9) + (#\x1F8D #\x1F05 #\x03B9) + (#\x1F8E #\x1F06 #\x03B9) + (#\x1F8F #\x1F07 #\x03B9) + (#\x1F90 #\x1F20 #\x03B9) + (#\x1F91 #\x1F21 #\x03B9) + (#\x1F92 #\x1F22 #\x03B9) + (#\x1F93 #\x1F23 #\x03B9) + (#\x1F94 #\x1F24 #\x03B9) + (#\x1F95 #\x1F25 #\x03B9) + (#\x1F96 #\x1F26 #\x03B9) + (#\x1F97 #\x1F27 #\x03B9) + (#\x1F98 #\x1F20 #\x03B9) + (#\x1F99 #\x1F21 #\x03B9) + (#\x1F9A #\x1F22 #\x03B9) + (#\x1F9B #\x1F23 #\x03B9) + (#\x1F9C #\x1F24 #\x03B9) + (#\x1F9D #\x1F25 #\x03B9) + (#\x1F9E #\x1F26 #\x03B9) + (#\x1F9F #\x1F27 #\x03B9) + (#\x1FA0 #\x1F60 #\x03B9) + (#\x1FA1 #\x1F61 #\x03B9) + (#\x1FA2 #\x1F62 #\x03B9) + (#\x1FA3 #\x1F63 #\x03B9) + (#\x1FA4 #\x1F64 #\x03B9) + (#\x1FA5 #\x1F65 #\x03B9) + (#\x1FA6 #\x1F66 #\x03B9) + (#\x1FA7 #\x1F67 #\x03B9) + (#\x1FA8 #\x1F60 #\x03B9) + (#\x1FA9 #\x1F61 #\x03B9) + (#\x1FAA #\x1F62 #\x03B9) + (#\x1FAB #\x1F63 #\x03B9) + (#\x1FAC #\x1F64 #\x03B9) + (#\x1FAD #\x1F65 #\x03B9) + (#\x1FAE #\x1F66 #\x03B9) + (#\x1FAF #\x1F67 #\x03B9) + (#\x1FB2 #\x1F70 #\x03B9) + (#\x1FB3 #\x03B1 #\x03B9) + (#\x1FB4 #\x03AC #\x03B9) + (#\x1FB6 #\x03B1 #\x0342) + (#\x1FB7 #\x03B1 #\x0342 #\x03B9) + (#\x1FB8 #\x1FB0) + (#\x1FB9 #\x1FB1) + (#\x1FBA #\x1F70) + (#\x1FBB #\x1F71) + (#\x1FBC #\x03B1 #\x03B9) + (#\x1FBE #\x03B9) + (#\x1FC2 #\x1F74 #\x03B9) + (#\x1FC3 #\x03B7 #\x03B9) + (#\x1FC4 #\x03AE #\x03B9) + (#\x1FC6 #\x03B7 #\x0342) + (#\x1FC7 #\x03B7 #\x0342 #\x03B9) + (#\x1FC8 #\x1F72) + (#\x1FC9 #\x1F73) + (#\x1FCA #\x1F74) + (#\x1FCB #\x1F75) + (#\x1FCC #\x03B7 #\x03B9) + (#\x1FD2 #\x03B9 #\x0308 #\x0300) + (#\x1FD3 #\x03B9 #\x0308 #\x0301) + (#\x1FD6 #\x03B9 #\x0342) + (#\x1FD7 #\x03B9 #\x0308 #\x0342) + (#\x1FD8 #\x1FD0) + (#\x1FD9 #\x1FD1) + (#\x1FDA #\x1F76) + (#\x1FDB #\x1F77) + (#\x1FE2 #\x03C5 #\x0308 #\x0300) + (#\x1FE3 #\x03C5 #\x0308 #\x0301) + (#\x1FE4 #\x03C1 #\x0313) + (#\x1FE6 #\x03C5 #\x0342) + (#\x1FE7 #\x03C5 #\x0308 #\x0342) + (#\x1FE8 #\x1FE0) + (#\x1FE9 #\x1FE1) + (#\x1FEA #\x1F7A) + (#\x1FEB #\x1F7B) + (#\x1FEC #\x1FE5) + (#\x1FF2 #\x1F7C #\x03B9) + (#\x1FF3 #\x03C9 #\x03B9) + (#\x1FF4 #\x03CE #\x03B9) + (#\x1FF6 #\x03C9 #\x0342) + (#\x1FF7 #\x03C9 #\x0342 #\x03B9) + (#\x1FF8 #\x1F78) + (#\x1FF9 #\x1F79) + (#\x1FFA #\x1F7C) + (#\x1FFB #\x1F7D) + (#\x1FFC #\x03C9 #\x03B9) + (#\x2126 #\x03C9) + (#\x212A #\x006B) + (#\x212B #\x00E5) + (#\x2132 #\x214E) + (#\x2160 #\x2170) + (#\x2161 #\x2171) + (#\x2162 #\x2172) + (#\x2163 #\x2173) + (#\x2164 #\x2174) + (#\x2165 #\x2175) + (#\x2166 #\x2176) + (#\x2167 #\x2177) + (#\x2168 #\x2178) + (#\x2169 #\x2179) + (#\x216A #\x217A) + (#\x216B #\x217B) + (#\x216C #\x217C) + (#\x216D #\x217D) + (#\x216E #\x217E) + (#\x216F #\x217F) + (#\x2183 #\x2184) + (#\x24B6 #\x24D0) + (#\x24B7 #\x24D1) + (#\x24B8 #\x24D2) + (#\x24B9 #\x24D3) + (#\x24BA #\x24D4) + (#\x24BB #\x24D5) + (#\x24BC #\x24D6) + (#\x24BD #\x24D7) + (#\x24BE #\x24D8) + (#\x24BF #\x24D9) + (#\x24C0 #\x24DA) + (#\x24C1 #\x24DB) + (#\x24C2 #\x24DC) + (#\x24C3 #\x24DD) + (#\x24C4 #\x24DE) + (#\x24C5 #\x24DF) + (#\x24C6 #\x24E0) + (#\x24C7 #\x24E1) + (#\x24C8 #\x24E2) + (#\x24C9 #\x24E3) + (#\x24CA #\x24E4) + (#\x24CB #\x24E5) + (#\x24CC #\x24E6) + (#\x24CD #\x24E7) + (#\x24CE #\x24E8) + (#\x24CF #\x24E9) + (#\x2C00 #\x2C30) + (#\x2C01 #\x2C31) + (#\x2C02 #\x2C32) + (#\x2C03 #\x2C33) + (#\x2C04 #\x2C34) + (#\x2C05 #\x2C35) + (#\x2C06 #\x2C36) + (#\x2C07 #\x2C37) + (#\x2C08 #\x2C38) + (#\x2C09 #\x2C39) + (#\x2C0A #\x2C3A) + (#\x2C0B #\x2C3B) + (#\x2C0C #\x2C3C) + (#\x2C0D #\x2C3D) + (#\x2C0E #\x2C3E) + (#\x2C0F #\x2C3F) + (#\x2C10 #\x2C40) + (#\x2C11 #\x2C41) + (#\x2C12 #\x2C42) + (#\x2C13 #\x2C43) + (#\x2C14 #\x2C44) + (#\x2C15 #\x2C45) + (#\x2C16 #\x2C46) + (#\x2C17 #\x2C47) + (#\x2C18 #\x2C48) + (#\x2C19 #\x2C49) + (#\x2C1A #\x2C4A) + (#\x2C1B #\x2C4B) + (#\x2C1C #\x2C4C) + (#\x2C1D #\x2C4D) + (#\x2C1E #\x2C4E) + (#\x2C1F #\x2C4F) + (#\x2C20 #\x2C50) + (#\x2C21 #\x2C51) + (#\x2C22 #\x2C52) + (#\x2C23 #\x2C53) + (#\x2C24 #\x2C54) + (#\x2C25 #\x2C55) + (#\x2C26 #\x2C56) + (#\x2C27 #\x2C57) + (#\x2C28 #\x2C58) + (#\x2C29 #\x2C59) + (#\x2C2A #\x2C5A) + (#\x2C2B #\x2C5B) + (#\x2C2C #\x2C5C) + (#\x2C2D #\x2C5D) + (#\x2C2E #\x2C5E) + (#\x2C60 #\x2C61) + (#\x2C62 #\x026B) + (#\x2C63 #\x1D7D) + (#\x2C64 #\x027D) + (#\x2C67 #\x2C68) + (#\x2C69 #\x2C6A) + (#\x2C6B #\x2C6C) + (#\x2C75 #\x2C76) + (#\x2C80 #\x2C81) + (#\x2C82 #\x2C83) + (#\x2C84 #\x2C85) + (#\x2C86 #\x2C87) + (#\x2C88 #\x2C89) + (#\x2C8A #\x2C8B) + (#\x2C8C #\x2C8D) + (#\x2C8E #\x2C8F) + (#\x2C90 #\x2C91) + (#\x2C92 #\x2C93) + (#\x2C94 #\x2C95) + (#\x2C96 #\x2C97) + (#\x2C98 #\x2C99) + (#\x2C9A #\x2C9B) + (#\x2C9C #\x2C9D) + (#\x2C9E #\x2C9F) + (#\x2CA0 #\x2CA1) + (#\x2CA2 #\x2CA3) + (#\x2CA4 #\x2CA5) + (#\x2CA6 #\x2CA7) + (#\x2CA8 #\x2CA9) + (#\x2CAA #\x2CAB) + (#\x2CAC #\x2CAD) + (#\x2CAE #\x2CAF) + (#\x2CB0 #\x2CB1) + (#\x2CB2 #\x2CB3) + (#\x2CB4 #\x2CB5) + (#\x2CB6 #\x2CB7) + (#\x2CB8 #\x2CB9) + (#\x2CBA #\x2CBB) + (#\x2CBC #\x2CBD) + (#\x2CBE #\x2CBF) + (#\x2CC0 #\x2CC1) + (#\x2CC2 #\x2CC3) + (#\x2CC4 #\x2CC5) + (#\x2CC6 #\x2CC7) + (#\x2CC8 #\x2CC9) + (#\x2CCA #\x2CCB) + (#\x2CCC #\x2CCD) + (#\x2CCE #\x2CCF) + (#\x2CD0 #\x2CD1) + (#\x2CD2 #\x2CD3) + (#\x2CD4 #\x2CD5) + (#\x2CD6 #\x2CD7) + (#\x2CD8 #\x2CD9) + (#\x2CDA #\x2CDB) + (#\x2CDC #\x2CDD) + (#\x2CDE #\x2CDF) + (#\x2CE0 #\x2CE1) + (#\x2CE2 #\x2CE3) + (#\xFB00 #\x0066 #\x0066) + (#\xFB01 #\x0066 #\x0069) + (#\xFB02 #\x0066 #\x006C) + (#\xFB03 #\x0066 #\x0066 #\x0069) + (#\xFB04 #\x0066 #\x0066 #\x006C) + (#\xFB05 #\x0073 #\x0074) + (#\xFB06 #\x0073 #\x0074) + (#\xFB13 #\x0574 #\x0576) + (#\xFB14 #\x0574 #\x0565) + (#\xFB15 #\x0574 #\x056B) + (#\xFB16 #\x057E #\x0576) + (#\xFB17 #\x0574 #\x056D) + (#\xFF21 #\xFF41) + (#\xFF22 #\xFF42) + (#\xFF23 #\xFF43) + (#\xFF24 #\xFF44) + (#\xFF25 #\xFF45) + (#\xFF26 #\xFF46) + (#\xFF27 #\xFF47) + (#\xFF28 #\xFF48) + (#\xFF29 #\xFF49) + (#\xFF2A #\xFF4A) + (#\xFF2B #\xFF4B) + (#\xFF2C #\xFF4C) + (#\xFF2D #\xFF4D) + (#\xFF2E #\xFF4E) + (#\xFF2F #\xFF4F) + (#\xFF30 #\xFF50) + (#\xFF31 #\xFF51) + (#\xFF32 #\xFF52) + (#\xFF33 #\xFF53) + (#\xFF34 #\xFF54) + (#\xFF35 #\xFF55) + (#\xFF36 #\xFF56) + (#\xFF37 #\xFF57) + (#\xFF38 #\xFF58) + (#\xFF39 #\xFF59) + (#\xFF3A #\xFF5A) + (#\x10400 #\x10428) + (#\x10401 #\x10429) + (#\x10402 #\x1042A) + (#\x10403 #\x1042B) + (#\x10404 #\x1042C) + (#\x10405 #\x1042D) + (#\x10406 #\x1042E) + (#\x10407 #\x1042F) + (#\x10408 #\x10430) + (#\x10409 #\x10431) + (#\x1040A #\x10432) + (#\x1040B #\x10433) + (#\x1040C #\x10434) + (#\x1040D #\x10435) + (#\x1040E #\x10436) + (#\x1040F #\x10437) + (#\x10410 #\x10438) + (#\x10411 #\x10439) + (#\x10412 #\x1043A) + (#\x10413 #\x1043B) + (#\x10414 #\x1043C) + (#\x10415 #\x1043D) + (#\x10416 #\x1043E) + (#\x10417 #\x1043F) + (#\x10418 #\x10440) + (#\x10419 #\x10441) + (#\x1041A #\x10442) + (#\x1041B #\x10443) + (#\x1041C #\x10444) + (#\x1041D #\x10445) + (#\x1041E #\x10446) + (#\x1041F #\x10447) + (#\x10420 #\x10448) + (#\x10421 #\x10449) + (#\x10422 #\x1044A) + (#\x10423 #\x1044B) + (#\x10424 #\x1044C) + (#\x10425 #\x1044D) + (#\x10426 #\x1044E) + (#\x10427 #\x1044F))) + + (define (test-strings fr to) + (printf "test case-fold ~s ~s\n" fr to) + (assert (string=? (string-foldcase fr) to)) + (assert (string-ci=? fr to)) + (assert (string=? (string-foldcase to) to))) + + (define (test-char-by-char) + (for-each + (lambda (x) + (test-strings (string (car x)) (list->string (cdr x)))) + case-fold-mapping)) + + (define (test-case-folding) + (test-char-by-char) + (test-strings + (list->string (map car case-fold-mapping)) + (list->string (apply append (map cdr case-fold-mapping)))))) + +