! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: farkup kernel peg peg.ebnf tools.test namespaces xml urls.encoding assocs xml.traversal xml.data sequences random io continuations math ; IN: farkup.tests relative-link-prefix off disable-images? off link-no-follow? off [ "Baz" ] [ "Foo/Bar/Baz" simple-link-title ] unit-test [ "Baz" ] [ "Baz" simple-link-title ] unit-test [ ] [ "abcd-*strong*\nasdifj\nweouh23ouh23" parse-farkup drop ] unit-test [ ] [ "abcd-*strong*\nasdifj\nweouh23ouh23\n" parse-farkup drop ] unit-test [ "

a-b

" ] [ "a-b" convert-farkup ] unit-test [ "

foo

bar

" ] [ "*foo\nbar\n" convert-farkup ] unit-test [ "

Wow!

" ] [ "*Wow!*" convert-farkup ] unit-test [ "

Wow.

" ] [ "_Wow._" convert-farkup ] unit-test [ "

" ] [ "*" convert-farkup ] unit-test [ "

*

" ] [ "\\*" convert-farkup ] unit-test [ "

*

" ] [ "\\**" convert-farkup ] unit-test [ "" ] [ "-a-b" convert-farkup ] unit-test [ "" ] [ "-foo" convert-farkup ] unit-test [ "" ] [ "-foo\n" convert-farkup ] unit-test [ "" ] [ "-foo\n-bar" convert-farkup ] unit-test [ "" ] [ "-foo\n-bar\n" convert-farkup ] unit-test [ "

bar

" ] [ "-foo\nbar\n" convert-farkup ] unit-test [ "
  1. a-b
" ] [ "#a-b" convert-farkup ] unit-test [ "
  1. foo
" ] [ "#foo" convert-farkup ] unit-test [ "
  1. foo
" ] [ "#foo\n" convert-farkup ] unit-test [ "
  1. foo
  2. bar
" ] [ "#foo\n#bar" convert-farkup ] unit-test [ "
  1. foo
  2. bar
" ] [ "#foo\n#bar\n" convert-farkup ] unit-test [ "
  1. foo

bar

" ] [ "#foo\nbar\n" convert-farkup ] unit-test [ "" ] [ "\n\n" convert-farkup ] unit-test [ "" ] [ "\r\n\r\n" convert-farkup ] unit-test [ "" ] [ "\r\r\r\r" convert-farkup ] unit-test [ "" ] [ "\r\r\r" convert-farkup ] unit-test [ "" ] [ "\n\n\n" convert-farkup ] unit-test [ "

foo

bar

" ] [ "foo\n\nbar" convert-farkup ] unit-test [ "

foo

bar

" ] [ "foo\r\n\r\nbar" convert-farkup ] unit-test [ "

foo

bar

" ] [ "foo\r\rbar" convert-farkup ] unit-test [ "

foo

bar

" ] [ "foo\r\r\nbar" convert-farkup ] unit-test [ "

bar

" ] [ "\nbar\n" convert-farkup ] unit-test [ "

bar

" ] [ "\rbar\r" convert-farkup ] unit-test [ "

bar

" ] [ "\r\nbar\r\n" convert-farkup ] unit-test [ "

foo

bar

" ] [ "foo\n\n\nbar" convert-farkup ] unit-test [ "" ] [ "" convert-farkup ] unit-test [ "
a
" ] [ "|a" convert-farkup ] unit-test [ "
a
" ] [ "|a|" convert-farkup ] unit-test [ "
ab
" ] [ "|a|b|" convert-farkup ] unit-test [ "
ab
cd
" ] [ "|a|b|\n|c|d|" convert-farkup ] unit-test [ "
ab
cd
" ] [ "|a|b|\n|c|d|\n" convert-farkup ] unit-test [ "

foo

aheading

adfasd

" ] [ "*foo*\n=aheading=\nadfasd" convert-farkup ] unit-test [ "

foo

" ] [ "=foo=\n" convert-farkup ] unit-test [ "

lol=foo=

" ] [ "lol=foo=\n" convert-farkup ] unit-test [ "

=foo

" ] [ "=foo\n" convert-farkup ] unit-test [ "

=foo

" ] [ "=foo" convert-farkup ] unit-test [ "

==foo

" ] [ "==foo" convert-farkup ] unit-test [ "

foo

" ] [ "==foo=" convert-farkup ] unit-test [ "

foo

" ] [ "==foo==" convert-farkup ] unit-test [ "

foo

" ] [ "==foo==" convert-farkup ] unit-test [ "

foo

" ] [ "===foo==" convert-farkup ] unit-test [ "

foo

" ] [ "=foo==" convert-farkup ] unit-test [ "
int main()
" ] [ "[c{int main()}]" convert-farkup ] unit-test [ "

\"lol.jpg\"/

" ] [ "[[image:lol.jpg]]" convert-farkup ] unit-test [ "

\"teh

" ] [ "[[image:lol.jpg|teh lol]]" convert-farkup ] unit-test [ "

http://lol.com

" ] [ "[[http://lol.com]]" convert-farkup ] unit-test [ "

haha

" ] [ "[[http://lol.com|haha]]" convert-farkup ] unit-test [ "

haha

" ] [ "[[http://lol.com/search?q=sex|haha]]" convert-farkup ] unit-test [ "

Bar

" ] [ "[[Foo/Bar]]" convert-farkup ] unit-test "/wiki/view/" relative-link-prefix [ [ "

Bar

" ] [ "[[Foo/Bar]]" convert-farkup ] unit-test ] with-variable [ ] [ "[{}]" convert-farkup drop ] unit-test [ "
hello
" ] [ "[{hello}]" convert-farkup ] unit-test [ "

Feature comparison:

aFactorJavaLisp
CoolnessYesNoNo
BadassYesNoNo
EnterpriseYesYesNo
KosherYesNoYes
" ] [ "Feature comparison:\n|a|Factor|Java|Lisp|\n|Coolness|Yes|No|No|\n|Badass|Yes|No|No|\n|Enterprise|Yes|Yes|No|\n|Kosher|Yes|No|Yes|\n" convert-farkup ] unit-test [ "

Feature comparison:

aFactorJavaLisp
CoolnessYesNoNo
BadassYesNoNo
EnterpriseYesYesNo
KosherYesNoYes
" ] [ "Feature comparison:\n\n|a|Factor|Java|Lisp|\n|Coolness|Yes|No|No|\n|Badass|Yes|No|No|\n|Enterprise|Yes|Yes|No|\n|Kosher|Yes|No|Yes|\n" convert-farkup ] unit-test [ "

This wiki is written in Factor and is hosted on a http://linode.com virtual server.

" ] [ "This wiki is written in [[Factor]] and is hosted on a [[http://linode.com|http://linode.com]] virtual server." convert-farkup ] unit-test [ "

a c

" ] [ "[[a]] [[b|c]]" convert-farkup ] unit-test [ "

C++

" ] [ "[[C++]]" convert-farkup ] unit-test [ "

<foo>

" ] [ "" convert-farkup ] unit-test [ "

asdf

" ] [ "asdf\n-lol\n-haha" convert-farkup ] unit-test [ "

asdf

" ] [ "asdf\n\n-lol\n-haha" convert-farkup ] unit-test [ "
" ] [ "___" convert-farkup ] unit-test [ "
" ] [ "___\n" convert-farkup ] unit-test [ "

before:

{ 1 2 3 } 1 tail
" ] [ "before:\n[factor{{ 1 2 3 } 1 tail}]" convert-farkup ] unit-test [ "

Factor-rific!

" ] [ "[[Factor]]-rific!" convert-farkup ] unit-test [ "
 1 2 3 
" ] [ "[ factor { 1 2 3 }]" convert-farkup ] unit-test [ "

paragraph


" ] [ "paragraph\n___" convert-farkup ] unit-test [ "

paragraph

a b

" ] [ "paragraph\n a ___ b" convert-farkup ] unit-test [ "
" ] [ "\n- a\n___" convert-farkup ] unit-test [ "

helloworld how are you today?

" ] [ "hello_world how are you today?\n- hello_world how are you today?" convert-farkup ] unit-test : check-link-escaping ( string -- link ) convert-farkup string>xml-chunk "a" deep-tag-named "href" attr url-decode ; [ "Trader Joe\"s" ] [ "[[Trader Joe\"s]]" check-link-escaping ] unit-test [ "" ] [ "[[]]" check-link-escaping ] unit-test [ "&blah;" ] [ "[[&blah;]]" check-link-escaping ] unit-test [ "C++" ] [ "[[C++]]" check-link-escaping ] unit-test [ "

The important thing

" ] [ "=The _important_ thing=" convert-farkup ] unit-test [ "

emphasized text

" ] [ "[[Foo|*emphasized* text]]" convert-farkup ] unit-test [ "
bolditalics
" ] [ "|*bold*|_italics_|" convert-farkup ] unit-test [ "

italicsboth

" ] [ "_italics*both" convert-farkup ] unit-test [ "

italicsboth

" ] [ "_italics*both*" convert-farkup ] unit-test [ "

italicsboth

" ] [ "_italics*both*_" convert-farkup ] unit-test [ "

italicsboth

" ] [ "_italics*both_" convert-farkup ] unit-test [ "

italicsbothafter

" ] [ "_italics*both_after*" convert-farkup ] unit-test [ "
foo|bar
" ] [ "|foo\\|bar|" convert-farkup ] unit-test [ "

" ] [ "\\" convert-farkup ] unit-test [ "

[abc]

" ] [ "[abc]" convert-farkup ] unit-test : random-markup ( -- string ) 10 [ 2 random 1 = [ { "[[" "*" "_" "|" "-" "[{" "\n" } random ] [ "abc" ] if ] replicate concat ; [ t ] [ 100 [ drop random-markup [ convert-farkup drop t ] [ drop print f ] recover ] all? ] unit-test [ "

http://foo.com/~foo

" ] [ "[[http://foo.com/~foo]]" convert-farkup ] unit-test