tests/PPPredicateTest.st
changeset 427 a7f5e6de19d2
parent 421 7e08b31e0dae
--- 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