2009-01-19 23:25:15 -05:00
|
|
|
USING: accessors assocs combinators continuations fry generalizations
|
|
|
|
io.pathnames kernel macros sequences stack-checker tools.test xml
|
2009-01-28 15:33:33 -05:00
|
|
|
xml.utilities xml.writer arrays xml.data ;
|
2009-01-19 23:25:15 -05:00
|
|
|
IN: xml.tests.suite
|
|
|
|
|
2009-01-20 16:37:21 -05:00
|
|
|
TUPLE: xml-test id uri sections description type ;
|
2009-01-19 23:25:15 -05:00
|
|
|
|
2009-01-20 16:37:21 -05:00
|
|
|
: >xml-test ( tag -- test )
|
|
|
|
xml-test new swap {
|
2009-01-28 15:33:33 -05:00
|
|
|
[ "TYPE" attr >>type ]
|
|
|
|
[ "ID" attr >>id ]
|
|
|
|
[ "URI" attr >>uri ]
|
|
|
|
[ "SECTIONS" attr >>sections ]
|
2009-01-19 23:25:15 -05:00
|
|
|
[ children>> xml-chunk>string >>description ]
|
|
|
|
} cleave ;
|
|
|
|
|
|
|
|
: parse-tests ( xml -- tests )
|
2009-01-20 16:37:21 -05:00
|
|
|
"TEST" tags-named [ >xml-test ] map ;
|
2009-01-19 23:25:15 -05:00
|
|
|
|
|
|
|
: base "resource:basis/xml/tests/xmltest/" ;
|
|
|
|
|
|
|
|
MACRO: drop-output ( quot -- newquot )
|
|
|
|
dup infer out>> '[ @ _ ndrop ] ;
|
|
|
|
|
|
|
|
MACRO: drop-input ( quot -- newquot )
|
|
|
|
infer in>> '[ _ ndrop ] ;
|
|
|
|
|
|
|
|
: fails? ( quot -- ? )
|
|
|
|
[ '[ _ drop-output f ] ]
|
|
|
|
[ '[ drop _ drop-input t ] ] bi recover ; inline
|
|
|
|
|
|
|
|
: well-formed? ( uri -- answer )
|
|
|
|
[ file>xml ] fails? "not-wf" "valid" ? ;
|
|
|
|
|
2009-01-20 16:37:21 -05:00
|
|
|
: test-quots ( test -- result quot )
|
2009-01-19 23:25:15 -05:00
|
|
|
[ type>> '[ _ ] ]
|
2009-01-20 16:37:21 -05:00
|
|
|
[ '[ _ uri>> base swap append-path well-formed? ] ] bi ;
|
2009-01-19 23:25:15 -05:00
|
|
|
|
2009-01-20 16:37:21 -05:00
|
|
|
: xml-tests ( -- tests )
|
2009-01-19 23:25:15 -05:00
|
|
|
base "xmltest.xml" append-path file>xml
|
2009-01-20 16:37:21 -05:00
|
|
|
parse-tests [ test-quots 2array ] map ;
|
|
|
|
|
|
|
|
: run-xml-tests ( -- )
|
|
|
|
xml-tests [ unit-test ] assoc-each ;
|
|
|
|
|
|
|
|
: works? ( result quot -- ? )
|
|
|
|
[ first ] [ call ] bi* = ;
|
|
|
|
|
|
|
|
: partition-xml-tests ( -- successes failures )
|
|
|
|
xml-tests [ first2 works? ] partition ;
|
|
|
|
|
|
|
|
: failing-valids ( -- tests )
|
|
|
|
partition-xml-tests nip [ second first ] map [ type>> "valid" = ] filter ;
|
2009-01-28 15:33:33 -05:00
|
|
|
|
|
|
|
[ ] [ partition-xml-tests 2drop ] unit-test
|