tests/PPCompositeParserTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 24 Nov 2014 11:38:11 +0000
changeset 423 f3b99c7c1b20
parent 377 6112a403a52d
child 454 a9cd5ea7cc36
permissions -rw-r--r--
Added benchmark package to set of exported .mcz
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 
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    45
	| production context |
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	production := self parserInstanceFor: aSymbol.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    47
	context := self context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    48
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    49
	result := production end parse: aString withContext: context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    50
	
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
		assert: result isPetitFailure
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
		description: 'Able to parse ' , aString printString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	^ result
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
parse: aString 
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	^ self parse: aString rule: #start
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
parse: aString rule: aSymbol
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    62
	| production context |
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	production := self parserInstanceFor: aSymbol.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    64
	context := self context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    65
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    66
	result := production end parse: aString withContext: context.
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
		deny: result isPetitFailure
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		description: 'Unable to parse ' , aString printString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	^ result
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!PPCompositeParserTest methodsFor:'running'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
setUp
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
	super setUp.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
	parser := self parserInstance
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
tearDown
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	super tearDown.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	parser := result := nil
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!PPCompositeParserTest methodsFor:'utilities'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
assert: aCollection is: anObject
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
	self parse: aCollection.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
		assert: result = anObject
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		description: 'Got: ' , result printString , '; Expected: ' , anObject printString
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
		resumable: true
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
!PPCompositeParserTest class methodsFor:'documentation'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
version
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
    98
    ^ '$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
    99
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
version_CVS
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   102
    ^ '$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
   103
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
376
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   105
version_HG
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   106
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   107
    ^ '$Changeset: <not expanded> $'
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   108
!
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   109
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
version_SVN
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   111
    ^ '$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
   112
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113