compiler/tests/PetitCompilerTest.st
changeset 401 538267cab6ec
parent 398 b3e47bab2de6
equal deleted inserted replaced
400:49dc52d760c8 401:538267cab6ec
   378 	self assert: parser fail: '123'.
   378 	self assert: parser fail: '123'.
   379 	self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'seq' ]).
   379 	self assert: (context invocations noneSatisfy: [ :e | e beginsWith: 'seq' ]).
   380 !
   380 !
   381 
   381 
   382 testSmalltalkToken
   382 testSmalltalkToken
   383 	parser := (#letter asParser, (#digit asParser / #letter asParser) star) smalltalkToken compileWithParameters: {#profile -> true}.
   383         parser := (#letter asParser, (#digit asParser / #letter asParser) star) smalltalkToken compileWithParameters: {#profile -> true}.
   384 	
   384         
   385 	self assert: parser class methods size = 6.
   385         self assert: parser class methodDictionary size = 6.
   386 	self assert: parser parse: 'foo'.
   386         self assert: parser parse: 'foo'.
   387 	self assert: result inputValue = 'foo'.
   387         self assert: result inputValue = 'foo'.
   388 	self assert: context invocationCount = 9.
   388         self assert: context invocationCount = 9.
   389 	self assert: context rememberCount = 0.
   389         self assert: context rememberCount = 0.
   390 	self assert: context lwRememberCount = 1.
   390         self assert: context lwRememberCount = 1.
   391 	self assert: context lwRestoreCount = 0.	
   391         self assert: context lwRestoreCount = 0.
       
   392 
       
   393     "Modified: / 30-10-2014 / 23:20:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   392 !
   394 !
   393 
   395 
   394 testSmalltalkToken2
   396 testSmalltalkToken2
   395 	|id|
   397 	|id|
   396 	id := (#letter asParser, (#digit asParser / #letter asParser) star)
   398 	id := (#letter asParser, (#digit asParser / #letter asParser) star)
   415 	self assert: parser parse: 'f123a' to: 'f123a'.
   417 	self assert: parser parse: 'f123a' to: 'f123a'.
   416 	self assert: parser fail: ''.
   418 	self assert: parser fail: ''.
   417 !
   419 !
   418 
   420 
   419 testToken2
   421 testToken2
   420 	parser := (#letter asParser, (#digit asParser / #letter asParser) star) token compileWithParameters: {#profile -> true}.
   422         parser := (#letter asParser, (#digit asParser / #letter asParser) star) token compileWithParameters: {#profile -> true}.
   421 	
   423         
   422 	self assert: parser class methods size = 5.
   424         self assert: parser class methodDictionary size = 5.
   423 	self assert: parser parse: 'foo'.
   425         self assert: parser parse: 'foo'.
   424 	self assert: result inputValue = 'foo'.
   426         self assert: result inputValue = 'foo'.
   425 	self assert: context invocationCount = 7.
   427         self assert: context invocationCount = 7.
   426 	self assert: context rememberCount = 0.
   428         self assert: context rememberCount = 0.
   427 	self assert: context lwRememberCount = 1.
   429         self assert: context lwRememberCount = 1.
   428 	self assert: context lwRestoreCount = 0.	
   430         self assert: context lwRestoreCount = 0.
       
   431 
       
   432     "Modified: / 30-10-2014 / 23:21:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   429 !
   433 !
   430 
   434 
   431 testTrimmingToken
   435 testTrimmingToken
   432 	parser := (#letter asParser, (#digit asParser / #letter asParser) star) trimmingToken compileWithParameters: { #profile -> true }.
   436         parser := (#letter asParser, (#digit asParser / #letter asParser) star) trimmingToken compileWithParameters: { #profile -> true }.
   433 
   437 
   434 	self assert: parser class methods size = 6.
   438         self assert: parser class methodDictionary size = 6.
   435 	
   439         
   436 	self assert: parser parse: 'foo'.
   440         self assert: parser parse: 'foo'.
   437 	self assert: result inputValue = 'foo'.
   441         self assert: result inputValue = 'foo'.
   438 
   442 
   439 	self assert: context invocationCount = 9.
   443         self assert: context invocationCount = 9.
   440 	self assert: context rememberCount = 0.
   444         self assert: context rememberCount = 0.
   441 	self assert: context lwRememberCount = 1.
   445         self assert: context lwRememberCount = 1.
   442 	self assert: context lwRestoreCount = 0.	
   446         self assert: context lwRestoreCount = 0.        
   443 
   447 
   444 	self assert: parser parse: ' foo '.
   448         self assert: parser parse: ' foo '.
   445 	self assert: result inputValue = 'foo'.
   449         self assert: result inputValue = 'foo'.
   446 
   450 
   447 
   451 
   448 
   452 
   449 	self assert: parser fail: '123'.
   453         self assert: parser fail: '123'.
   450 
   454 
   451 	self assert: context invocationCount = 3.
   455         self assert: context invocationCount = 3.
   452 	self assert: context rememberCount = 0.
   456         self assert: context rememberCount = 0.
   453 	self assert: context lwRememberCount = 0.
   457         self assert: context lwRememberCount = 0.
   454 	self assert: context lwRestoreCount = 0.	
   458         self assert: context lwRestoreCount = 0.        
   455 
   459 
   456 
   460 
   457 	self assert: parser fail: ''.
   461         self assert: parser fail: ''.
       
   462 
       
   463     "Modified: / 30-10-2014 / 23:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   458 ! !
   464 ! !
   459 
   465 
   460 !PetitCompilerTest methodsFor:'tests - first set'!
   466 !PetitCompilerTest methodsFor:'tests - first set'!
   461 
   467 
   462 testFirstSetSuchThat
   468 testFirstSetSuchThat
   620 			  equals: (compiledParser parse: source withContext: self context). 
   626 			  equals: (compiledParser parse: source withContext: self context). 
   621 	].
   627 	].
   622 !
   628 !
   623 
   629 
   624 testObject
   630 testObject
   625 	| compiledParser normalParser source |
   631         | compiledParser normalParser source |
   626 	normalParser := PPSmalltalkGrammar new.
   632         normalParser := PPSmalltalkGrammar new.
   627 	compiledParser := normalParser compile.
   633         compiledParser := normalParser compile.
   628 	
   634         
   629 	Object methods do: [ :m |
   635         Object methodsDo: [ :m |
   630 		source := m sourceCode.
   636                 source := m sourceCode.
   631 		self assert: (normalParser parse: source) 
   637                 self assert: (normalParser parse: source) 
   632 			  equals: (compiledParser parse: source withContext: self context). 
   638                           equals: (compiledParser parse: source withContext: self context). 
   633 	].
   639         ].
       
   640 
       
   641     "Modified: / 30-10-2014 / 23:22:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   634 !
   642 !
   635 
   643 
   636 testWhitespace
   644 testWhitespace
   637 	| compiledParser normalParser source |
   645 	| compiledParser normalParser source |
   638 	normalParser := PPSmalltalkGrammar new.
   646 	normalParser := PPSmalltalkGrammar new.