1 ! Copyright (C) 2015 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors classes classes.error classes.tuple
4 compiler.units effects eval generic io.streams.string kernel
5 math namespaces parser tools.test words words.symbol ;
6 IN: classes.error.tests
9 ERROR: error-class-test a b c ;
11 { "( a b c -- * )" } [ \ error-class-test stack-effect effect>string ] unit-test
12 { f } [ \ error-class-test "inline" word-prop ] unit-test
14 [ "IN: classes.error.tests ERROR: error-x ; : error-x 3 ;" eval( -- ) ]
15 [ error>> error>> redefine-error? ] must-fail-with
19 { } [ [ \ error-y dup class? [ forget-class ] [ drop ] if ] with-compilation-unit ] unit-test
21 { } [ "IN: classes.error.tests GENERIC: error-y ( a -- b )" eval( -- ) ] unit-test
23 { f } [ \ error-y tuple-class? ] unit-test
25 { f } [ \ error-y error-class? ] unit-test
27 { t } [ \ error-y generic? ] unit-test
29 { } [ "IN: classes.error.tests ERROR: error-y ;" eval( -- ) ] unit-test
31 { t } [ \ error-y tuple-class? ] unit-test
33 { t } [ \ error-y error-class? ] unit-test
35 { f } [ \ error-y generic? ] unit-test
37 ERROR: base-error x y ;
38 ERROR: derived-error < base-error z ;
40 { ( x y z -- * ) } [ \ derived-error stack-effect ] unit-test