--- a/tests/PPPredicateTest.st Mon Apr 13 14:19:55 2015 +0100
+++ b/tests/PPPredicateTest.st Mon Apr 13 22:00:44 2015 +0100
@@ -1,5 +1,7 @@
"{ Package: 'stx:goodies/petitparser/tests' }"
+"{ NameSpace: Smalltalk }"
+
PPAbstractParserTest subclass:#PPPredicateTest
instanceVariableNames:''
classVariableNames:''
@@ -75,29 +77,46 @@
self assert: parser fail: 'a'
!
-testEndOfLine
+testEndOfFile
| parser |
- parser := (#letter asParser / #blank asParser) star, #endOfLine asParser.
+ parser := (#letter asParser / #blank asParser) star, #eof asParser.
self assert: parser parse: 'lorem ipsum'.
- parser := #any asParser, #endOfLine asParser, #any asParser star.
- self assert: parser parse: 'a', String cr, 'b'.
- self assert: parser fail: String crlf.
- self assert: parser fail: 'lorem ipsum'.
-
- parser := #endOfLine asParser, #any asParser, #endOfLine asParser negate star, #endOfLine asParser.
- self assert: parser parse: String cr, 'lorem ipsum'.
- self assert: parser parse: String lf, 'lorem ipsum'.
- self assert: parser parse: String crlf, 'lorem ipsum'.
-
- self assert: parser parse: String crlf.
- self assert: parser parse: String cr.
- self assert: parser parse: String lf.
-
- parser := #endOfLine asParser negate star, #endOfLine asParser, #any asParser star.
- self assert: parser parse: String crlf, 'lorem ipsum'.
- self assert: parser parse: String crlf.
+ parser := #any asParser, #eof asParser, #any asParser star.
+ self assert: parser fail: 'a', Character cr asString, 'b'.
+ self assert: parser fail: Character cr asString , Character lf asString.
+ self assert: parser parse: 'a'.
+!
+
+testEndOfLine
+ | cr crlf lf parser |
+ cr := (Character codePoint: 13) asString.
+ crlf := (Character codePoint: 13) , Character lf asString.
+ lf := Character lf asString.
+ parser := (#letter asParser / #blank asParser) star, #endOfLine asParser.
+
+ self assert: parser parse: 'lorem ipsum'.
+
+ parser := #any asParser, #endOfLine asParser, #any asParser star.
+ self assert: parser parse: 'a', cr, 'b'.
+ self assert: parser fail: crlf.
+ self assert: parser fail: 'lorem ipsum'.
+
+ parser := #endOfLine asParser, #any asParser, #endOfLine asParser negate star, #endOfLine asParser.
+ self assert: parser parse: cr, 'lorem ipsum'.
+ self assert: parser parse: lf, 'lorem ipsum'.
+ self assert: parser parse: crlf, 'lorem ipsum'.
+
+ self assert: parser parse: crlf.
+ self assert: parser parse: cr.
+ self assert: parser parse: lf.
+
+ parser := #endOfLine asParser negate star, #endOfLine asParser, #any asParser star.
+ self assert: parser parse: crlf, 'lorem ipsum'.
+ self assert: parser parse: crlf.
+
+ "Modified: / 13-04-2015 / 21:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
testHex
@@ -176,26 +195,66 @@
!
testStartOfLine
+ | cr crlf lf parser |
+ cr := (Character codePoint: 13) asString.
+ crlf := (Character codePoint: 13) , Character lf asString.
+ lf := Character lf asString.
+ parser := #startOfLine asParser, #any asParser star.
+
+ self assert: parser parse: 'lorem ipsum'.
+
+ parser := #any asParser, #startOfLine asParser, #any asParser star.
+ self assert: parser fail: 'lorem ipsum'.
+
+ parser := #startOfLine asParser, #any asParser, #startOfLine asParser, #any asParser star.
+ self assert: parser parse: cr, 'lorem ipsum'.
+ self assert: parser parse: lf, 'lorem ipsum'.
+ self assert: parser fail: crlf, 'lorem ipsum'.
+
+ self assert: parser fail: crlf.
+ self assert: parser parse: cr.
+ self assert: parser parse: lf.
+
+ parser := #startOfLine asParser, #any asParser, #any asParser, #startOfLine asParser, #any asParser star.
+ self assert: parser parse: crlf, 'lorem ipsum'.
+ self assert: parser parse: crlf.
+
+ "Modified: / 13-04-2015 / 21:56:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+testStartOfLogicalLine
| parser |
- parser := #startOfLine asParser, #any asParser star.
-
- self assert: parser parse: 'lorem ipsum'.
-
- parser := #any asParser, #startOfLine asParser, #any asParser star.
- self assert: parser fail: 'lorem ipsum'.
+ parser := #startOfLogicalLine asParser, #any asParser star.
- parser := #startOfLine asParser, #any asParser, #startOfLine asParser, #any asParser star.
- self assert: parser parse: String cr, 'lorem ipsum'.
- self assert: parser parse: String lf, 'lorem ipsum'.
- self assert: parser fail: String crlf, 'lorem ipsum'.
+ self assert: parser parse: 'lorem'.
+ self assert: parser fail: ' lorem'.
+
+ parser := #any asParser, #startOfLogicalLine asParser, #any asParser star.
+ self assert: parser fail: 'lorem'.
+ self assert: parser fail: ' lorem'.
+ self assert: parser parse: ' lorem'.
+ self assert: parser parse: ' lorem'.
+!
+
+testStartOfWord
+ | parser |
+ parser := #startOfWord asParser, #word asParser plus.
- self assert: parser fail: String crlf.
- self assert: parser parse: String cr.
- self assert: parser parse: String lf.
+ self assert: parser parse: 'lorem'.
+
+ parser := #any asParser, #startOfWord asParser, #word asParser plus.
+ self assert: parser fail: 'lorem'.
+ self assert: parser fail: '1234'.
- parser := #startOfLine asParser, #any asParser, #any asParser, #startOfLine asParser, #any asParser star.
- self assert: parser parse: String crlf, 'lorem ipsum'.
- self assert: parser parse: String crlf.
+ self assert: parser parse: ' lorem'.
+ self assert: parser parse: ' 123'.
+ self assert: parser parse: ')lorem'.
+ self assert: parser parse: ':lorem'.
+
+ parser := #startOfWord asParser, #any asParser optional.
+ self assert: parser fail: ''.
+ self assert: parser parse: 'a'.
+ self assert: parser fail: '.'.
!
testTab