tests/PPPredicateTest.st
changeset 427 a7f5e6de19d2
parent 421 7e08b31e0dae
equal deleted inserted replaced
426:2a65c972b937 427:a7f5e6de19d2
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
     2 
     4 
     3 PPAbstractParserTest subclass:#PPPredicateTest
     5 PPAbstractParserTest subclass:#PPPredicateTest
     4 	instanceVariableNames:''
     6 	instanceVariableNames:''
     5 	classVariableNames:''
     7 	classVariableNames:''
     6 	poolDictionaries:''
     8 	poolDictionaries:''
    73 	self assert: parser parse: '9' to: $9.
    75 	self assert: parser parse: '9' to: $9.
    74 	self assert: parser fail: ''.
    76 	self assert: parser fail: ''.
    75 	self assert: parser fail: 'a'
    77 	self assert: parser fail: 'a'
    76 !
    78 !
    77 
    79 
       
    80 testEndOfFile
       
    81 	| parser |
       
    82 	parser := (#letter asParser / #blank asParser) star, #eof asParser.
       
    83 	
       
    84 	self assert: parser parse: 'lorem ipsum'.
       
    85 	
       
    86 	parser := #any asParser, #eof asParser, #any asParser star.
       
    87 	self assert: parser fail: 'a', Character cr asString, 'b'.
       
    88 	self assert: parser fail: Character cr asString , Character lf asString.
       
    89 	self assert: parser parse: 'a'.
       
    90 !
       
    91 
    78 testEndOfLine
    92 testEndOfLine
    79 	| parser |
    93         | cr crlf lf parser |
    80 	parser := (#letter asParser / #blank asParser) star, #endOfLine asParser.
    94         cr := (Character codePoint: 13) asString.
    81 	
    95         crlf := (Character codePoint: 13) , Character lf asString.
    82 	self assert: parser parse: 'lorem ipsum'.
    96         lf := Character lf asString.
    83 	
    97         parser := (#letter asParser / #blank asParser) star, #endOfLine asParser.
    84 	parser := #any asParser, #endOfLine asParser, #any asParser star.
    98         
    85 	self assert: parser parse: 'a', String cr, 'b'.
    99         self assert: parser parse: 'lorem ipsum'.
    86 	self assert: parser fail: String crlf.
   100         
    87 	self assert: parser fail: 'lorem ipsum'.
   101         parser := #any asParser, #endOfLine asParser, #any asParser star.
    88 	
   102         self assert: parser parse: 'a', cr, 'b'.
    89 	parser := #endOfLine asParser, #any asParser, #endOfLine asParser negate star, #endOfLine asParser.
   103         self assert: parser fail: crlf.
    90 	self assert: parser parse: String cr, 'lorem ipsum'.
   104         self assert: parser fail: 'lorem ipsum'.
    91 	self assert: parser parse: String lf, 'lorem ipsum'.	
   105         
    92 	self assert: parser parse: String crlf, 'lorem ipsum'.	
   106         parser := #endOfLine asParser, #any asParser, #endOfLine asParser negate star, #endOfLine asParser.
    93 	
   107         self assert: parser parse: cr, 'lorem ipsum'.
    94 	self assert: parser parse: String crlf.
   108         self assert: parser parse: lf, 'lorem ipsum'.   
    95 	self assert: parser parse: String cr.
   109         self assert: parser parse: crlf, 'lorem ipsum'. 
    96 	self assert: parser parse: String lf.
   110         
    97 	
   111         self assert: parser parse: crlf.
    98 	parser := #endOfLine asParser negate star, #endOfLine asParser, #any asParser star.
   112         self assert: parser parse: cr.
    99 	self assert: parser parse: String crlf, 'lorem ipsum'.
   113         self assert: parser parse: lf.
   100 	self assert: parser parse: String crlf.
   114         
       
   115         parser := #endOfLine asParser negate star, #endOfLine asParser, #any asParser star.
       
   116         self assert: parser parse: crlf, 'lorem ipsum'.
       
   117         self assert: parser parse: crlf.
       
   118 
       
   119     "Modified: / 13-04-2015 / 21:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   101 !
   120 !
   102 
   121 
   103 testHex
   122 testHex
   104 	| parser |
   123 	| parser |
   105 	parser := #hex asParser.
   124 	parser := #hex asParser.
   174 	self assert: parser fail: ''.
   193 	self assert: parser fail: ''.
   175 	self assert: parser fail: 'a'
   194 	self assert: parser fail: 'a'
   176 !
   195 !
   177 
   196 
   178 testStartOfLine
   197 testStartOfLine
   179 	| parser |
   198         | cr crlf lf parser |
   180 	parser := #startOfLine asParser, #any asParser star.
   199         cr := (Character codePoint: 13) asString.
   181 	
   200         crlf := (Character codePoint: 13) , Character lf asString.
   182 	self assert: parser parse: 'lorem ipsum'.
   201         lf := Character lf asString.
   183 	
   202         parser := #startOfLine asParser, #any asParser star.
   184 	parser := #any asParser, #startOfLine asParser, #any asParser star.
   203         
   185 	self assert: parser fail: 'lorem ipsum'.
   204         self assert: parser parse: 'lorem ipsum'.
   186 	
   205         
   187 	parser := #startOfLine asParser, #any asParser, #startOfLine asParser, #any asParser star.
   206         parser := #any asParser, #startOfLine asParser, #any asParser star.
   188 	self assert: parser parse: String cr, 'lorem ipsum'.
   207         self assert: parser fail: 'lorem ipsum'.
   189 	self assert: parser parse: String lf, 'lorem ipsum'.	
   208         
   190 	self assert: parser fail: String crlf, 'lorem ipsum'.	
   209         parser := #startOfLine asParser, #any asParser, #startOfLine asParser, #any asParser star.
   191 	
   210         self assert: parser parse: cr, 'lorem ipsum'.
   192 	self assert: parser fail: String crlf.
   211         self assert: parser parse: lf, 'lorem ipsum'.   
   193 	self assert: parser parse: String cr.
   212         self assert: parser fail: crlf, 'lorem ipsum'.  
   194 	self assert: parser parse: String lf.
   213         
   195 	
   214         self assert: parser fail: crlf.
   196 	parser := #startOfLine asParser, #any asParser, #any asParser, #startOfLine asParser, #any asParser star.
   215         self assert: parser parse: cr.
   197 	self assert: parser parse: String crlf, 'lorem ipsum'.
   216         self assert: parser parse: lf.
   198 	self assert: parser parse: String crlf.
   217         
       
   218         parser := #startOfLine asParser, #any asParser, #any asParser, #startOfLine asParser, #any asParser star.
       
   219         self assert: parser parse: crlf, 'lorem ipsum'.
       
   220         self assert: parser parse: crlf.
       
   221 
       
   222     "Modified: / 13-04-2015 / 21:56:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   223 !
       
   224 
       
   225 testStartOfLogicalLine
       
   226 	| parser |
       
   227 	parser := #startOfLogicalLine asParser, #any asParser star.
       
   228 	
       
   229 	self assert: parser parse: 'lorem'.
       
   230 	self assert: parser fail: ' lorem'.
       
   231 	
       
   232 	parser := #any asParser, #startOfLogicalLine asParser, #any asParser star.
       
   233 	self assert: parser fail: 'lorem'.
       
   234 	self assert: parser fail: '        lorem'.
       
   235 	self assert: parser parse: ' lorem'.
       
   236 	self assert: parser parse: '	lorem'.
       
   237 !
       
   238 
       
   239 testStartOfWord
       
   240 	| parser |
       
   241 	parser := #startOfWord asParser, #word asParser plus.
       
   242 	
       
   243 	self assert: parser parse: 'lorem'.
       
   244 	
       
   245 	parser := #any asParser, #startOfWord asParser, #word asParser plus.
       
   246 	self assert: parser fail: 'lorem'.
       
   247 	self assert: parser fail: '1234'.
       
   248 	
       
   249 	self assert: parser parse: ' lorem'.	
       
   250 	self assert: parser parse: ' 123'.
       
   251 	self assert: parser parse: ')lorem'.
       
   252 	self assert: parser parse: ':lorem'.
       
   253 	
       
   254 	parser := #startOfWord asParser, #any asParser optional.
       
   255 	self assert: parser fail: ''.
       
   256 	self assert: parser parse: 'a'.
       
   257 	self assert: parser fail: '.'.
   199 !
   258 !
   200 
   259 
   201 testTab
   260 testTab
   202 	| parser |
   261 	| parser |
   203 	parser := #tab asParser.
   262 	parser := #tab asParser.