]> gitweb.factorcode.org Git - factor.git/commitdiff
parser-combinators: unit tests working with new framework
authorchris.double <chris.double@double.co.nz>
Fri, 6 Oct 2006 01:39:08 +0000 (01:39 +0000)
committerchris.double <chris.double@double.co.nz>
Fri, 6 Oct 2006 01:39:08 +0000 (01:39 +0000)
contrib/parser-combinators/tests.factor

index 5863ddcbe4078bf0f1c27f0fc0f92d6bbeeaf1c9..9bb7db994ecabb342006a058cf4615a7b1845869 100644 (file)
 ! Copyright (C) 2005 Chris Double.
-! 
-! Redistribution and use in source and binary forms, with or without
-! modification, are permitted provided that the following conditions are met:
-! 
-! 1. Redistributions of source code must retain the above copyright notice,
-!    this list of conditions and the following disclaimer.
-! 
-! 2. Redistributions in binary form must reproduce the above copyright notice,
-!    this list of conditions and the following disclaimer in the documentation
-!    and/or other materials provided with the distribution.
-! 
-! THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
-! INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-! FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-! DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-! SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-! OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-! WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-! ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+! See http://factorcode.org/license.txt for BSD license.
+!
 USING: kernel lazy-lists test errors strings parser math sequences parser-combinators arrays ;
 IN: scratchpad
 
 ! Testing <&>
