compiler/tests/PEGFsaTransitionTest.st
changeset 515 b5316ef15274
parent 502 1e45d3c96ec5
--- a/compiler/tests/PEGFsaTransitionTest.st	Fri Jul 24 15:06:54 2015 +0100
+++ b/compiler/tests/PEGFsaTransitionTest.st	Mon Aug 17 12:13:16 2015 +0100
@@ -3,7 +3,7 @@
 "{ NameSpace: Smalltalk }"
 
 TestCase subclass:#PEGFsaTransitionTest
-	instanceVariableNames:'t1 t2 result'
+	instanceVariableNames:'t1 t2 result e1 e2'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'PetitCompiler-Tests-FSA'
@@ -12,9 +12,14 @@
 !PEGFsaTransitionTest methodsFor:'as yet unclassified'!
 
 setUp
-    t1 := PEGFsaTransition new.
-    t2 := PEGFsaTransition new.
-!
+    t1 := PEGFsaCharacterTransition new.
+    t2 := PEGFsaCharacterTransition new.
+    
+    e1 := PEGFsaEpsilonTransition new.
+    e2 := PEGFsaEpsilonTransition new.
+! !
+
+!PEGFsaTransitionTest methodsFor:'character'!
 
 testCompare
     t1 addCharacter: $a.
@@ -91,6 +96,12 @@
     self assert: (result at: $c codePoint) not.
 !
 
+testEpsilonIntersection
+    result := e1 intersection: e2.
+    
+    self assert: (result isEpsilon)
+!
+
 testIntersection
     t1 addCharacter: $a.
     t1 addCharacter: $b.
@@ -128,3 +139,37 @@
     self assert: (result at: $d codePoint) not.
 ! !
 
+!PEGFsaTransitionTest methodsFor:'tests - epsilon'!
+
+testCompareEpsilon
+
+    self assert: e1 = e2.
+    
+    e1 destination: #a.
+    e2 destination: #b.
+    
+    self assert: (e1 = e2) not.
+    
+!
+
+testCopyEpsilon
+    
+    e2 := e1 copy.
+    
+    
+    self assert: e1 = e2.
+    self assert: (e1 == e2) not.
+    
+    e2 destination: #foo.
+    self assert: (e1 = e2) not.
+        
+    e1 destination: #foo.
+    self assert: (e1 = e2).
+
+    e1 priority: -1.
+    self assert: (e1 = e2) not.	
+    
+    e2 priority: -1.
+    self assert: (e1 = e2).
+! !
+