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. |