parser-combinators: unit tests working with new framework
parent
0ea3720a33
commit
6b57e8ced7
|
@ -1,122 +1,103 @@
|
|||
! 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
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue