USING: tools.test sequence-parser unicode.categories kernel accessors ; IN: sequence-parser.tests [ "hello" ] [ "hello" [ take-rest ] parse-sequence ] unit-test [ "hi" " how are you?" ] [ "hi how are you?" [ [ [ current blank? ] take-until ] [ take-rest ] bi ] parse-sequence ] unit-test [ "foo" ";bar" ] [ "foo;bar" [ [ CHAR: ; take-until-object ] [ take-rest ] bi ] parse-sequence ] unit-test [ "foo " "and bar" ] [ "foo and bar" [ [ "and" take-until-sequence ] [ take-rest ] bi ] parse-sequence ] unit-test [ "foo " " bar" ] [ "foo and bar" [ [ "and" take-until-sequence ] [ "and" take-sequence drop ] [ take-rest ] tri ] parse-sequence ] unit-test [ "foo " " bar" ] [ "foo and bar" [ [ "and" take-until-sequence* ] [ take-rest ] bi ] parse-sequence ] unit-test [ { 1 2 } ] [ { 1 2 3 4 } { 3 4 } take-until-sequence ] unit-test [ f "aaaa" ] [ "aaaa" [ "b" take-until-sequence ] [ take-rest ] bi ] unit-test [ 6 ] [ " foo " [ skip-whitespace n>> ] parse-sequence ] unit-test [ { 1 2 } ] [ { 1 2 3 } [ current 3 = ] take-until ] unit-test [ "ab" ] [ "abcd" "ab" take-sequence ] unit-test [ f ] [ "abcd" "lol" take-sequence ] unit-test [ "ab" ] [ "abcd" [ "lol" take-sequence drop ] [ "ab" take-sequence ] bi ] unit-test [ "" ] [ "abcd" "" take-sequence ] unit-test [ "cd" ] [ "abcd" [ "ab" take-sequence drop ] [ "cd" take-sequence ] bi ] unit-test [ f ] [ "\"abc\" asdf" [ CHAR: \ CHAR: " take-quoted-string drop ] [ "asdf" take-sequence ] bi ] unit-test [ "abc\\\"def" ] [ "\"abc\\\"def\" asdf" CHAR: \ CHAR: " take-quoted-string ] unit-test [ "asdf" ] [ "\"abc\" asdf" [ CHAR: \ CHAR: " take-quoted-string drop ] [ skip-whitespace "asdf" take-sequence ] bi ] unit-test [ f ] [ "\"abc asdf" CHAR: \ CHAR: " take-quoted-string ] unit-test [ "\"abc" ] [ "\"abc asdf" [ CHAR: \ CHAR: " take-quoted-string drop ] [ "\"abc" take-sequence ] bi ] unit-test [ "c" ] [ "c" take-token ] unit-test [ f ] [ "" take-token ] unit-test [ "abcd e \\\"f g" ] [ "\"abcd e \\\"f g\"" CHAR: \ CHAR: " take-token* ] unit-test [ "" ] [ "" take-rest ] unit-test [ "" ] [ "abc" dup "abc" take-sequence drop take-rest ] unit-test [ f ] [ "abc" "abcdefg" take-sequence ] unit-test [ "1234" ] [ "1234f" take-integer ] unit-test [ "yes" ] [ "yes1234f" [ take-integer drop ] [ "yes" take-sequence ] bi ] unit-test [ f ] [ "" 4 take-n ] unit-test [ "abcd" ] [ "abcd" 4 take-n ] unit-test [ "abcd" "efg" ] [ "abcdefg" [ 4 take-n ] [ take-rest ] bi ] unit-test [ "asdfasdf" ] [ "/*asdfasdf*/" take-c-comment ] unit-test [ "k" ] [ "/*asdfasdf*/k" [ take-c-comment drop ] [ take-rest ] bi ] unit-test [ "omg" ] [ "//asdfasdf\nomg" [ take-c++-comment drop ] [ take-rest ] bi ] unit-test [ "omg" ] [ "omg" [ take-c++-comment drop ] [ take-rest ] bi ] unit-test [ "/*asdfasdf" ] [ "/*asdfasdf" [ take-c-comment drop ] [ take-rest ] bi ] unit-test [ "asdf" "eoieoei" ] [ "//asdf\neoieoei" [ take-c++-comment ] [ take-rest ] bi ] unit-test [ f "33asdf" ] [ "33asdf" [ take-c-identifier ] [ take-rest ] bi ] unit-test [ "asdf" ] [ "asdf" take-c-identifier ] unit-test [ "_asdf" ] [ "_asdf" take-c-identifier ] unit-test [ "_asdf400" ] [ "_asdf400" take-c-identifier ] unit-test [ "123" ] [ "123jjj" take-c-integer ] unit-test [ "123uLL" ] [ "123uLL" take-c-integer ] unit-test [ "123ull" ] [ "123ull" take-c-integer ] unit-test [ "123u" ] [ "123u" take-c-integer ] unit-test [ 36 ] [ " //jofiejoe\n //eoieow\n/*asdf*/\n " skip-whitespace/comments n>> ] unit-test [ f ] [ "\n" take-integer ] unit-test [ "\n" ] [ "\n" [ ] take-while ] unit-test [ f ] [ "\n" [ not ] take-while ] unit-test