compiler/tests/extras/PPExpressionGrammarTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Mar 2016 00:12:47 +0100
changeset 556 51c6afba5c91
parent 464 f6d77fee9811
permissions -rw-r--r--
CI: Use VM provided by Pharo team on both Linux and Windows. Hand-crafter Pharo VM is no longer needed as the Linux slave in SWING build farm has been upgraded so it has compatible GLIBC. This makes CI scripts simpler and more usable for other people.

"{ 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.
! !