compiler/tests/PPCTokenizingVisitorTest.st
changeset 452 9f4558b3be66
child 515 b5316ef15274
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/PPCTokenizingVisitorTest.st	Sun May 10 06:28:36 2015 +0100
@@ -0,0 +1,79 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests' }"
+
+"{ NameSpace: Smalltalk }"
+
+TestCase subclass:#PPCTokenizingVisitorTest
+	instanceVariableNames:'node result visitor'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Tests-Visitors'
+!
+
+!PPCTokenizingVisitorTest methodsFor:'as yet unclassified'!
+
+assert: object type: class
+    self assert: object class == class
+!
+
+setUp
+    visitor := PPCTokenizingVisitor new.
+!
+
+testTokenNode1
+    | nilNode |
+    nilNode := PPCNilNode new.
+    node := PPCTokenNode new
+        child: nilNode.
+    result := visitor visit: node.
+    
+    self assert: result type: PPCTokenizingParserNode.
+    self assert: result parser type: PPCTokenConsumeNode.
+    self assert: result parser child = node.
+    
+    self assert: result tokenizer children size = 2.
+    self assert: (result tokenizer children anySatisfy: [ :e | e =  node ]).
+!
+
+testTokenizingParserNode
+    node := PPCNilNode new.
+    result := visitor visit: node.
+    
+    self assert: result type: PPCTokenizingParserNode.
+    self assert: result parser = node.
+    self assert: result tokenizer children size = 1.
+!
+
+testTokenizingParserNode2
+    | nilNode |
+    nilNode := PPCNilNode new.
+    node := PPCTokenNode new
+        child: nilNode.
+    result := visitor visit: node.
+    
+    self assert: result type: PPCTokenizingParserNode.
+    self assert: result parser type: PPCTokenConsumeNode.
+    self assert: result parser child = node.
+    
+    self assert: result tokenizer children size = 2.
+    self assert: (result tokenizer children anySatisfy: [ :e | e =  node ]).
+!
+
+testTrimmingTokenNode1
+    | nilNode tokenNode |
+    nilNode := PPCNilNode new.
+    tokenNode := PPCTokenNode new
+        child: nilNode.
+    node := PPCTrimmingTokenNode new
+        child: tokenNode;
+        whitespace: nilNode;
+        yourself.		
+    result := visitor visit: node.
+    
+    self assert: result type: PPCTokenizingParserNode.
+    self assert: result parser type: PPCTokenConsumeNode.
+    self assert: result parser child = node.
+    
+    self assert: result tokenizer children size = 2.
+    self assert: (result tokenizer children anySatisfy: [ :e | e =  node ]).
+! !
+