2008-01-09 19:13:26 -05:00
|
|
|
! Copyright (C) 2003, 2008 Slava Pestov.
|
2007-09-20 18:09:08 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2008-07-28 18:54:10 -04:00
|
|
|
USING: accessors namespaces arrays prettyprint sequences kernel
|
|
|
|
vectors quotations words parser assocs combinators continuations
|
2008-07-29 04:17:21 -04:00
|
|
|
debugger io io.styles io.files vocabs vocabs.loader source-files
|
2008-08-12 04:31:48 -04:00
|
|
|
compiler.units summary stack-checker effects tools.vocabs ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: tools.test
|
|
|
|
|
|
|
|
SYMBOL: failures
|
|
|
|
|
|
|
|
: <failure> ( error what -- triple )
|
|
|
|
error-continuation get 3array ;
|
|
|
|
|
2008-02-06 23:12:44 -05:00
|
|
|
: failure ( error what -- )
|
2008-10-20 22:07:46 -04:00
|
|
|
"--> test failed!" print
|
2008-02-06 23:12:44 -05:00
|
|
|
<failure> failures get push ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
SYMBOL: this-test
|
|
|
|
|
|
|
|
: (unit-test) ( what quot -- )
|
|
|
|
swap dup . flush this-test set
|
2008-05-07 18:42:41 -04:00
|
|
|
failures get [
|
2007-12-11 22:36:40 -05:00
|
|
|
[ this-test get failure ] recover
|
2007-09-20 18:09:08 -04:00
|
|
|
] [
|
|
|
|
call
|
|
|
|
] if ;
|
|
|
|
|
|
|
|
: unit-test ( output input -- )
|
|
|
|
[ 2array ] 2keep [
|
|
|
|
{ } swap with-datastack swap >array assert=
|
|
|
|
] 2curry (unit-test) ;
|
|
|
|
|
2008-02-06 23:58:41 -05:00
|
|
|
: short-effect ( effect -- pair )
|
2008-07-28 18:54:10 -04:00
|
|
|
[ in>> length ] [ out>> length ] bi 2array ;
|
2008-02-06 23:58:41 -05:00
|
|
|
|
|
|
|
: must-infer-as ( effect quot -- )
|
|
|
|
>r 1quotation r> [ infer short-effect ] curry unit-test ;
|
|
|
|
|
|
|
|
: must-infer ( word/quot -- )
|
|
|
|
dup word? [ 1quotation ] when
|
|
|
|
[ infer drop ] curry [ ] swap unit-test ;
|
|
|
|
|
|
|
|
: must-fail-with ( quot pred -- )
|
2008-02-10 02:38:58 -05:00
|
|
|
>r [ f ] compose r>
|
2008-02-06 14:15:15 -05:00
|
|
|
[ recover ] 2curry
|
2008-02-06 16:00:10 -05:00
|
|
|
[ t ] swap unit-test ;
|
2008-02-06 14:15:15 -05:00
|
|
|
|
|
|
|
: must-fail ( quot -- )
|
|
|
|
[ drop t ] must-fail-with ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-02-06 23:12:44 -05:00
|
|
|
: (run-test) ( vocab -- )
|
|
|
|
dup vocab-source-loaded? [
|
2008-03-01 17:00:45 -05:00
|
|
|
vocab-tests [ run-file ] each
|
|
|
|
] [ drop ] if ;
|
2008-02-06 23:12:44 -05:00
|
|
|
|
|
|
|
: run-test ( vocab -- failures )
|
|
|
|
V{ } clone [
|
|
|
|
failures [
|
2008-02-06 23:58:41 -05:00
|
|
|
[ (run-test) ] [ swap failure ] recover
|
2008-02-06 23:12:44 -05:00
|
|
|
] with-variable
|
|
|
|
] keep ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: failure. ( triple -- )
|
|
|
|
dup second .
|
|
|
|
dup first print-error
|
|
|
|
"Traceback" swap third write-object ;
|
|
|
|
|
2008-02-07 19:03:01 -05:00
|
|
|
: test-failures. ( assoc -- )
|
2008-02-08 02:49:05 -05:00
|
|
|
[
|
2007-09-20 18:09:08 -04:00
|
|
|
nl
|
2008-09-06 20:13:59 -04:00
|
|
|
[
|
2008-01-11 03:32:25 -05:00
|
|
|
"==== ALL TESTS PASSED" print
|
|
|
|
] [
|
|
|
|
"==== FAILING TESTS:" print
|
2008-02-06 22:15:33 -05:00
|
|
|
[
|
2008-02-06 23:12:44 -05:00
|
|
|
swap vocab-heading.
|
2008-02-08 02:49:05 -05:00
|
|
|
[ failure. nl ] each
|
2008-02-06 22:15:33 -05:00
|
|
|
] assoc-each
|
2008-09-06 20:13:59 -04:00
|
|
|
] if-empty
|
2008-02-06 22:15:33 -05:00
|
|
|
] [
|
2008-02-08 02:49:05 -05:00
|
|
|
"==== NOTHING TO TEST" print
|
|
|
|
] if* ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-02-06 23:12:44 -05:00
|
|
|
: run-tests ( prefix -- failures )
|
2008-09-06 20:13:59 -04:00
|
|
|
child-vocabs [ f ] [
|
2008-02-06 22:15:33 -05:00
|
|
|
[ dup run-test ] { } map>assoc
|
2008-04-26 00:17:08 -04:00
|
|
|
[ second empty? not ] filter
|
2008-09-06 20:13:59 -04:00
|
|
|
] if-empty ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-02-06 22:15:33 -05:00
|
|
|
: test ( prefix -- )
|
2008-02-07 19:03:01 -05:00
|
|
|
run-tests test-failures. ;
|
2008-02-06 22:15:33 -05:00
|
|
|
|
|
|
|
: run-all-tests ( prefix -- failures )
|
|
|
|
"" run-tests ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-02-06 22:15:33 -05:00
|
|
|
: test-all ( -- )
|
2008-02-07 19:03:01 -05:00
|
|
|
run-all-tests test-failures. ;
|