tests/PPAbstractParseTest.st
changeset 375 e2b2f08d054e
parent 50 db1ecd258e0c
child 376 a2656b27cace
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/PPAbstractParseTest.st	Fri Oct 03 01:36:33 2014 +0100
@@ -0,0 +1,97 @@
+"{ Package: 'stx:goodies/petitparser' }"
+
+TestCase subclass:#PPAbstractParseTest
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitTests-Core'
+!
+
+
+!PPAbstractParseTest class methodsFor:'accessing'!
+
+packageNamesUnderTest
+	^ #('PetitParser' 'PetitTests')
+! !
+
+!PPAbstractParseTest class methodsFor:'testing'!
+
+isAbstract
+	^ self name = #PPAbstractParseTest
+! !
+
+!PPAbstractParseTest methodsFor:'utilities'!
+
+assert: aParser fail: aCollection
+	self assert: aParser fail: aCollection end: 0
+!
+
+assert: aParser fail: aCollection end: anInteger
+	| stream result |
+	self 
+		assert: aParser isPetitParser
+		description: 'Parser invalid'.
+	stream := aCollection asPetitStream.
+	result := aParser parse: stream.
+	self 
+		assert: result isPetitFailure
+		description: 'Parser did not fail'.
+	self
+		assert: stream position = anInteger
+		description: 'Parser failed at wrong position'
+!
+
+assert: aParser parse: aCollection
+	self assert: aParser parse: aCollection to: nil end: aCollection size 
+!
+
+assert: aParser parse: aCollection end: anInteger
+	self assert: aParser parse: aCollection to: nil end: anInteger
+!
+
+assert: aParser parse: aCollection to: anObject
+	self assert: aParser parse: aCollection to: anObject end: aCollection size 
+!
+
+assert: aParser parse: aParseObject to: aTargetObject end: anInteger
+        | stream result |
+        self 
+                assert: aParser isPetitParser
+                description: 'Parser invalid'.
+        stream := aParseObject asPetitStream.
+        result := aParser parse: stream.
+        aTargetObject isNil
+                ifTrue: [ self deny: result isPetitFailure ]
+                ifFalse: [ self assert: result = aTargetObject ].
+        self 
+                assert: stream position = anInteger
+                description: 'Parser accepted at wrong position'
+
+    "Modified: / 18-12-2010 / 18:01:30 / Jan Kurs <kurs.jan@post.cz>"
+!
+
+assert: aParser parse: aParserObject toToken: from stop: to
+	| token |
+	token := PPToken on: aParserObject start: from stop: to.
+	^ self assert: aParser parse: aParserObject to: token
+!
+
+assert: aParser parse: aParserObject toToken: from stop: to end: end
+	| token |
+	token := PPToken on: aParserObject start: from stop: to.
+	^ self assert: aParser parse: aParserObject to: token end: end
+! !
+
+!PPAbstractParseTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPAbstractParseTest.st,v 1.3 2012-05-04 22:09:07 vrany Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPAbstractParseTest.st,v 1.3 2012-05-04 22:09:07 vrany Exp $'
+!
+
+version_SVN
+    ^ '§Id: PPAbstractParseTest.st 4 2010-12-18 17:02:23Z kursjan §'
+! !