USING: tools.test sequences.parser unicode.categories kernel accessors ; IN: sequences.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 } [ "" take-rest ] unit-test { f } [ "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 { f } [ "\n" take-integer ] unit-test { "\n" } [ "\n" [ ] take-while ] unit-test { f } [ "\n" [ not ] take-while ] unit-test