initial checkin
authorClaus Gittinger <cg@exept.de>
Tue, 04 Mar 2014 15:02:47 +0100
changeset 157 46f441ef84a7
parent 156 e7c087bc7b14
child 158 6e8ec5d71ae7
initial checkin
tests/PPAbstractParserTest.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/PPAbstractParserTest.st	Tue Mar 04 15:02:47 2014 +0100
@@ -0,0 +1,95 @@
+"{ Package: 'stx:goodies/petitparser/tests' }"
+
+TestCase subclass:#PPAbstractParserTest
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitTests-Core'
+!
+
+
+!PPAbstractParserTest class methodsFor:'accessing'!
+
+packageNamesUnderTest
+	^ #('PetitParser' 'PetitTests')
+! !
+
+!PPAbstractParserTest class methodsFor:'testing'!
+
+isAbstract
+	^ self name = #PPAbstractParserTest
+! !
+
+!PPAbstractParserTest 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'.
+	^ result
+!
+
+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: aCollection to: aTargetObject end: anInteger
+	| stream result |
+	self 
+		assert: aParser isPetitParser
+		description: 'Parser invalid'.
+	stream := aCollection 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'.
+	^ result
+!
+
+assert: aParser parse: aCollection toToken: aStartInteger stop: aStopInteger
+	^ self assert: aParser parse: aCollection toToken: aStartInteger stop: aStopInteger end: aCollection size
+!
+
+assert: aParser parse: aParserObject toToken: aStartInteger stop: aStopInteger end: anEndInteger
+	| token |
+	token := self assert: aParser parse: aParserObject to: nil end: anEndInteger.
+	self assert: (token isKindOf: PPToken).
+	self assert: (token start = aStartInteger).
+	self assert: (token stop = aStopInteger).
+	^ token
+! !
+
+!PPAbstractParserTest class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/tests/PPAbstractParserTest.st,v 1.1 2014-03-04 14:02:47 cg Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/goodies/petitparser/tests/PPAbstractParserTest.st,v 1.1 2014-03-04 14:02:47 cg Exp $'
+! !
+