compiler/tests/PPCIdGeneratorTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 17 Aug 2015 12:13:16 +0100
changeset 515 b5316ef15274
permissions -rw-r--r--
Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17 Name: PetitCompiler-JanKurs.160 Author: JanKurs Time: 17-08-2015, 09:52:26.291 AM UUID: 3b4bfc98-8098-4951-af83-a59e2585b121 Name: PetitCompiler-Tests-JanKurs.112 Author: JanKurs Time: 16-08-2015, 05:00:32.936 PM UUID: 85613d47-08f3-406f-9823-9cdab451e805 Name: PetitCompiler-Extras-Tests-JanKurs.25 Author: JanKurs Time: 16-08-2015, 05:00:10.328 PM UUID: 09731810-51a1-4151-8d3a-56b636fbd1f7 Name: PetitCompiler-Benchmarks-JanKurs.17 Author: JanKurs Time: 05-08-2015, 05:29:32.407 PM UUID: e544b5f1-bcf8-470b-93a6-d2363e4dfc8a

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