82 lines
2.8 KiB
Factor
82 lines
2.8 KiB
Factor
! Copyright (C) 2005, 2009 Daniel Ehrenberg
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: xml.data xml.writer tools.test fry xml xml.syntax kernel multiline
|
|
xml.writer.private io.streams.string xml.traversal sequences
|
|
io.encodings.utf8 io.files io.files.temp accessors io.directories math
|
|
math.parser ;
|
|
IN: xml.writer.tests
|
|
|
|
! Add a test for pprint-xml with sensitive-tags
|
|
|
|
{ "foo" } [ T{ name { main "foo" } } name>string ] unit-test
|
|
{ "foo" } [ T{ name { space "" } { main "foo" } } name>string ] unit-test
|
|
{ "ns:foo" } [ T{ name { space "ns" } { main "foo" } } name>string ] unit-test
|
|
|
|
: reprints-as ( to from -- )
|
|
[ ] [ string>xml xml>string ] bi-curry* unit-test ;
|
|
|
|
: pprint-reprints-as ( to from -- )
|
|
[ ] [ string>xml pprint-xml>string ] bi-curry* unit-test ;
|
|
|
|
: reprints-same ( string -- ) dup reprints-as ;
|
|
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><x/>" reprints-same
|
|
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
|
<!DOCTYPE foo [<!ENTITY foo \"bar\">]>
|
|
<x>bar</x>"
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
|
<!DOCTYPE foo [<!ENTITY foo 'bar'>]>
|
|
<x>&foo;</x>" reprints-as
|
|
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
|
<!DOCTYPE foo [
|
|
<!ENTITY foo \"bar\">
|
|
<!ELEMENT br EMPTY>
|
|
<!ATTLIST list type (bullets|ordered|glossary) \"ordered\">
|
|
<!NOTATION foo bar>
|
|
<?baz bing bang bong?>
|
|
<!--wtf-->
|
|
]>
|
|
<x>
|
|
bar
|
|
</x>"
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
|
<!DOCTYPE foo [ <!ENTITY foo 'bar'> <!ELEMENT br EMPTY>
|
|
<!ATTLIST list
|
|
type (bullets|ordered|glossary) \"ordered\">
|
|
<!NOTATION foo bar> <?baz bing bang bong?>
|
|
<!--wtf-->
|
|
]>
|
|
<x>&foo;</x>" pprint-reprints-as
|
|
|
|
{ t } [ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" dup string>xml-chunk xml>string = ] unit-test
|
|
{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><a b=\"c\"/>" }
|
|
[ "<a b='c'/>" string>xml xml>string ] unit-test
|
|
{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo>bar baz</foo>" }
|
|
[ "<foo>bar</foo>" string>xml [ " baz" append ] map xml>string ] unit-test
|
|
{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<foo>\n bar\n</foo>" }
|
|
[ "<foo> bar </foo>" string>xml pprint-xml>string ] unit-test
|
|
{ "<foo'>" } [ "<foo'>" <unescaped> xml>string ] unit-test
|
|
|
|
: test-file ( -- path )
|
|
"test.xml" temp-file ;
|
|
|
|
{ } [
|
|
"<?xml version='1.0' encoding='UTF-16BE'?><x/>" string>xml test-file utf8 [ write-xml ] with-file-writer
|
|
] unit-test
|
|
{ "x" } [ test-file file>xml body>> name>> main>> ] unit-test
|
|
{ } [ test-file delete-file ] unit-test
|
|
|
|
{ } [
|
|
{ 1 2 3 4 } [
|
|
[ number>string ] [ sq number>string ] bi
|
|
[XML <tr><td><-></td><td><-></td></tr> XML]
|
|
] map [XML <h2>Timings</h2> <table><-></table> XML]
|
|
pprint-xml
|
|
] unit-test
|
|
|
|
{ "<test name=\"bob\"/>" } [
|
|
"test" { { "name" "bob" } } { } <tag> xml>string
|
|
] unit-test
|