-[ { T{ parse-result f { "a" "b" } "cd" } }  ] [
-  "abcd" "a" token "b" token <&> call list>array
+[ { T{ parse-result f { "a" "b" } T{ slice f "abcd" 2 4 } } }  ] [
+  "abcd" "a" token "b" token <&> parse list>array
 ] unit-test
 
-[ { T{ parse-result f { { "a" "b" } "c" } "d" } } ] [
-  "abcd" "a" token "b" token <&> "c" token <&> call list>array
+[ { T{ parse-result f { { "a" "b" } "c" } T{ slice f "abcd" 3 4 } } } ] [
+  "abcd" "a" token "b" token <&> "c" token <&> parse list>array
 ] unit-test
 
-[ { T{ parse-result f { "a" { "b" "c" } } "d" } } ] [
-  "abcd" "a" token "b" token "c" token <&> <&> call list>array
+[ { T{ parse-result f { "a" { "b" "c" } } T{ slice f "abcd" 3 4 }  } } ] [
+  "abcd" "a" token "b" token "c" token <&> <&> parse list>array
 ] unit-test
 
 [ { } ] [
-  "decd" "a" token "b" token <&> call list>array
+  "decd" "a" token "b" token <&> parse list>array
 ] unit-test
 
 [ { } ] [
-  "dbcd" "a" token "b" token <&> call list>array
+  "dbcd" "a" token "b" token <&> parse list>array
 ] unit-test
 
 [ { } ] [
-  "adcd" "a" token "b" token <&> call list>array
+  "adcd" "a" token "b" token <&> parse list>array
 ] unit-test
 
 ! Testing <|>
-[ { T{ parse-result f "a" "bcd" } } ] [
-  "abcd" "a" token "b" token <|> call list>array
+[ { T{ parse-result f "a" T{ slice f "abcd" 1 4 } } } ] [
+  "abcd" "a" token "b" token <|> parse list>array
 ] unit-test
 
-[ { T{ parse-result f "b" "bcd" } }  ] [
-  "bbcd" "a" token "b" token <|> call list>array
+[ { T{ parse-result f "b" T{ slice f "bbcd" 1 4 } } }  ] [
+  "bbcd" "a" token "b" token <|> parse list>array
 ] unit-test
 
 [ { } ] [
-  "cbcd" "a" token "b" token <|> call list>array
+  "cbcd" "a" token "b" token <|> parse list>array
 ] unit-test
 
 ! Testing sp
 [ { } ] [
-  "  abcd" "a" token call list>array 
+  "  abcd" "a" token parse list>array 
 ] unit-test
 
-[ { T{ parse-result f "a" "bcd" } }  ] [
-  "  abcd" "a" token sp call list>array 
+[ { T{ parse-result f "a" T{ slice f "  abcd" 3 6 } } }  ] [
+  "  abcd" "a" token sp parse list>array 
 ] unit-test
 
 ! Testing just
-[ { T{ parse-result f "abcd" "" } T{ parse-result f "abc" "d" } } ] [
-  "abcd" "abcd" token "abc" token <|> call list>array
+[ { T{ parse-result f "abcd" T{ slice f "abcd" 4 4 } } T{ parse-result f "abc" T{ slice f "abcd" 3 4 } } } ] [
+  "abcd" "abcd" token "abc" token <|> parse list>array
 ] unit-test
 
-[ { T{ parse-result f "abcd" "" } } ] [
-  "abcd" "abcd" token "abc" token <|> just call list>array
+[ { T{ parse-result f "abcd" T{ slice f "abcd" 4 4 } } } ] [
+  "abcd" "abcd" token "abc" token <|> just parse list>array
 ] unit-test 
 
 ! Testing <@
-[ { T{ parse-result f 48 "1234" } } ] [
-  "01234" [ digit? ] satisfy call list>array 
+[ { T{ parse-result f 48 T{ slice f "01234" 1 5 } } } ] [
+  "01234" [ digit? ] satisfy parse list>array 
 ] unit-test
 
-[ { T{ parse-result f 0 "1234" } } ] [
-  "01234" [ digit? ] satisfy [ digit> ] <@ call list>array 
+[ { T{ parse-result f 0 T{ slice f "01234" 1 5 } } } ] [
+  "01234" [ digit? ] satisfy [ digit> ] <@ parse list>array 
 ] unit-test
 
 ! Testing some
-[ { T{ parse-result f "begin" "1" } } ] [
-  "begin1" "begin" token call list>array
+[ { T{ parse-result f "begin" T{ slice f "begin1" 5 6 } } } ] [
+  "begin1" "begin" token parse list>array
 ] unit-test
 
 [
-  "begin1" "begin" token some call 
+  "begin1" "begin" token some parse 
 ] unit-test-fails 
 
 [ "begin" ] [
-  "begin" "begin" token some call 
+  "begin" "begin" token some parse 
 ] unit-test
 
 ! <& parser and &> parser
-[ { T{ parse-result f { "a" "b" } "cd" } } ] [
-  "abcd" "a" token "b" token <&> call list>array
+[ { T{ parse-result f { "a" "b" } T{ slice f "abcd" 2 4 } } } ] [
+  "abcd" "a" token "b" token <&> parse list>array
 ] unit-test
 
-[ { T{ parse-result f "a" "cd" } } ] [
-  "abcd" "a" token "b" token <& call list>array
+[ { T{ parse-result f "a" T{ slice f "abcd" 2 4 } } } ] [
+  "abcd" "a" token "b" token <& parse list>array
 ] unit-test
 
-[ { T{ parse-result f "b" "cd" } } ] [
-  "abcd" "a" token "b" token &> call list>array
+[ { T{ parse-result f "b" T{ slice f "abcd" 2 4 } } } ] [
+  "abcd" "a" token "b" token &> parse list>array
 ] unit-test
 
 ! Testing <*> and <:&>
-[ { T{ parse-result f { "1" } "234" } T{ parse-result f [ ] "1234" } } ] [
-  "1234" "1" token <*> call list>array
+[ { T{ parse-result f { "1" } T{ slice f "1234" 1 4 } } T{ parse-result f [ ] "1234" } } } ] [
+  "1234" "1" token <*> parse list>array
 ] unit-test
 
 [ 
@@ -129,7 +110,7 @@ IN: scratchpad
   }
 
 ] [
-  "1111234" "1" token <*> call list>array
+  "1111234" "1" token <*> parse list>array
 ] unit-test
 
 [ 
@@ -141,16 +122,16 @@ IN: scratchpad
     T{ parse-result f { [ ] } "1111234" }
   }
 ] [
-  "1111234" "1" token <*> [ concat 1array ] <@ call list>array
+  "1111234" "1" token <*> [ concat 1array ] <@ parse list>array
 ] unit-test
 
 [ { T{ parse-result f [ ] "234" } } ] [
-  "234" "1" token <*> call list>array
+  "234" "1" token <*> parse list>array
 ] unit-test
 
 ! Testing <+>
 [ { T{ parse-result f { "1" } "234" } } ] [
-  "1234" "1" token <+> call list>array
+  "1234" "1" token <+> parse list>array
 ] unit-test
 
 [ 
@@ -161,11 +142,11 @@ IN: scratchpad
     T{ parse-result f { "1" } "111234" }
   }
 ] [
-  "1111234" "1" token <+> call list>array
+  "1111234" "1" token <+> parse list>array
 ] unit-test
 
 [ { } ] [
-  "234" "1" token <+> call list>array
+  "234" "1" token <+> parse list>array
 ] unit-test