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