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