! 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 { 1 2 } } } [ { 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 { 1 2 3 } } } } [ { 1 2 } { 2 3 } 2array ] unit-test { T{ or-class { seq { 2 3 } } } } [ { 2 3 } 1 2array ] unit-test { f } [ t ] unit-test { t } [ f ] unit-test { f } [ 1 1 t answer ] unit-test { t } [ { 1 2 } 1 2 3array ] unit-test { f } [ { 1 2 } 1 2 3array ] unit-test ! Making classes into nested conditionals { { 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 } } [ { { 3 t } } table>condition ] unit-test { { T{ primitive-class } } } [ { { 1 t } { 2 T{ primitive-class } } } table>questions ] unit-test { { { 1 t } { 2 t } } } [ { { 1 t } { 2 T{ primitive-class } } } T{ primitive-class } t assoc-answer ] unit-test { { { 1 t } } } [ { { 1 t } { 2 T{ primitive-class } } } T{ primitive-class } f assoc-answer ] unit-test { T{ condition f T{ primitive-class } { 1 2 } { 1 } } } [ { { 1 t } { 2 T{ primitive-class } } } 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 3 2 } { 1 3 } } T{ condition f T{ primitive-class f foo } { 1 2 } { 1 } } } } [ { { 1 t } { 3 T{ primitive-class f bar } } { 2 T{ primitive-class f foo } } } table>condition ] unit-test { t } [ foo dup t answer ] unit-test { f } [ foo dup f answer ] unit-test { T{ primitive-class f foo } } [ foo bar t answer ] unit-test { T{ primitive-class f foo } } [ foo bar f answer ] unit-test { T{ primitive-class f foo } } [ foo bar 2array bar t answer ] unit-test { T{ primitive-class f bar } } [ foo bar 2array foo t answer ] unit-test { f } [ foo bar 2array foo f answer ] unit-test { f } [ foo bar 2array bar f answer ] unit-test { t } [ foo bar 2array bar t answer ] unit-test { T{ primitive-class f foo } } [ foo bar 2array bar f answer ] unit-test