tests/PPCompositeParserTest.st
author Claus Gittinger <cg@exept.de>
Tue, 04 Mar 2014 21:31:51 +0100
changeset 317 243472b78423
parent 158 6e8ec5d71ae7
child 376 a2656b27cace
child 565 e2529c410388
permissions -rw-r--r--
moved
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/tests' }"
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
PPAbstractParserTest subclass:#PPCompositeParserTest
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'parser result'
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'PetitTests-Core'
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!PPCompositeParserTest class methodsFor:'accessing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
resources
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ Array with: PPParserResource
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!PPCompositeParserTest class methodsFor:'testing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
isAbstract
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ self name = #PPCompositeParserTest
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!PPCompositeParserTest methodsFor:'accessing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
parserClass
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	self subclassResponsibility
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
parserInstance
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	^ PPParserResource current parserAt: self parserClass
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
parserInstanceFor: aSymbol
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	^ aSymbol = #start
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		ifTrue: [ self parserInstance ]
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
		ifFalse: [
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
			self parserInstance
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
				productionAt: aSymbol 
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
				ifAbsent: [ self error: 'Production ' , self parserClass name , '>>' , aSymbol printString , ' not found.' ] ]
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
!PPCompositeParserTest methodsFor:'parsing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
fail: aString rule: aSymbol 
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	| production |
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	production := self parserInstanceFor: aSymbol.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	result := production end parse: aString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
		assert: result isPetitFailure
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
		description: 'Able to parse ' , aString printString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	^ result
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
parse: aString 
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	^ self parse: aString rule: #start
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
parse: aString rule: aSymbol
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	| production |
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	production := self parserInstanceFor: aSymbol.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	result := production end parse: aString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
		deny: result isPetitFailure
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
		description: 'Unable to parse ' , aString printString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	^ result
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!PPCompositeParserTest methodsFor:'running'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
setUp
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	super setUp.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	parser := self parserInstance
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
tearDown
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
	super tearDown.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
	parser := result := nil
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!PPCompositeParserTest methodsFor:'utilities'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
assert: aCollection is: anObject
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	self parse: aCollection.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		assert: result = anObject
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		description: 'Got: ' , result printString , '; Expected: ' , anObject printString
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
		resumable: true
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!PPCompositeParserTest class methodsFor:'documentation'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
version
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
    93
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/tests/PPCompositeParserTest.st,v 1.2 2014-03-04 20:31:51 cg Exp $'
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
version_CVS
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
    97
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/tests/PPCompositeParserTest.st,v 1.2 2014-03-04 20:31:51 cg Exp $'
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
version_SVN
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   101
    ^ '$Id: PPCompositeParserTest.st,v 1.2 2014-03-04 20:31:51 cg Exp $'
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103