]> gitweb.factorcode.org Git - factor.git/blob - basis/regexp/minimize/minimize-tests.factor
Switch to https urls
[factor.git] / basis / regexp / minimize / minimize-tests.factor
1 ! Copyright (C) 2009 Daniel Ehrenberg
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: tools.test regexp.minimize assocs regexp
4 accessors regexp.transition-tables regexp.parser
5 regexp.classes regexp.negation ;
6 IN: regexp.minimize.tests
7
8 { t } [ 1 2 HS{ { 1 2 } } same-partition? ] unit-test
9 { t } [ 2 1 HS{ { 1 2 } } same-partition? ] unit-test
10 { f } [ 2 3 HS{ { 1 2 } } same-partition? ] unit-test
11
12 { H{ { 1 1 } { 2 1 } { 3 3 } { 4 3 } } }
13 [ HS{ { 1 1 } { 1 2 } { 2 2 } { 3 3 } { 3 4 } { 4 4 } } partition>classes ] unit-test
14
15 : regexp-states ( string -- n )
16     parse-regexp ast>dfa transitions>> assoc-size ;
17
18 { 3 } [ "ab|ac" regexp-states ] unit-test
19 { 3 } [ "a(b|c)" regexp-states ] unit-test
20 { 1 } [ "((aa*)*)*" regexp-states ] unit-test
21 { 1 } [ "a|((aa*)*)*" regexp-states ] unit-test
22 { 2 } [ "ab|((aa*)*)*b" regexp-states ] unit-test
23 { 4 } [ "ab|cd" regexp-states ] unit-test
24 { 1 } [ "(?i:[a-z]*|[A-Z]*)" regexp-states ] unit-test
25
26 {
27     T{ transition-table
28         { transitions H{
29             { 0 H{ { CHAR: a 1 } { CHAR: b 1 } } }
30             { 1 H{ { CHAR: a 2 } { CHAR: b 2 } } }
31             { 2 H{ { CHAR: c 3 } } }
32             { 3 H{ } }
33         } }
34         { start-state 0 }
35         { final-states HS{ 3 } }
36     }
37 } [
38     T{ transition-table
39         { transitions H{
40             { 0 H{ { CHAR: a 1 } { CHAR: b 4 } } }
41             { 1 H{ { CHAR: a 2 } { CHAR: b 5 } } }
42             { 2 H{ { CHAR: c 3 } } }
43             { 3 H{ } }
44             { 4 H{ { CHAR: a 2 } { CHAR: b 5 } } }
45             { 5 H{ { CHAR: c 6 } } }
46             { 6 H{ } }
47         } }
48         { start-state 0 }
49         { final-states HS{ 3 6 } }
50     } combine-states
51 ] unit-test
52
53 { H{ { T{ or-class f { 2 1 } } 3 } { 4 5 } } }
54 [ H{ { 1 3 } { 2 3 } { 4 5 } } combine-state-transitions ] unit-test