@@ -12,9 +12,9 @@ import Data.Traversable (traverse)
1212import Effect (Effect )
1313import Effect.Class.Console (log )
1414import Test.Assert (assert' )
15- import Text.Parsing.StringParser (Parser , runParser , try )
15+ import Text.Parsing.StringParser (Parser , runParser )
1616import Text.Parsing.StringParser.CodePoints (anyChar , anyDigit , anyLetter , char , eof , skipSpaces , string )
17- import Text.Parsing.StringParser.Combinators (between , chainl , chainl1 , endBy , endBy1 , lookAhead , many , many1 , manyTill , sepBy , sepBy1 , sepEndBy , sepEndBy1 )
17+ import Text.Parsing.StringParser.Combinators (try , tryAhead , between , chainl , chainl1 , endBy , endBy1 , lookAhead , many , many1 , manyTill , sepBy , sepBy1 , sepEndBy , sepEndBy1 )
1818
1919type TestInputs = { successes :: Array String , failures :: Array String }
2020type TestCase = { name :: String , parser :: AnyParser , inputs :: TestInputs }
@@ -57,7 +57,11 @@ testCases =
5757 }
5858 , { name: " lookAhead"
5959 , parser: mkAnyParser $ lookAhead (char ' a' ) *> anyLetter
60- , inputs: { successes: [ " a" ], failures: [ " " , " b" ] }
60+ , inputs: { successes: [ " a" ], failures: [ " " , " b" , " ab" ] }
61+ }
62+ , { name: " tryAhead"
63+ , parser: mkAnyParser $ tryAhead (char ' a' *> anyDigit) *> (anyChar *> anyChar) <|> (anyDigit *> anyDigit)
64+ , inputs: { successes: [ " a6" , " 66" ], failures: [ " " , " b" , " -" , " 6" , " aa" , " a6aa" , " aa66" ] }
6165 }
6266 , { name: " many"
6367 , parser: mkAnyParser $ many (char ' a' )
0 commit comments