--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/PPCIdGeneratorTest.st Mon Aug 17 12:13:16 2015 +0100
@@ -0,0 +1,109 @@
+"{ 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'.
+! !
+