diff -r 4751c407bb40 -r f6d77fee9811 compiler/tests/extras/PPExpressionGrammarTest.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compiler/tests/extras/PPExpressionGrammarTest.st Thu May 21 14:12:22 2015 +0100 @@ -0,0 +1,100 @@ +"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }" + +"{ NameSpace: Smalltalk }" + +PPCompositeParserTest subclass:#PPExpressionGrammarTest + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'PetitCompiler-Extras-Tests-Expressions' +! + +!PPExpressionGrammarTest methodsFor:'as yet unclassified'! + +parserClass + ^ PPExpressionGrammar +! + +testAdd + result := self parse: '1+2' rule: #add. + self assert: result isArray. + self assert: result first = 1. + self assert: result second inputValue = '+'. + self assert: result third = 2. +! + +testMul + result := self parse: '1 * 2' rule: #mul. + self assert: result isArray. + self assert: result first = 1. + self assert: result second inputValue = '*'. + self assert: result third = 2. +! + +testNumber + result := self parse: '1' rule: #number. + self assert: result = 1. +! + +testParens + result := self parse: '(1)' rule: #parens. + self assert: result size = 3. + self assert: result first inputValue = '('. + self assert: result second = 1. + self assert: result third inputValue = ')'. + +! + +testPrim + result := self parse: '1' rule: #prim. + self assert: result = 1. +! + +testPrim2 + result := self parse: '(1)' rule: #prim. + self assert: result size = 3. + self assert: result second = 1. +! + +testProd + result := self parse: '1' rule: #prod. + self assert: result = 1. +! + +testTerm + result := self parse: '1' rule: #term. + self assert: result = 1. + +! + +testTerm11 + result := self parse: '1 + 2' rule: #term. + self assert: result size = 3. + self assert: result first = 1. + self assert: result second inputValue = '+'. + self assert: result third = 2. + +! + +testTerm12 + result := self parse: '1 + 2 * 3' rule: #term. + self assert: result size = 3. + self assert: result second inputValue = '+'. + self assert: result first = 1. + self assert: result third isArray. + self assert: result third first = 2. + self assert: result third second inputValue = '*'. + self assert: result third third = 3. +! + +testTerm13 + result := self parse: '1 * 2 + 3' rule: #term. + self assert: result size = 3. + self assert: result first isArray. + self assert: result first first = 1. + self assert: result first second inputValue = '*'. + self assert: result first third = 2. + self assert: result second inputValue = '+'. + self assert: result third = 3. +! ! +