compiler/tests/PPCIdGeneratorTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 02 Jul 2018 08:46:03 +0200
changeset 557 5ddba1e78795
parent 515 b5316ef15274
permissions -rw-r--r--
Tagged Smalltalk/X 8.0.0

"{ Package: 'stx:goodies/petitparser/compiler/tests' }"

"{ NameSpace: Smalltalk }"

PPAbstractParserTest subclass:#PPCIdGeneratorTest
	instanceVariableNames:'node id idGen node1 node2 codeGen id1 id2 compiler'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Tests-Core'
!

!PPCIdGeneratorTest methodsFor:'tests - ids'!

testId1
    node := PPCNode new
        name: 'foo'.
    idGen := PPCIdGenerator new.
    
    id := idGen idFor: node.
    
    self assert: idGen ids size = 1.
    self assert: id = 'foo'.
!

testId2
    node1 := PPCNode new
        name: 'foo'.
    
    node2 := PPCNode new
        name: 'foo'.
    codeGen := PPCCodeGen new.

    id1 := codeGen idFor: node1.
    self assert: codeGen ids size = 1.
    self assert: id1 = 'foo'.
    
    id2 := codeGen idFor: node2.
    self assert: codeGen ids size = 2.
    self assert: id2 = 'foo_2'.	
            
    self assert: (id1 = id2) not.
!

testId3
    node1 := PPCNode new
        name: 'foo'.
    
    node2 := node1.
    codeGen := PPCCodeGen new.
        
    id1 := codeGen idFor: node1.
    self assert: codeGen ids size = 1.
    self assert: id1 = 'foo'.
    
    id2 := codeGen idFor: node2.
    self assert: codeGen ids size = 1.
    self assert: id2 = 'foo'.	
            
    self assert: (id1 == id2).
!

testId4
    node1 := PPCNode new
        name: 'foo+='.
    
    node2 := PPCNode new
        name: 'foo+='.
    codeGen := PPCCodeGen new.
        
    id1 := codeGen idFor: node1.
    self assert: codeGen ids size = 1.
    self assert: id1 = 'foo'.
    
    id2 := codeGen idFor: node2.
    self assert: codeGen ids size = 2.
    self assert: id2 = 'foo_2'.	
            
    self assert: (id1 = id2) not.
!

testId5
    node1 := PPCNode new
        name: 'foo_bar'.
    
    codeGen := PPCCodeGen new.
        
    id1 := codeGen idFor: node1.
    self assert: codeGen ids size = 1.
    self assert: id1 = 'foo_bar'.
!

testId6
    node1 := PPCNode new
        name: '$''nextToken'.

    node2 := PPCNode new
        name: '$"nextToken'.
    
    codeGen := PPCCodeGen new.
        
    id1 := codeGen idFor: node1.
    self assert: codeGen ids size = 1.
    self assert: id1 = 'nextToken'.
    
    id2 := codeGen idFor: node2.
    self assert: codeGen ids size = 2.
    self assert: id2 = 'nextToken_2'.
! !