tests/PPAbstractParserTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Jun 2015 07:49:21 +0100
changeset 491 82b272c7dc37
parent 427 a7f5e6de19d2
permissions -rw-r--r--
Codegen: added support for smart action node compiling. Avoid creation of intermediate result collection for action nodes if all references to action block's argument (i.e., the nodes collection) is in form of: * <nodes> at: <numeric constant> * <nodes> first (second, third...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/tests' }"
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
     3
"{ NameSpace: Smalltalk }"
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
     4
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
TestCase subclass:#PPAbstractParserTest
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'PetitTests-Core'
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!PPAbstractParserTest class methodsFor:'accessing'!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
packageNamesUnderTest
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	^ #('PetitParser' 'PetitTests')
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
! !
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!PPAbstractParserTest class methodsFor:'testing'!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
isAbstract
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	^ self name = #PPAbstractParserTest
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
! !
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    25
!PPAbstractParserTest methodsFor:'context'!
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    26
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    27
context
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    28
	^ PPContext new
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    29
! !
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    30
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!PPAbstractParserTest methodsFor:'utilities'!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
assert: aParser fail: aCollection
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	^ self assert: aParser fail: aCollection end: 0
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
assert: aParser fail: aCollection end: anInteger
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    38
	| stream result context |
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	self 
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
		assert: aParser isPetitParser
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
		description: 'Parser invalid'.
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	stream := aCollection asPetitStream.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    43
	context := self context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    44
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    45
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    46
	result := aParser parse: stream withContext: context.
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	self 
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
		assert: result isPetitFailure
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
		description: 'Parser did not fail'.
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
	self
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    51
		assert: context position = anInteger
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
		description: 'Parser failed at wrong position'.
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	^ result
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
    56
assert: string1 includesSubstring: string2
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
    57
	"Support portability by using ANSI search method"
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
    58
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
    59
	self assert: (string1 notEmpty and: [string2 notEmpty and: [0 < (string1 indexOfSubCollection: string2 startingAt: 1)]])
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
    60
!
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 385
diff changeset
    61
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
assert: aParser parse: aCollection
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	^ self assert: aParser parse: aCollection to: nil end: aCollection size 
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
assert: aParser parse: aCollection end: anInteger
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	^ self assert: aParser parse: aCollection to: nil end: anInteger
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
assert: aParser parse: aCollection to: anObject
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	^ self assert: aParser parse: aCollection to: anObject end: aCollection size 
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
assert: aParser parse: aCollection to: aTargetObject end: anInteger
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    75
	| stream result context |
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    76
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    77
	self assert: aParser isPetitParser description: 'Parser invalid'.
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
	stream := aCollection asPetitStream.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    79
	context := self context.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    80
	
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    81
	result := aParser parse: stream withContext: context.
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	aTargetObject isNil
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
		ifTrue: [ self deny: result isPetitFailure ]
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    84
		ifFalse: [ self assert: result equals: aTargetObject ].
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    85
	self assert: context position = anInteger description: 'Parser accepted at wrong position'.
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
	^ result
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
assert: aParser parse: aCollection toToken: aStartInteger stop: aStopInteger
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
	^ self assert: aParser parse: aCollection toToken: aStartInteger stop: aStopInteger end: aCollection size
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
assert: aParser parse: aParserObject toToken: aStartInteger stop: aStopInteger end: anEndInteger
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
	| token |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    95
	token := self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    96
		assert: aParser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    97
		parse: aParserObject
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    98
		to: nil
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
    99
		end: anEndInteger.
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
	self assert: (token isKindOf: PPToken).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   101
	self assert: token start equals: aStartInteger.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 318
diff changeset
   102
	self assert: token stop equals: aStopInteger.
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	^ token
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
! !
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!PPAbstractParserTest class methodsFor:'documentation'!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
version
318
Claus Gittinger <cg@exept.de>
parents: 157
diff changeset
   109
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/tests/PPAbstractParserTest.st,v 1.2 2014-03-04 20:31:52 cg Exp $'
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
!
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
version_CVS
318
Claus Gittinger <cg@exept.de>
parents: 157
diff changeset
   113
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/tests/PPAbstractParserTest.st,v 1.2 2014-03-04 20:31:52 cg Exp $'
385
44a36ed4e484 Commited a Smalltalk parser (MC package PetitSmalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
   114
!
44a36ed4e484 Commited a Smalltalk parser (MC package PetitSmalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
   115
44a36ed4e484 Commited a Smalltalk parser (MC package PetitSmalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
   116
version_HG
44a36ed4e484 Commited a Smalltalk parser (MC package PetitSmalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
   117
44a36ed4e484 Commited a Smalltalk parser (MC package PetitSmalltalk)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 377
diff changeset
   118
    ^ '$Changeset: <not expanded> $'
157
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
46f441ef84a7 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120