! Copyright (C) 2008 Doug Coleman. ! See https://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 { "

https://lol.com

" } [ "[[https://lol.com]]" convert-farkup ] unit-test { "

haha

" } [ "[[https://lol.com|haha]]" convert-farkup ] unit-test { "

haha

" } [ "[[https://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 https://linode.com virtual server.

" } [ "This wiki is written in [[Factor]] and is hosted on a [[https://linode.com|https://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-integers? ] unit-test { "

https://foo.com/~foo

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