compiler/tests/PPCCompilerTest.st
changeset 414 0eaf09920532
parent 413 5389e6fbb3bc
child 415 f30eb7ea54cd
equal deleted inserted replaced
413:5389e6fbb3bc 414:0eaf09920532
   185 	self assert: parser parse: 'a' to: nil end: 0.
   185 	self assert: parser parse: 'a' to: nil end: 0.
   186 	self assert: parser parse: 'aa' to: nil end: 0.
   186 	self assert: parser parse: 'aa' to: nil end: 0.
   187 	self assert: parser fail: 'ab'.
   187 	self assert: parser fail: 'ab'.
   188 !
   188 !
   189 
   189 
       
   190 testCompileNot3
       
   191 	parser := ('foo' asParser not, 'fee' asParser) compile.
       
   192 		
       
   193 	self assert: parser parse: 'fee' to: #(nil 'fee').
       
   194 	self assert: parser fail: 'foo'.
       
   195 !
       
   196 
   190 testCompileNotLiteral
   197 testCompileNotLiteral
   191 	parser := 'foo' asParser not compile.
   198 	parser := 'foo' asParser not compile.
   192 	self assert: parser class methods size = 2.
   199 	self assert: parser class methods size = 2.
   193 
   200 
   194 	self assert: parser parse: 'bar' to: nil end: 0.
   201 	self assert: parser parse: 'bar' to: nil end: 0.
   378 	self assert: parser fail: '123'.
   385 	self assert: parser fail: '123'.
   379 	self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'seq' ]).
   386 	self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'seq' ]).
   380 !
   387 !
   381 
   388 
   382 testSmalltalkToken
   389 testSmalltalkToken
   383         parser := (#letter asParser, (#digit asParser / #letter asParser) star) smalltalkToken compileWithParameters: {#profile -> true}.
   390 	parser := (#letter asParser, (#digit asParser / #letter asParser) star) smalltalkToken compileWithParameters: {#profile -> true}.
   384         
   391 	
   385         self assert: parser class methodDictionary size = 6.
   392 	self assert: parser class methods size = 6.
   386         self assert: parser parse: 'foo'.
   393 	self assert: parser parse: 'foo'.
   387         self assert: result inputValue = 'foo'.
   394 	self assert: result inputValue = 'foo'.
   388         self assert: context invocationCount = 9.
   395 	self assert: context invocationCount = 9.
   389         self assert: context rememberCount = 0.
   396 	self assert: context rememberCount = 0.
   390         self assert: context lwRememberCount = 1.
   397 	self assert: context lwRememberCount = 1.
   391         self assert: context lwRestoreCount = 0.
   398 	self assert: context lwRestoreCount = 0.	
   392 
       
   393     "Modified: / 30-10-2014 / 23:20:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   394 !
   399 !
   395 
   400 
   396 testSmalltalkToken2
   401 testSmalltalkToken2
   397 	|id|
   402 	|id|
   398 	id := (#letter asParser, (#digit asParser / #letter asParser) star)
   403 	id := (#letter asParser, (#digit asParser / #letter asParser) star)
   417 	self assert: parser parse: 'f123a' to: 'f123a'.
   422 	self assert: parser parse: 'f123a' to: 'f123a'.
   418 	self assert: parser fail: ''.
   423 	self assert: parser fail: ''.
   419 !
   424 !
   420 
   425 
   421 testToken2
   426 testToken2
   422         parser := (#letter asParser, (#digit asParser / #letter asParser) star) token compileWithParameters: {#profile -> true}.
   427 	parser := (#letter asParser, (#digit asParser / #letter asParser) star) token compileWithParameters: {#profile -> true}.
   423         
   428 	
   424         self assert: parser class methodDictionary size = 5.
   429 	self assert: parser class methods size = 5.
   425         self assert: parser parse: 'foo'.
   430 	self assert: parser parse: 'foo'.
   426         self assert: result inputValue = 'foo'.
   431 	self assert: result inputValue = 'foo'.
   427         self assert: context invocationCount = 7.
   432 	self assert: context invocationCount = 7.
   428         self assert: context rememberCount = 0.
   433 	self assert: context rememberCount = 0.
   429         self assert: context lwRememberCount = 1.
   434 	self assert: context lwRememberCount = 1.
   430         self assert: context lwRestoreCount = 0.
   435 	self assert: context lwRestoreCount = 0.	
   431 
       
   432     "Modified: / 30-10-2014 / 23:21:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   433 !
   436 !
   434 
   437 
   435 testTrimmingToken
   438 testTrimmingToken
   436         parser := (#letter asParser, (#digit asParser / #letter asParser) star) trimmingToken compileWithParameters: { #profile -> true }.
   439 	parser := (#letter asParser, (#digit asParser / #letter asParser) star) trimmingToken compileWithParameters: { #profile -> true }.
   437 
   440 
   438         self assert: parser class methodDictionary size = 6.
   441 	self assert: parser class methods size = 6.
   439         
   442 
   440         self assert: parser parse: 'foo'.
   443 	self assert: parser parse: 'foo'.
   441         self assert: result inputValue = 'foo'.
   444 	self assert: result inputValue = 'foo'.
   442 
   445 
   443         self assert: context invocationCount = 9.
   446 	self assert: context invocationCount = 9.
   444         self assert: context rememberCount = 0.
   447 	self assert: context rememberCount = 0.
   445         self assert: context lwRememberCount = 1.
   448 	self assert: context lwRememberCount = 1.
   446         self assert: context lwRestoreCount = 0.        
   449 	self assert: context lwRestoreCount = 0.	
   447 
   450 
   448         self assert: parser parse: ' foo '.
   451 	self assert: parser parse: ' foo '.
   449         self assert: result inputValue = 'foo'.
   452 	self assert: result inputValue = 'foo'.
   450 
   453 
   451 
   454 
   452 
   455 
   453         self assert: parser fail: '123'.
   456 	self assert: parser fail: '123'.
   454 
   457 
   455         self assert: context invocationCount = 3.
   458 	self assert: context invocationCount = 3.
   456         self assert: context rememberCount = 0.
   459 	self assert: context rememberCount = 0.
   457         self assert: context lwRememberCount = 0.
   460 	self assert: context lwRememberCount = 0.
   458         self assert: context lwRestoreCount = 0.        
   461 	self assert: context lwRestoreCount = 0.	
   459 
   462 
   460 
   463 
   461         self assert: parser fail: ''.
   464 	self assert: parser fail: ''.
   462 
       
   463     "Modified: / 30-10-2014 / 23:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   464 ! !
   465 ! !
   465 
   466 
   466 !PPCCompilerTest methodsFor:'tests - first set'!
   467 !PPCCompilerTest methodsFor:'tests - first set'!
   467 
   468 
   468 testFirstSetSuchThat
   469 testFirstSetSuchThat