tests/PPCompositeParserTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 17 Aug 2015 13:39:38 +0100
changeset 517 9a7fa841f12e
parent 454 a9cd5ea7cc36
permissions -rw-r--r--
Portability: override #new for PPCScannerCodeGenerator. Not all smalltalks send #initialize by default.
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
454
a9cd5ea7cc36 Portability: fixes for Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
     3
"{ NameSpace: Smalltalk }"
a9cd5ea7cc36 Portability: fixes for Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
     4
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
PPAbstractParserTest subclass:#PPCompositeParserTest
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'parser result'
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'PetitTests-Core'
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!PPCompositeParserTest class methodsFor:'accessing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
resources
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	^ Array with: PPParserResource
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!PPCompositeParserTest class methodsFor:'testing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
isAbstract
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	^ self name = #PPCompositeParserTest
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!PPCompositeParserTest methodsFor:'accessing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
parserClass
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	self subclassResponsibility
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
parserInstance
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	^ PPParserResource current parserAt: self parserClass
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
parserInstanceFor: aSymbol
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	^ aSymbol = #start
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
		ifTrue: [ self parserInstance ]
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
		ifFalse: [
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
			self parserInstance
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
				productionAt: aSymbol 
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
				ifAbsent: [ self error: 'Production ' , self parserClass name , '>>' , aSymbol printString , ' not found.' ] ]
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!PPCompositeParserTest methodsFor:'parsing'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
fail: aString rule: aSymbol 
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    47
	| production context |
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	production := self parserInstanceFor: aSymbol.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    49
	context := self context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    50
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    51
	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
    52
	
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		assert: result isPetitFailure
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
		description: 'Able to parse ' , aString printString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	^ result
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
parse: aString 
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	^ self parse: aString rule: #start
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
parse: aString rule: aSymbol
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    64
	| production context |
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	production := self parserInstanceFor: aSymbol.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    66
	context := self context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    67
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    68
	result := production end parse: aString withContext: context.
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
		deny: result isPetitFailure
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
		description: 'Unable to parse ' , aString printString.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	^ result
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
!PPCompositeParserTest methodsFor:'running'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
setUp
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
	super setUp.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	parser := self parserInstance
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
tearDown
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	super tearDown.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	parser := result := nil
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!PPCompositeParserTest methodsFor:'utilities'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
assert: aCollection is: anObject
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
	self parse: aCollection.
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	self
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
		assert: result = anObject
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
		description: 'Got: ' , result printString , '; Expected: ' , anObject printString
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
		resumable: true
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
!PPCompositeParserTest class methodsFor:'documentation'!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
version
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   100
    ^ '$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
   101
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
version_CVS
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   104
    ^ '$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
   105
!
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
376
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   107
version_HG
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
    ^ '$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
   110
!
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 317
diff changeset
   111
158
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
version_SVN
317
Claus Gittinger <cg@exept.de>
parents: 158
diff changeset
   113
    ^ '$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
   114
! !
6e8ec5d71ae7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115