! Copyright (C) 2009 Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. USING: regexp.classes tools.test arrays kernel ; IN: regexp.classes.tests ! Class algebra [ f ] [ { 1 2 } ] unit-test [ T{ or-class f { 2 1 } } ] [ { 1 2 } ] unit-test [ 3 ] [ { 1 2 } 3 2array ] unit-test [ CHAR: A ] [ CHAR: A LETTER-class 2array ] unit-test [ CHAR: A ] [ LETTER-class CHAR: A 2array ] unit-test [ T{ primitive-class { class LETTER-class } } ] [ CHAR: A LETTER-class 2array ] unit-test [ T{ primitive-class { class LETTER-class } } ] [ LETTER-class CHAR: A 2array ] unit-test [ t ] [ { t 1 } ] unit-test [ t ] [ { 1 t } ] unit-test [ f ] [ { f 1 } ] unit-test [ f ] [ { 1 f } ] unit-test [ 1 ] [ { f 1 } ] unit-test [ 1 ] [ { 1 f } ] unit-test [ 1 ] [ { t 1 } ] unit-test [ 1 ] [ { 1 t } ] unit-test [ 1 ] [ 1 ] unit-test [ 1 ] [ { 1 1 } ] unit-test [ 1 ] [ { 1 1 } ] unit-test [ t ] [ { t t } ] unit-test [ T{ primitive-class { class letter-class } } ] [ letter-class dup 2array ] unit-test [ T{ primitive-class { class letter-class } } ] [ letter-class dup 2array ] unit-test [ T{ or-class { seq { 2 3 1 } } } ] [ { 1 2 } { 2 3 } 2array ] unit-test ! Making classes into nested conditionals [ V{ 1 2 3 4 } ] [ T{ and-class f { 1 T{ not-class f 2 } T{ or-class f { 3 4 } } 2 } } class>questions ] unit-test [ { 3 } ] [ { { t 3 } } table>condition ] unit-test [ { T{ primitive-class } } ] [ { { t 1 } { T{ primitive-class } 2 } } table>questions ] unit-test [ { { t 1 } { t 2 } } ] [ { { t 1 } { T{ primitive-class } 2 } } T{ primitive-class } t answer ] unit-test [ { { t 1 } } ] [ { { t 1 } { T{ primitive-class } 2 } } T{ primitive-class } f answer ] unit-test [ T{ condition f T{ primitive-class } { 1 2 } { 1 } } ] [ { { t 1 } { T{ primitive-class } 2 } } table>condition ] unit-test SYMBOL: foo SYMBOL: bar [ T{ condition f T{ primitive-class f bar } T{ condition f T{ primitive-class f foo } { 1 2 3 } { 1 3 } } T{ condition f T{ primitive-class f foo } { 1 2 } { 1 } } } ] [ { { t 1 } { T{ primitive-class f foo } 2 } { T{ primitive-class f bar } 3 } } table>condition ] unit-test [ t ] [ foo dup t replace-question ] unit-test [ f ] [ foo dup f replace-question ] unit-test [ T{ primitive-class f foo } ] [ foo bar t replace-question ] unit-test [ T{ primitive-class f foo } ] [ foo bar f replace-question ] unit-test [ T{ primitive-class f foo } ] [ foo bar 2array bar t replace-question ] unit-test [ T{ primitive-class f bar } ] [ foo bar 2array foo t replace-question ] unit-test [ f ] [ foo bar 2array foo f replace-question ] unit-test [ f ] [ foo bar 2array bar f replace-question ] unit-test [ t ] [ foo bar 2array bar t replace-question ] unit-test [ T{ primitive-class f foo } ] [ foo bar 2array bar f replace-question ] unit-test