tests/PPParserTest.st
changeset 405 0470a5e6e712
parent 380 8fe3cb4e607f
child 427 a7f5e6de19d2
equal deleted inserted replaced
404:8da796db7f95 405:0470a5e6e712
   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 printString).
   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>"
       
   951 ! !
   949 ! !
   952 
   950 
   953 !PPParserTest methodsFor:'testing-fixtures'!
   951 !PPParserTest methodsFor:'testing-fixtures'!
   954 
   952 
   955 testSideEffectChoice
   953 testSideEffectChoice
  1452 	self assert: result first equals: '12'.
  1450 	self assert: result first equals: '12'.
  1453 	self assert: result last equals: '3'
  1451 	self assert: result last equals: '3'
  1454 !
  1452 !
  1455 
  1453 
  1456 testParse
  1454 testParse
  1457         | parser result |
  1455 	| parser result |
  1458         parser := $a asParser.
  1456 	parser := $a asParser.
  1459         self assert: (parser parse: 'a') equals: $a.
  1457 	self assert: (parser parse: 'a') equals: $a.
  1460         self assert: (result := parser parse: 'b') isPetitFailure.
  1458 	self assert: (result := parser parse: 'b') isPetitFailure.
  1461         self assert: (result message includesSubstring: $a printString).
  1459 	self assert: (result message includesSubstring: $a printString).
  1462         self assert: (result message includesSubstring: 'expected').
  1460 	self assert: (result message includesSubstring: 'expected').
  1463         self assert: result position equals: 0.
  1461 	self assert: result position equals: 0.
  1464         self assert: (parser parse: 'a' readStream) equals: $a.
  1462 	self assert: (parser parse: 'a' readStream) equals: $a.
  1465         self assert: (result := parser parse: 'b' readStream) isPetitFailure.
  1463 	self assert: (result := parser parse: 'b' readStream) isPetitFailure.
  1466         self assert: (result message includesSubstring: $a printString).
  1464 	self assert: (result message includesSubstring: $a printString).
  1467         self assert: (result message includesSubstring: 'expected').
  1465 	self assert: (result message includesSubstring: 'expected').
  1468         self assert: result position equals: 0
  1466 	self assert: result position equals: 0
  1469 
       
  1470     "Modified: / 03-10-2014 / 23:42:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1471 !
  1467 !
  1472 
  1468 
  1473 testParseOnError0
  1469 testParseOnError0
  1474 	| parser result seen |
  1470 	| parser result seen |
  1475 	parser := $a asParser.
  1471 	parser := $a asParser.
  1479 	self assert: result.
  1475 	self assert: result.
  1480 	self assert: seen
  1476 	self assert: seen
  1481 !
  1477 !
  1482 
  1478 
  1483 testParseOnError1
  1479 testParseOnError1
  1484         | parser result seen |
  1480 	| parser result seen |
  1485         parser := $a asParser.
  1481 	parser := $a asParser.
  1486         result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1482 	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1487         self assert: result equals: $a.
  1483 	self assert: result equals: $a.
  1488         result := parser
  1484 	result := parser
  1489                 parse: 'b'
  1485 		parse: 'b'
  1490                 onError: [ :failure | 
  1486 		onError: [ :failure | 
  1491                         self assert: failure position equals: 0.
  1487 			self assert: failure position equals: 0.
  1492                         self assert: (failure message includesSubstring: $a printString).
  1488 			self assert: (failure message includesSubstring: $a printString).
  1493                         self assert: (failure message includesSubstring: 'expected').
  1489 			self assert: (failure message includesSubstring: 'expected').
  1494                         seen := true ].
  1490 			seen := true ].
  1495         self assert: result.
  1491 	self assert: result.
  1496         self assert: seen
  1492 	self assert: seen
  1497 
       
  1498     "Modified: / 03-10-2014 / 23:42:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1499 !
  1493 !
  1500 
  1494 
  1501 testParseOnError2
  1495 testParseOnError2
  1502         | parser result seen |
  1496 	| parser result seen |
  1503         parser := $a asParser.
  1497 	parser := $a asParser.
  1504         result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1498 	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
  1505         self assert: result equals: $a.
  1499 	self assert: result equals: $a.
  1506         result := parser
  1500 	result := parser
  1507                 parse: 'b'
  1501 		parse: 'b'
  1508                 onError: [ :msg :pos | 
  1502 		onError: [ :msg :pos | 
  1509                         self assert: (msg includesSubstring: $a printString).
  1503 			self assert: (msg includesSubstring: $a printString).
  1510                         self assert: (msg includesSubstring: 'expected').
  1504 			self assert: (msg includesSubstring: 'expected').
  1511                         self assert: pos equals: 0.
  1505 			self assert: pos equals: 0.
  1512                         seen := true ].
  1506 			seen := true ].
  1513         self assert: result.
  1507 	self assert: result.
  1514         self assert: seen
  1508 	self assert: seen
  1515 
       
  1516     "Modified: / 03-10-2014 / 23:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1517 !
  1509 !
  1518 
  1510 
  1519 testParser
  1511 testParser
  1520 	| parser |
  1512 	| parser |
  1521 	parser := PPParser new.
  1513 	parser := PPParser new.