]> gitweb.factorcode.org Git - factor.git/blob - basis/unicode/normalize/normalize-tests.factor
factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!
[factor.git] / basis / unicode / normalize / normalize-tests.factor
1 USING: unicode.normalize kernel tools.test sequences
2 simple-flat-file io.encodings.utf8 io.files splitting math.parser
3 locals math quotations assocs combinators unicode.normalize.private ;
4 IN: unicode.normalize.tests
5
6 { "ab\u000323\u000302cd" } [ "ab\u000302" "\u000323cd" string-append ] unit-test
7
8 { "ab\u00064b\u000347\u00034e\u00034d\u000346" } [ "ab\u000346\u000347\u00064b\u00034e\u00034d" dup reorder ] unit-test
9 { "hello" "hello" } [ "hello" [ nfd ] keep nfkd ] unit-test
10 { "\u00FB012\u002075\u00017F\u000323\u000307" "fi25s\u000323\u000307" }
11 [ "\u00FB012\u002075\u001E9B\u000323" [ nfd ] keep nfkd ] unit-test
12
13 { "\u001E69" "s\u000323\u000307" } [ "\u001E69" [ nfc ] keep nfd ] unit-test
14 { "\u001E0D\u000307" } [ "\u001E0B\u000323" nfc ] unit-test
15
16 { 54620 } [ 4370 4449 4523 jamo>hangul ] unit-test
17 { 4370 4449 4523 } [ 54620 hangul>jamo first3 ] unit-test
18 { t } [ 54620 hangul? ] unit-test
19 { f } [ 0 hangul? ] unit-test
20 { "\u001112\u001161\u0011ab" } [ "\u00d55c" nfd ] unit-test
21 { "\u00d55c" } [ "\u001112\u001161\u0011ab" nfc ] unit-test
22
23 : parse-test ( -- tests )
24     "vocab:unicode/normalize/NormalizationTest.txt" data
25     [ 5 head [ " " split [ hex> ] "" map-as ] map ] map ;
26
27 :: assert= ( test spec quot -- )
28     spec [
29         [
30             [ 1 - test nth ] bi@
31             [ 1quotation ] [ quot curry ] bi* unit-test
32         ] with each
33     ] assoc-each ;
34
35 : run-line ( test -- )
36     {
37         [ { { 2 { 1 2 3 } } { 4 { 4 5 } } } [ nfc ] assert= ]
38         [ { { 3 { 1 2 3 } } { 5 { 4 5 } } } [ nfd ] assert= ]
39         [ { { 4 { 1 2 3 4 5 } } } [ nfkc ] assert= ]
40         [ { { 5 { 1 2 3 4 5 } } } [ nfkd ] assert= ]
41     } cleave ;
42
43 parse-test [ run-line ] each