tests/PPParserTest.st
changeset 380 8fe3cb4e607f
parent 379 451b5ae38b72
child 405 0470a5e6e712
equal deleted inserted replaced
379:451b5ae38b72 380:8fe3cb4e607f
   929 	parser := $* asParser name: 'star'.
   929 	parser := $* asParser name: 'star'.
   930 	self assert: parser name equals: 'star'
   930 	self assert: parser name equals: 'star'
   931 !
   931 !
   932 
   932 
   933 testPrint
   933 testPrint
   934 	| parser |
   934         | parser |
   935 	parser := PPParser new.
   935         parser := PPParser new.
   936 	self assert: (parser printString includesSubstring: 'PPParser').
   936         self assert: (parser printString includesSubstring: 'PPParser').
   937 	
   937         
   938 	parser := PPParser named: 'choice'.
   938         parser := PPParser named: 'choice'.
   939 	self assert: (parser printString includesSubstring: 'PPParser(choice').
   939         self assert: (parser printString includesSubstring: 'PPParser(choice').
   940 	
   940         
   941 	parser := PPLiteralObjectParser on: $a.
   941         parser := PPLiteralObjectParser on: $a.
   942 	self assert: (parser printString includesSubstring: '$a').
   942         self assert: (parser printString includesSubstring: $a printString).
   943 	
   943         
   944 	parser := PPFailingParser message: 'error'.
   944         parser := PPFailingParser message: 'error'.
   945 	self assert: (parser printString includesSubstring: 'error').
   945         self assert: (parser printString includesSubstring: 'error').
   946 	
   946         
   947 	parser := PPPredicateObjectParser on: [ :c | true ] message: 'error'.
   947         parser := PPPredicateObjectParser on: [ :c | true ] message: 'error'.
   948 	self assert: (parser printString includesSubstring: 'error')
   948         self assert: (parser printString includesSubstring: 'error')
       
   949 
       
   950     "Modified: / 03-10-2014 / 23:43:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   949 ! !
   951 ! !
   950 
   952 
   951 !PPParserTest methodsFor:'testing-fixtures'!
   953 !PPParserTest methodsFor:'testing-fixtures'!
   952 
   954 
   953 testSideEffectChoice
   955 testSideEffectChoice
  1454 testParse
  1456 testParse
  1455         | parser result |
  1457         | parser result |
  1456         parser := $a asParser.
  1458         parser := $a asParser.
  1457         self assert: (parser parse: 'a') equals: $a.
  1459         self assert: (parser parse: 'a') equals: $a.
  1458         self assert: (result := parser parse: 'b') isPetitFailure.
  1460         self assert: (result := parser parse: 'b') isPetitFailure.
  1459         self assert: (result message includesSubstring: '$a').
  1461         self assert: (result message includesSubstring: $a printString).
  1460         self assert: (result message includesSubstring: 'expected').
  1462         self assert: (result message includesSubstring: 'expected').
  1461         self assert: result position equals: 0.
  1463         self assert: result position equals: 0.
  1462         self assert: (parser parse: 'a' readStream) equals: $a.
  1464         self assert: (parser parse: 'a' readStream) equals: $a.
  1463         self assert: (result := parser parse: 'b' readStream) isPetitFailure.
  1465         self assert: (result := parser parse: 'b' readStream) isPetitFailure.
  1464         self assert: (result message includesSubstring: '$a').
  1466         self assert: (result message includesSubstring: $a printString).
  1465         self assert: (result message includesSubstring: 'expected').
  1467         self assert: (result message includesSubstring: 'expected').
  1466         self assert: result position equals: 0
  1468         self assert: result position equals: 0
  1467 
  1469 
  1468     "Modified (format): / 03-10-2014 / 02:48:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1470     "Modified: / 03-10-2014 / 23:42:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1469 !
  1471 !
  1470 
  1472 
  1471 testParseOnError0
  1473 testParseOnError0
  1472 	| parser result seen |
  1474 	| parser result seen |
  1473 	parser := $a asParser.
  1475 	parser := $a asParser.
  1477 	self assert: result.
  1479 	self assert: result.
  1478 	self assert: seen
  1480 	self assert: seen
  1479 !
  1481 !
  1480 
  1482 
  1481 testParseOnError1
  1483 testParseOnError1
  1482 	| parser result seen |
  1484         | parser result seen |
  1483 	parser := $a asParser.
  1485         parser := $a asParser.
  1484 	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1486         result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1485 	self assert: result equals: $a.
  1487         self assert: result equals: $a.
  1486 	result := parser
  1488         result := parser
  1487 		parse: 'b'
  1489                 parse: 'b'
  1488 		onError: [ :failure | 
  1490                 onError: [ :failure | 
  1489 			self assert: failure position equals: 0.
  1491                         self assert: failure position equals: 0.
  1490 			self assert: (failure message includesSubstring: '$a').
  1492                         self assert: (failure message includesSubstring: $a printString).
  1491 			self assert: (failure message includesSubstring: 'expected').
  1493                         self assert: (failure message includesSubstring: 'expected').
  1492 			seen := true ].
  1494                         seen := true ].
  1493 	self assert: result.
  1495         self assert: result.
  1494 	self assert: seen
  1496         self assert: seen
       
  1497 
       
  1498     "Modified: / 03-10-2014 / 23:42:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1495 !
  1499 !
  1496 
  1500 
  1497 testParseOnError2
  1501 testParseOnError2
  1498 	| parser result seen |
  1502         | parser result seen |
  1499 	parser := $a asParser.
  1503         parser := $a asParser.
  1500 	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1504         result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1501 	self assert: result equals: $a.
  1505         self assert: result equals: $a.
  1502 	result := parser
  1506         result := parser
  1503 		parse: 'b'
  1507                 parse: 'b'
  1504 		onError: [ :msg :pos | 
  1508                 onError: [ :msg :pos | 
  1505 			self assert: (msg includesSubstring: '$a').
  1509                         self assert: (msg includesSubstring: $a printString).
  1506 			self assert: (msg includesSubstring: 'expected').
  1510                         self assert: (msg includesSubstring: 'expected').
  1507 			self assert: pos equals: 0.
  1511                         self assert: pos equals: 0.
  1508 			seen := true ].
  1512                         seen := true ].
  1509 	self assert: result.
  1513         self assert: result.
  1510 	self assert: seen
  1514         self assert: seen
       
  1515 
       
  1516     "Modified: / 03-10-2014 / 23:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1511 !
  1517 !
  1512 
  1518 
  1513 testParser
  1519 testParser
  1514 	| parser |
  1520 	| parser |
  1515 	parser := PPParser new.
  1521 	parser := PPParser new.