compiler/tests/PPCIdGeneratorTest.st
changeset 515 b5316ef15274
--- /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'.
+! !
+