tests/PPParserTest.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:
376
a2656b27cace Added monticelloName to package definition to ease export to .mcz
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 375
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/tests' }"
0
739fe9b7253e *** empty log message ***
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: 405
diff changeset
     3
"{ NameSpace: Smalltalk }"
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
     4
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
     5
PPAbstractParserTest subclass:#PPParserTest
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'PetitTests-Tests'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!PPParserTest methodsFor:'testing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
testAnd
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	parser := 'foo' asParser flatten , 'bar' asParser flatten and.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    18
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    19
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    20
		parse: 'foobar'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    21
		to: #('foo' 'bar')
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    22
		end: 3.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	self assert: parser fail: 'foobaz'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	parser := 'foo' asParser and.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    25
	self assert: parser and equals: parser
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
testBlock
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	parser := [ :s | s next ] asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    31
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	self assert: parser parse: 'ab' to: $a end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	self assert: parser parse: 'b' to: $b.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	self assert: parser parse: '' to: nil
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
testChoice
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	parser := $a asParser / $b asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    40
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	self assert: parser parse: 'b' to: $b.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	self assert: parser parse: 'ab' to: $a end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	self assert: parser parse: 'ba' to: $b end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	self assert: parser fail: 'c'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	self assert: parser fail: 'ca'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
testDelimitedBy
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	parser := $a asParser delimitedBy: $b asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    55
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	self assert: parser parse: 'a' to: #($a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	self assert: parser parse: 'aba' to: #($a $b $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	self assert: parser parse: 'ababa' to: #($a $b $a $b $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	self assert: parser parse: 'ab' to: #($a $b).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	self assert: parser parse: 'abab' to: #($a $b $a $b).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	self assert: parser parse: 'ababab' to: #($a $b $a $b $a $b).
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    63
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	self assert: parser parse: 'ac' to: #($a) end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	self assert: parser parse: 'abc' to: #($a $b) end: 2.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	self assert: parser parse: 'abac' to: #($a $b $a) end: 3.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	self assert: parser parse: 'ababc' to: #($a $b $a $b) end: 4.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    68
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	self assert: parser fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	self assert: parser fail: 'c'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    74
testDelimitedByWithoutSeparators
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    75
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    76
	parser := ($a asParser delimitedBy: $b asParser)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    77
		withoutSeparators.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    78
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    79
	self assert: parser parse: 'a' to: #($a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    80
	self assert: parser parse: 'aba' to: #($a $a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    81
	self assert: parser parse: 'ababa' to: #($a $a $a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    82
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    83
	self assert: parser parse: 'ab' to: #($a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    84
	self assert: parser parse: 'abab' to: #($a $a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    85
	self assert: parser parse: 'ababab' to: #($a $a $a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    86
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    87
	self assert: parser parse: 'ac' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    88
	self assert: parser parse: 'abc' to: #($a) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    89
	self assert: parser parse: 'abac' to: #($a $a) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    90
	self assert: parser parse: 'ababc' to: #($a $a) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    91
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    92
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    93
	self assert: parser fail: 'b'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    94
	self assert: parser fail: 'c'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    95
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
    96
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
testEndOfInput
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
	parser := PPEndOfInputParser on: $a asParser.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   100
	self assert: parser end equals: parser.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	self assert: parser fail: 'aa'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
testEndOfInputAfterMatch
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
	parser := 'stuff' asParser end.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
	self assert: parser parse: 'stuff' to: 'stuff'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
	self assert: parser fail: 'stufff'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	self assert: parser fail: 'fluff'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
testEpsilon
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
	parser := nil asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   117
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	self assert: parser parse: '' to: nil.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   119
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
	self assert: parser parse: 'a' to: nil end: 0.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
	self assert: parser parse: 'ab' to: nil end: 0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
testFailing
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	| parser result |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
	parser := PPFailingParser message: 'Plonk'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   127
	self assert: parser message equals: 'Plonk'.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
	self assert: parser fail: 'aa'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
	result := parser parse: 'a'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   132
	self assert: result message equals: 'Plonk'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   133
	self assert: result printString equals: 'Plonk at 0'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
testLiteralObject
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
	| parser |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   138
	parser := PPLiteralObjectParser on: $a message: 'letter "a" expected'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   139
	self assert: parser literal equals: $a.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   140
	self assert: parser message equals: 'letter "a" expected'.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	self assert: parser fail: 'b'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
testLiteralObjectCaseInsensitive
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
	parser := $a asParser caseInsensitive.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   148
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
	self assert: parser parse: 'A' to: $A.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
	self assert: parser fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
	self assert: parser fail: 'B'
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   155
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
testLiteralSequence
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
	| parser |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   160
	parser := PPLiteralSequenceParser on: 'abc' message: 'sequence "abc" expected'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   161
	self assert: parser size equals: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   162
	self assert: parser literal equals: 'abc'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   163
	self assert: parser message equals: 'sequence "abc" expected'.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
	self assert: parser parse: 'abc' to: 'abc'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
	self assert: parser fail: 'ab'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
	self assert: parser fail: 'abd'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
testLiteralSequenceCaseInsensitive
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
	parser := 'abc' asParser caseInsensitive.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   172
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
	self assert: parser parse: 'abc' to: 'abc'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
	self assert: parser parse: 'ABC' to: 'ABC'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	self assert: parser parse: 'abC' to: 'abC'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
	self assert: parser parse: 'AbC' to: 'AbC'.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   177
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
	self assert: parser fail: 'ab'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
	self assert: parser fail: 'abd'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
testMax
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   183
	| parser printString suffix |
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	parser := $a asParser max: 2.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   185
	self assert: parser min equals: 0.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   186
	self assert: parser max equals: 2.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
	self assert: parser parse: '' to: #().
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
	self assert: parser parse: 'a' to: #($a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
	self assert: parser parse: 'aa' to: #($a $a).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   190
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   191
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   192
		parse: 'aaa'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   193
		to: #($a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   194
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   195
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   196
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   197
		parse: 'aaaa'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   198
		to: #($a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   199
		end: 2.
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   200
	printString := parser printString.
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   201
	suffix := printString copyFrom: printString size - 5 to: printString size.
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   202
	self assert: suffix = '[0, 2]'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   205
testMaxGreedy
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   206
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   207
	parser := #word asParser max: 2 greedy: #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   208
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   209
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   210
	self assert: parser fail: 'abc'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   211
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   212
	self assert: parser parse: '1' to: #() end: 0.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   213
	self assert: parser parse: 'a1' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   214
	self assert: parser parse: 'ab1' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   215
	self assert: parser fail: 'abc1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   216
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   217
	self assert: parser parse: '12' to: #($1) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   218
	self assert: parser parse: 'a12' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   219
	self assert: parser parse: 'ab12' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   220
	self assert: parser fail: 'abc12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   221
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   222
	self assert: parser parse: '123' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   223
	self assert: parser parse: 'a123' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   224
	self assert: parser parse: 'ab123' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   225
	self assert: parser fail: 'abc123'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   226
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   227
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   228
testMaxLazy
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   229
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   230
	parser := #word asParser max: 2 lazy: #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   231
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   232
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   233
	self assert: parser fail: 'abc'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   234
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   235
	self assert: parser parse: '1' to: #() end: 0.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   236
	self assert: parser parse: 'a1' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   237
	self assert: parser parse: 'ab1' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   238
	self assert: parser fail: 'abc1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   239
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   240
	self assert: parser parse: '12' to: #() end: 0.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   241
	self assert: parser parse: 'a12' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   242
	self assert: parser parse: 'ab12' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   243
	self assert: parser fail: 'abc12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   244
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   245
	self assert: parser parse: '123' to: #() end: 0.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   246
	self assert: parser parse: 'a123' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   247
	self assert: parser parse: 'ab123' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   248
	self assert: parser fail: 'abc123'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   249
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   250
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
testMemoized
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
	| count parser twice |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
	count := 0.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   254
	parser := [ :s | 
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   255
	count := count + 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   256
	s next ] asParser memoized.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
	twice := parser and , parser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
	count := 0.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
	self assert: parser parse: 'a' to: $a.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   260
	self assert: count equals: 1.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
	count := 0.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
	self assert: twice parse: 'a' to: #($a $a).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   263
	self assert: count equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   264
	self assert: parser memoized equals: parser
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
testMin
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   268
	| parser printString suffix |
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
	parser := $a asParser min: 2.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   270
	self assert: parser min equals: 2.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
	self assert: parser max > parser min.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
	self assert: parser parse: 'aa' to: #($a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
	self assert: parser parse: 'aaa' to: #($a $a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
	self assert: parser parse: 'aaaa' to: #($a $a $a $a).
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   277
	printString := parser printString.
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   278
	suffix := printString copyFrom: printString size - 5 to: printString size.
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   279
	self assert: suffix = '[2, *]'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   282
testMinGreedy
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   283
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   284
	parser := #word asParser min: 2 greedy: #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   285
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   286
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   287
	self assert: parser fail: 'abcde'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   288
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   289
	self assert: parser fail: '1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   290
	self assert: parser fail: 'a1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   291
	self assert: parser parse: 'ab1' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   292
	self assert: parser parse: 'abc1' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   293
	self assert: parser parse: 'abcd1' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   294
	self assert: parser parse: 'abcde1' to: #($a $b $c $d $e) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   295
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   296
	self assert: parser fail: '12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   297
	self assert: parser parse: 'a12' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   298
	self assert: parser parse: 'ab12' to: #($a $b $1) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   299
	self assert: parser parse: 'abc12' to: #($a $b $c $1) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   300
	self assert: parser parse: 'abcd12' to: #($a $b $c $d $1) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   301
	self assert: parser parse: 'abcde12' to: #($a $b $c $d $e $1) end: 6.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   302
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   303
	self assert: parser parse: '123' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   304
	self assert: parser parse: 'a123' to: #($a $1 $2) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   305
	self assert: parser parse: 'ab123' to: #($a $b $1 $2) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   306
	self assert: parser parse: 'abc123' to: #($a $b $c $1 $2) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   307
	self assert: parser parse: 'abcd123' to: #($a $b $c $d $1 $2) end: 6.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   308
	self assert: parser parse: 'abcde123' to: #($a $b $c $d $e $1 $2) end: 7.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   309
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   310
	self assert: parser parse: '1234' to: #($1 $2 $3) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   311
	self assert: parser parse: 'a1234' to: #($a $1 $2 $3) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   312
	self assert: parser parse: 'ab1234' to: #($a $b $1 $2 $3) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   313
	self assert: parser parse: 'abc1234' to: #($a $b $c $1 $2 $3) end: 6.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   314
	self assert: parser parse: 'abcd1234' to: #($a $b $c $d $1 $2 $3) end: 7.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   315
	self assert: parser parse: 'abcde1234' to: #($a $b $c $d $e $1 $2 $3) end: 8
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   316
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   317
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   318
testMinLazy
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   319
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   320
	parser := #word asParser min: 2 lazy: #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   321
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   322
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   323
	self assert: parser fail: 'abcde'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   324
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   325
	self assert: parser fail: '1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   326
	self assert: parser fail: 'a1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   327
	self assert: parser parse: 'ab1' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   328
	self assert: parser parse: 'abc1' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   329
	self assert: parser parse: 'abcd1' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   330
	self assert: parser parse: 'abcde1' to: #($a $b $c $d $e) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   331
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   332
	self assert: parser fail: '12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   333
	self assert: parser parse: 'a12' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   334
	self assert: parser parse: 'ab12' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   335
	self assert: parser parse: 'abc12' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   336
	self assert: parser parse: 'abcd12' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   337
	self assert: parser parse: 'abcde12' to: #($a $b $c $d $e) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   338
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   339
	self assert: parser parse: '123' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   340
	self assert: parser parse: 'a123' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   341
	self assert: parser parse: 'ab123' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   342
	self assert: parser parse: 'abc123' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   343
	self assert: parser parse: 'abcd123' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   344
	self assert: parser parse: 'abcde123' to: #($a $b $c $d $e) end: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   345
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   346
	self assert: parser parse: '1234' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   347
	self assert: parser parse: 'a1234' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   348
	self assert: parser parse: 'ab1234' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   349
	self assert: parser parse: 'abc1234' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   350
	self assert: parser parse: 'abcd1234' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   351
	self assert: parser parse: 'abcde1234' to: #($a $b $c $d $e) end: 5
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   352
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   353
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
testMinMax
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   355
	| parser printString suffix |
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
	parser := $a asParser min: 2 max: 4.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   357
	self assert: parser min equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   358
	self assert: parser max equals: 4.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
	self assert: parser parse: 'aa' to: #($a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
	self assert: parser parse: 'aaa' to: #($a $a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
	self assert: parser parse: 'aaaa' to: #($a $a $a $a).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   364
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   365
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   366
		parse: 'aaaaa'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   367
		to: #($a $a $a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   368
		end: 4.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   369
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   370
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   371
		parse: 'aaaaaa'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   372
		to: #($a $a $a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   373
		end: 4.
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   374
	printString := parser printString.
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   375
	suffix := printString copyFrom: printString size - 5 to: printString size.
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
   376
	self assert: suffix = '[2, 4]'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   379
testMinMaxGreedy
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   380
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   381
	parser := #word asParser min: 2 max: 4 greedy: #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   382
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   383
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   384
	self assert: parser fail: 'abcde'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   385
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   386
	self assert: parser fail: '1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   387
	self assert: parser fail: 'a1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   388
	self assert: parser parse: 'ab1' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   389
	self assert: parser parse: 'abc1' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   390
	self assert: parser parse: 'abcd1' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   391
	self assert: parser fail: 'abcde1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   392
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   393
	self assert: parser fail: '12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   394
	self assert: parser parse: 'a12' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   395
	self assert: parser parse: 'ab12' to: #($a $b $1) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   396
	self assert: parser parse: 'abc12' to: #($a $b $c $1) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   397
	self assert: parser parse: 'abcd12' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   398
	self assert: parser fail: 'abcde12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   399
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   400
	self assert: parser parse: '123' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   401
	self assert: parser parse: 'a123' to: #($a $1 $2) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   402
	self assert: parser parse: 'ab123' to: #($a $b $1 $2) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   403
	self assert: parser parse: 'abc123' to: #($a $b $c $1) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   404
	self assert: parser parse: 'abcd123' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   405
	self assert: parser fail: 'abcde123'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   406
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   407
	self assert: parser parse: '1234' to: #($1 $2 $3) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   408
	self assert: parser parse: 'a1234' to: #($a $1 $2 $3) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   409
	self assert: parser parse: 'ab1234' to: #($a $b $1 $2) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   410
	self assert: parser parse: 'abc1234' to: #($a $b $c $1) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   411
	self assert: parser parse: 'abcd1234' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   412
	self assert: parser fail: 'abcde1234'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   413
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   414
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   415
testMinMaxLazy
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   416
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   417
	parser := #word asParser min: 2 max: 4 lazy: #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   418
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   419
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   420
	self assert: parser fail: 'abcde'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   421
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   422
	self assert: parser fail: '1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   423
	self assert: parser fail: 'a1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   424
	self assert: parser parse: 'ab1' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   425
	self assert: parser parse: 'abc1' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   426
	self assert: parser parse: 'abcd1' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   427
	self assert: parser fail: 'abcde1'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   428
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   429
	self assert: parser fail: '12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   430
	self assert: parser parse: 'a12' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   431
	self assert: parser parse: 'ab12' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   432
	self assert: parser parse: 'abc12' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   433
	self assert: parser parse: 'abcd12' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   434
	self assert: parser fail: 'abcde12'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   435
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   436
	self assert: parser parse: '123' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   437
	self assert: parser parse: 'a123' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   438
	self assert: parser parse: 'ab123' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   439
	self assert: parser parse: 'abc123' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   440
	self assert: parser parse: 'abcd123' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   441
	self assert: parser fail: 'abcde123'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   442
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   443
	self assert: parser parse: '1234' to: #($1 $2) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   444
	self assert: parser parse: 'a1234' to: #($a $1) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   445
	self assert: parser parse: 'ab1234' to: #($a $b) end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   446
	self assert: parser parse: 'abc1234' to: #($a $b $c) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   447
	self assert: parser parse: 'abcd1234' to: #($a $b $c $d) end: 4.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   448
	self assert: parser fail: 'abcde1234'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   449
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   450
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
testNegate
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
	parser := 'foo' asParser negate.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   454
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
	self assert: parser parse: 'f' to: $f end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
	self assert: parser parse: 'fo' to: $f end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
	self assert: parser parse: 'fob' to: $f end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
	self assert: parser parse: 'ffoo' to: $f end: 1.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   459
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   460
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
	self assert: parser fail: 'foo'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
testNot
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   465
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   466
	parser := 'foo' asParser flatten , 'bar' asParser flatten not.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   467
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
	self assert: parser parse: 'foobaz' to: #('foo' nil) end: 3.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
	self assert: parser fail: 'foobar'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   471
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
testOptional
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
	parser := $a asParser optional.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   475
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
	self assert: parser parse: '' to: nil.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   477
	self assert: parser parse: 'a' to: $a.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   478
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
	self assert: parser parse: 'aa' to: $a end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
	self assert: parser parse: 'ab' to: $a end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
	self assert: parser parse: 'b' to: nil end: 0.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
	self assert: parser parse: 'bb' to: nil end: 0.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
	self assert: parser parse: 'ba' to: nil end: 0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
testPluggable
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
	| block parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
	block := [ :stream | stream position ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
	parser := block asParser.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   490
	self assert: parser block equals: block
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
testPlus
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
	parser := $a asParser plus.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   496
	self assert: parser min equals: 1.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
	self assert: parser max > parser min.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
	self assert: parser parse: 'a' to: #($a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
	self assert: parser parse: 'aa' to: #($a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
	self assert: parser parse: 'aaa' to: #($a $a $a).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   501
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   502
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   503
		parse: 'ab'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   504
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   505
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   506
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   507
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   508
		parse: 'aab'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   509
		to: #($a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   510
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   511
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   512
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   513
		parse: 'aaab'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   514
		to: #($a $a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   515
		end: 3.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   517
	self assert: parser fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
	self assert: parser fail: 'ba'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
testPlusGreedy
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   522
	| limit parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   523
	limit := #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   524
	parser := #word asParser plusGreedy: limit.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   525
	self assert: parser min equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   526
	self assert: parser max > parser min.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   527
	self assert: parser limit equals: limit.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   528
	self assert: parser children size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   529
	self assert: parser children last equals: limit.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   530
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   531
	self assert: parser fail: '1'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
	self assert: parser fail: 'ab'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   534
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   535
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   536
		parse: 'a1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   537
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   538
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   539
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   540
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   541
		parse: 'ab1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   542
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   543
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   544
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   545
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   546
		parse: 'abc1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   547
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   548
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   549
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   550
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   551
		parse: 'a12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   552
		to: #($a $1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   553
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   554
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   555
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   556
		parse: 'ab12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   557
		to: #($a $b $1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   558
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   559
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   560
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   561
		parse: 'abc12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   562
		to: #($a $b $c $1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   563
		end: 4.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   564
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   565
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   566
		parse: 'a123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   567
		to: #($a $1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   568
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   569
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   570
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   571
		parse: 'ab123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   572
		to: #($a $b $1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   573
		end: 4.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   574
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   575
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   576
		parse: 'abc123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   577
		to: #($a $b $c $1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   578
		end: 5
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   579
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
testPlusLazy
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   582
	| limit parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   583
	limit := #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   584
	parser := #word asParser plusLazy: limit.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   585
	self assert: parser min equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   586
	self assert: parser max > parser min.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   587
	self assert: parser limit equals: limit.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   588
	self assert: parser children size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   589
	self assert: parser children last equals: limit.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
	self assert: parser fail: '1'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
	self assert: parser fail: 'ab'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   594
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   595
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   596
		parse: 'a1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   597
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   598
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   599
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   600
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   601
		parse: 'ab1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   602
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   603
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   604
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   605
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   606
		parse: 'abc1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   607
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   608
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   609
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   610
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   611
		parse: 'a12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   612
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   613
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   614
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   615
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   616
		parse: 'ab12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   617
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   618
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   619
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   620
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   621
		parse: 'abc12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   622
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   623
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   624
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   625
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   626
		parse: 'a123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   627
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   628
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   629
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   630
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   631
		parse: 'ab123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   632
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   633
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   634
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   635
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   636
		parse: 'abc123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   637
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   638
		end: 3
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   639
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   640
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   641
testSeparatedBy
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   642
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   643
	parser := $a asParser separatedBy: $b asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   644
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   645
	self assert: parser parse: 'a' to: #($a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   646
	self assert: parser parse: 'aba' to: #($a $b $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
	self assert: parser parse: 'ababa' to: #($a $b $a $b $a).
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   648
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   649
	self assert: parser parse: 'ab' to: #($a) end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
	self assert: parser parse: 'abab' to: #($a $b $a) end: 3.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   651
	self assert: parser parse: 'ac' to: #($a) end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
	self assert: parser parse: 'abac' to: #($a $b $a) end: 3.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   653
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   654
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
	self assert: parser fail: 'c'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   658
testSeparatedByWithoutSeparators
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   659
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   660
	parser := ($a asParser separatedBy: $b asParser)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   661
		withoutSeparators.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   662
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   663
	self assert: parser parse: 'a' to: #($a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   664
	self assert: parser parse: 'aba' to: #($a $a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   665
	self assert: parser parse: 'ababa' to: #($a $a $a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   666
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   667
	self assert: parser parse: 'ab' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   668
	self assert: parser parse: 'abab' to: #($a $a) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   669
	self assert: parser parse: 'ac' to: #($a) end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   670
	self assert: parser parse: 'abac' to: #($a $a) end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   671
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   672
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   673
	self assert: parser fail: 'c'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   674
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   675
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
testSequence
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   677
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
	parser := $a asParser , $b asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   679
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   680
	self assert: parser parse: 'ab' to: #($a $b).
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   681
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   682
	self assert: parser parse: 'aba' to: #($a $b) end: 2.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   683
	self assert: parser parse: 'abb' to: #($a $b) end: 2.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   684
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   685
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   686
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
	self assert: parser fail: 'aa'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   688
	self assert: parser fail: 'ba'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   689
	self assert: parser fail: 'bab'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   690
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   691
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   692
testStar
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   693
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   694
	parser := $a asParser star.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   695
	self assert: parser min equals: 0.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
	self assert: parser max > parser min.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
	self assert: parser parse: '' to: #().
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
	self assert: parser parse: 'a' to: #($a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   699
	self assert: parser parse: 'aa' to: #($a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   700
	self assert: parser parse: 'aaa' to: #($a $a $a).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   701
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   702
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   703
		parse: 'b'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   704
		to: #()
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   705
		end: 0.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   706
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   707
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   708
		parse: 'ab'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   709
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   710
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   711
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   712
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   713
		parse: 'aab'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   714
		to: #($a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   715
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   716
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   717
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   718
		parse: 'aaab'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   719
		to: #($a $a $a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   720
		end: 3
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   722
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   723
testStarGreedy
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   724
	| limit parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   725
	limit := #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   726
	parser := #word asParser starGreedy: limit.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   727
	self assert: parser min equals: 0.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   728
	self assert: parser max > parser min.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   729
	self assert: parser limit equals: limit.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   730
	self assert: parser children size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   731
	self assert: parser children last equals: limit.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
	self assert: parser fail: 'ab'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   735
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   736
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   737
		parse: '1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   738
		to: #()
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   739
		end: 0.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   740
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   741
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   742
		parse: 'a1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   743
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   744
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   745
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   746
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   747
		parse: 'ab1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   748
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   749
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   750
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   751
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   752
		parse: 'abc1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   753
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   754
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   755
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   756
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   757
		parse: '12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   758
		to: #($1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   759
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   760
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   761
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   762
		parse: 'a12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   763
		to: #($a $1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   764
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   765
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   766
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   767
		parse: 'ab12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   768
		to: #($a $b $1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   769
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   770
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   771
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   772
		parse: 'abc12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   773
		to: #($a $b $c $1)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   774
		end: 4.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   775
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   776
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   777
		parse: '123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   778
		to: #($1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   779
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   780
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   781
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   782
		parse: 'a123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   783
		to: #($a $1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   784
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   785
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   786
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   787
		parse: 'ab123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   788
		to: #($a $b $1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   789
		end: 4.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   790
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   791
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   792
		parse: 'abc123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   793
		to: #($a $b $c $1 $2)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   794
		end: 5
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   795
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   796
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   797
testStarLazy
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   798
	| limit parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   799
	limit := #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   800
	parser := #word asParser starLazy: limit.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   801
	self assert: parser min equals: 0.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
   802
	self assert: parser max > parser min.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   803
	self assert: parser limit equals: limit.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   804
	self assert: parser children size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   805
	self assert: parser children last equals: limit.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   806
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   807
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   808
	self assert: parser fail: 'ab'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   809
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   810
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   811
		parse: '1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   812
		to: #()
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   813
		end: 0.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   814
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   815
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   816
		parse: 'a1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   817
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   818
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   819
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   820
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   821
		parse: 'ab1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   822
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   823
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   824
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   825
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   826
		parse: 'abc1'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   827
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   828
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   829
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   830
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   831
		parse: '12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   832
		to: #()
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   833
		end: 0.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   834
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   835
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   836
		parse: 'a12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   837
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   838
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   839
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   840
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   841
		parse: 'ab12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   842
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   843
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   844
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   845
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   846
		parse: 'abc12'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   847
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   848
		end: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   849
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   850
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   851
		parse: '123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   852
		to: #()
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   853
		end: 0.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   854
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   855
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   856
		parse: 'a123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   857
		to: #($a)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   858
		end: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   859
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   860
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   861
		parse: 'ab123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   862
		to: #($a $b)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   863
		end: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   864
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   865
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   866
		parse: 'abc123'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   867
		to: #($a $b $c)
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   868
		end: 3
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   869
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   870
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   871
testTimes
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   872
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   873
	parser := $a asParser times: 2.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   874
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   875
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   876
	self assert: parser fail: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   877
	self assert: parser parse: 'aa' to: #($a $a).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   878
	self assert: parser parse: 'aaa' to: #($a $a) end: 2
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   879
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   880
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   881
testUnresolved
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   882
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   883
	parser := PPUnresolvedParser new.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   884
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   885
	self assert: parser isUnresolved.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   886
	self should: [ parser parse: '' ] raise: Error.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   887
	self should: [ parser parse: 'a' ] raise: Error.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   888
	self should: [ parser parse: 'ab' ] raise: Error.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   889
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   890
	parser := nil asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   891
	self deny: parser isUnresolved
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   892
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   893
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   894
testWrapped
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   895
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   896
	parser := $a asParser wrapped.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   897
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   898
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   899
	self assert: parser fail: 'b'.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   900
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   901
	parser := (($a asParser , $b asParser ) wrapped , $c asParser).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   902
	self assert: parser parse: 'abc' to: #(#($a $b) $c)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   903
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   904
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   905
testXor
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   906
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   907
	parser := ($a asParser / $b asParser)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   908
			|  ($b asParser / $c asParser).
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   909
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   910
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   911
	self assert: parser parse: 'c' to: $c.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   912
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   913
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   914
	self assert: parser fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   915
	self assert: parser fail: 'd'.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   916
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   917
	" truly symmetric "
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   918
	parser := ($b asParser / $c asParser)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   919
			|  ($a asParser / $b asParser).
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   920
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   921
	self assert: parser parse: 'a' to: $a.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   922
	self assert: parser parse: 'c' to: $c.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   923
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   924
	self assert: parser fail: ''.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   925
	self assert: parser fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   926
	self assert: parser fail: 'd'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   927
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   928
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   929
!PPParserTest methodsFor:'testing-accessing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   930
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   931
testNamed
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   932
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   933
	parser := PPSequenceParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   934
	self assert: parser name isNil.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   935
	parser := PPChoiceParser named: 'choice'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   936
	self assert: parser name equals: 'choice'.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   937
	parser := $* asParser name: 'star'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   938
	self assert: parser name equals: 'star'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   939
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   940
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   941
testPrint
405
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   942
	| parser |
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   943
	parser := PPParser new.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   944
	self assert: (parser printString includesSubstring: 'PPParser').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   945
	
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   946
	parser := PPParser named: 'choice'.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   947
	self assert: (parser printString includesSubstring: 'PPParser(choice').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   948
	
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   949
	parser := PPLiteralObjectParser on: $a.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   950
	self assert: (parser printString includesSubstring: $a printString).
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   951
	
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   952
	parser := PPFailingParser message: 'error'.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   953
	self assert: (parser printString includesSubstring: 'error').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   954
	
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   955
	parser := PPPredicateObjectParser on: [ :c | true ] message: 'error'.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   956
	self assert: (parser printString includesSubstring: 'error')
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   957
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   958
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   959
!PPParserTest methodsFor:'testing-fixtures'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   960
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   961
testSideEffectChoice
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   962
	"Adding another element to a choice should create a copy, otherwise we get unwanted side-effects."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   963
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   964
	| p1 p2 p3 |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   965
	p1 := $a asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   966
	p2 := p1 / $b asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   967
	p3 := p1 / $c asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   968
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   969
	self assert: p1 parse: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   970
	self assert: p1 fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   971
	self assert: p1 fail: 'c'.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   972
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   973
	self assert: p2 parse: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   974
	self assert: p2 parse: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   975
	self assert: p2 fail: 'c'.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   976
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   977
	self assert: p3 parse: 'a'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   978
	self assert: p3 fail: 'b'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   979
	self assert: p3 parse: 'c'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   980
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   981
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   982
testSideEffectListCopy
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   983
	| old new |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   984
	old := $a asParser , $b asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   985
	new := old copy.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   986
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   987
	self deny: old == new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   988
	self deny: old children == new children.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   989
	self assert: old children first == new children first.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   990
	self assert: old children last == new children last
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   991
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   992
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   993
testSideEffectSequence
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   994
	"Adding another element to a sequence should create a copy, otherwise we get unwanted side-effects."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   995
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   996
	| p1 p2 p3 |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   997
	p1 := $a asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   998
	p2 := p1 , $b asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   999
	p3 := p1 , $c asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1000
	
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1001
	self assert: p1 parse: 'a'.	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1002
	self assert: p1 parse: 'ab' end: 1.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1003
	self assert: p1 parse: 'ac' end: 1.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1004
	
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1005
	self assert: p2 fail: 'a'.	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1006
	self assert: p2 parse: 'ab'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1007
	self assert: p2 fail: 'ac'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1008
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1009
	self assert: p3 fail: 'a'.	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1010
	self assert: p3 fail: 'ab'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1011
	self assert: p3 parse: 'ac'
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1012
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1013
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1014
!PPParserTest methodsFor:'testing-mapping'!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1015
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1016
testAction
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1017
	| block parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1018
	block := [ :char | char asUppercase ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1019
	parser := #any asParser ==> block.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1020
	self assert: parser block equals: block.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1021
	self assert: parser parse: 'a' to: $A.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1022
	self assert: parser parse: 'b' to: $B
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1023
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1024
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1025
testAnswer
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1026
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1027
	parser := $a asParser answer: $b.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1028
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1029
	self assert: parser parse: 'a' to: $b.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1030
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1031
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1032
	self assert: parser fail: 'b'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1033
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1034
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1035
testFlatten
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1036
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1037
	parser := $a asParser flatten.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1038
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1039
	self assert: parser parse: 'a' to: 'a'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1040
	self assert: parser parse: #($a) to: #($a).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1041
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1042
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1043
	self assert: parser fail: 'b'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1044
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1045
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1046
testFoldLeft2
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1047
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1048
	parser := #any asParser star 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1049
		foldLeft: [ :a :b | Array with: a with: b ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1050
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1051
	self assert: parser parse: #(a) to: #a.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1052
	self assert: parser parse: #(a b) to: #(a b).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1053
	self assert: parser parse: #(a b c) to: #((a b) c).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1054
	self assert: parser parse: #(a b c d) to: #(((a b) c) d).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1055
	self assert: parser parse: #(a b c d e) to: #((((a b) c) d) e)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1056
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1057
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1058
testFoldLeft3
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1059
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1060
	parser := #any asParser star 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1061
		foldLeft: [ :a :b :c | Array with: a with: b with: c ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1062
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1063
	self assert: parser parse: #(a) to: #a.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1064
	self assert: parser parse: #(a b c) to: #(a b c).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1065
	self assert: parser parse: #(a b c d e) to: #((a b c) d e)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1066
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1067
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1068
testFoldRight2
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1069
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1070
	parser := #any asParser star 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1071
		foldRight: [ :a :b | Array with: a with: b ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1072
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1073
	self assert: parser parse: #(a) to: #a.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1074
	self assert: parser parse: #(a b) to: #(a b).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1075
	self assert: parser parse: #(a b c) to: #(a (b c)).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1076
	self assert: parser parse: #(a b c d) to: #(a (b (c d))).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1077
	self assert: parser parse: #(a b c d e) to: #(a (b (c (d e))))
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1078
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1079
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1080
testFoldRight3
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1081
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1082
	parser := #any asParser star 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1083
		foldRight: [ :a :b :c | Array with: a with: b with: c ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1084
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1085
	self assert: parser parse: #(a) to: #a.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1086
	self assert: parser parse: #(a b c) to: #(a b c).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1087
	self assert: parser parse: #(a b c d e) to: #(a b (c d e))
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1088
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1089
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1090
testMap1
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1091
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1092
	parser := #any asParser 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1093
		map: [ :a | Array with: a ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1094
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1095
	self assert: parser parse: #(a) to: #(a)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1096
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1097
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1098
testMap2
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1099
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1100
	parser := (#any asParser , #any asParser) 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1101
		map: [ :a :b | Array with: b with: a ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1102
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1103
	self assert: parser parse: #(a b) to: #(b a)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1104
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1105
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1106
testMap3
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1107
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1108
	parser := (#any asParser , #any asParser , #any asParser)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1109
		map: [ :a :b :c | Array with: c with: b with: a ].
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1110
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1111
	self assert: parser parse: #(a b c) to: #(c b a)
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1112
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1113
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1114
testMapFail1
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1115
	self
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1116
		should: [ #any asParser map: [  ] ]
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1117
		raise: Error.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1118
	self
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1119
		should: [ #any asParser map: [ :a :b | ] ]
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1120
		raise: Error
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1121
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1122
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1123
testMapFail2
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1124
	self
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1125
		should: [ (#any asParser , #any asParser) map: [ :a | ] ]
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1126
		raise: Error.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1127
	self
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1128
		should: [ (#any asParser , #any asParser) map: [ :a :b :c | ] ]
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1129
		raise: Error
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1130
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1131
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1132
testPermutation
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1133
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1134
	parser := #any asParser , #any asParser , #any asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1135
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1136
	self assert: (parser permutation: #()) parse: '123' to: #().
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1137
	self assert: (parser permutation: #(1)) parse: '123' to: #($1).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1138
	self assert: (parser permutation: #(1 3)) parse: '123' to: #($1 $3).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1139
	self assert: (parser permutation: #(3 1)) parse: '123' to: #($3 $1).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1140
	self assert: (parser permutation: #(2 2)) parse: '123' to: #($2 $2).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1141
	self assert: (parser permutation: #(3 2 1)) parse: '123' to: #($3 $2 $1).
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1142
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1143
	self should: [ parser permutation: #(0) ] raise: Error.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1144
	self should: [ parser permutation: #(4) ] raise: Error.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1145
	self should: [ parser permutation: #($2) ] raise: Error
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1146
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1147
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1148
testToken
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1149
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1150
	parser := $a asParser token.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1151
	self assert: parser tokenClass equals: PPToken.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1152
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1153
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1154
		parse: 'a'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1155
		toToken: 1
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1156
		stop: 1.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1157
	self assert: parser fail: 'b'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1158
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1159
	parser := $a asParser token: PPToken.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1160
	self assert: parser tokenClass equals: PPToken.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1161
	self
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1162
		assert: parser
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1163
		parse: 'a'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1164
		toToken: 1
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1165
		stop: 1.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1166
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1167
	self assert: parser fail: 'b'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1168
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1169
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1170
testTrim
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1171
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1172
	parser := $a asParser token trim.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1173
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1174
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1175
	self assert: parser parse: 'a ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1176
	self assert: parser parse: 'a	' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1177
	self assert: parser parse: 'a  ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1178
	self assert: parser parse: 'a 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1179
	 ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1180
		
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1181
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1182
	self assert: parser parse: ' a' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1183
	self assert: parser parse: '	a' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1184
	self assert: parser parse: '    a' toToken: 5 stop: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1185
	self assert: parser parse: '   
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1186
a' toToken: 5 stop: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1187
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1188
	self assert: parser parse: 'aa' toToken: 1 stop: 1 end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1189
	self assert: parser parse: 'a	a' toToken: 1 stop: 1 end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1190
	self assert: parser parse: 'a  a' toToken: 1 stop: 1 end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1191
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1192
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1193
	self assert: parser fail: 'b'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1194
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1195
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1196
testTrimBlanks
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1197
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1198
	parser := $a asParser token trimBlanks.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1199
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1200
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1201
	self assert: parser parse: 'a ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1202
	self assert: parser parse: 'a	' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1203
	self assert: parser parse: 'a  ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1204
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1205
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1206
	self assert: parser parse: ' a' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1207
	self assert: parser parse: '	a' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1208
	self assert: parser parse: '    a' toToken: 5 stop: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1209
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1210
	self assert: parser parse: 'aa' toToken: 1 stop: 1 end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1211
	self assert: parser parse: 'a	a' toToken: 1 stop: 1 end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1212
	self assert: parser parse: 'a  a' toToken: 1 stop: 1 end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1213
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1214
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1215
	self assert: parser fail: '
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1216
'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1217
	self assert: parser fail: '
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1218
a'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1219
	self assert: parser fail: 'b'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1220
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1221
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1222
testTrimCustom
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1223
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1224
	parser := $a asParser token trim: $b asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1225
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1226
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1227
	self assert: parser parse: 'ab' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1228
	self assert: parser parse: 'abb' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1229
		
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1230
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1231
	self assert: parser parse: 'ba' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1232
	self assert: parser parse: 'bba' toToken: 3 stop: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1233
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1234
	self assert: parser parse: 'aa' toToken: 1 stop: 1 end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1235
	self assert: parser parse: 'ab' toToken: 1 stop: 1 end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1236
	self assert: parser parse: 'abba' toToken: 1 stop: 1 end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1237
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1238
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1239
	self assert: parser fail: 'b'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1240
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1241
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1242
testTrimSpaces
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1243
	| parser |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1244
	parser := $a asParser token trimSpaces.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1245
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1246
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1247
	self assert: parser parse: 'a ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1248
	self assert: parser parse: 'a	' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1249
	self assert: parser parse: 'a  ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1250
	self assert: parser parse: 'a 
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1251
	 ' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1252
		
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1253
	self assert: parser parse: 'a' toToken: 1 stop: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1254
	self assert: parser parse: ' a' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1255
	self assert: parser parse: '	a' toToken: 2 stop: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1256
	self assert: parser parse: '    a' toToken: 5 stop: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1257
	self assert: parser parse: '   
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1258
a' toToken: 5 stop: 5.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1259
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1260
	self assert: parser parse: 'aa' toToken: 1 stop: 1 end: 1.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1261
	self assert: parser parse: 'a	a' toToken: 1 stop: 1 end: 2.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1262
	self assert: parser parse: 'a  a' toToken: 1 stop: 1 end: 3.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1263
	
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1264
	self assert: parser fail: ''.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1265
	self assert: parser fail: 'b'
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1266
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1267
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1268
testWrapping
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1269
	| parser result |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1270
	parser := #digit asParser plus >=> [ :stream :cc | Array with: stream position with: cc value with: stream position ].
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1271
	self assert: parser parse: '1' to: #(0 #($1) 1).
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1272
	self assert: parser parse: '12' to: #(0 #($1 $2) 2).
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1273
	self assert: parser parse: '123' to: #(0 #($1 $2 $3) 3).
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1274
	result := parser parse: 'a'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1275
	self assert: result first equals: 0.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1276
	self assert: result second isPetitFailure.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1277
	self assert: result last equals: 0
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1278
! !
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1279
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1280
!PPParserTest methodsFor:'testing-properties'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1281
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1282
testHasProperty
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1283
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1284
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1285
	self deny: (parser hasProperty: #foo).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1286
	parser propertyAt: #foo put: 123.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1287
	self assert: (parser hasProperty: #foo)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1288
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1289
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1290
testPostCopy
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1291
	| parser copy |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1292
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1293
	parser propertyAt: #foo put: true.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1294
	copy := parser copy.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1295
	copy propertyAt: #foo put: false.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1296
	self assert: (parser propertyAt: #foo).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1297
	self deny: (copy propertyAt: #foo)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1298
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1299
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1300
testPropertyAt
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1301
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1302
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1303
	self should: [ parser propertyAt: #foo ] raise: Error.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1304
	parser propertyAt: #foo put: true.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1305
	self assert: (parser propertyAt: #foo)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1306
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1307
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1308
testPropertyAtIfAbsent
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1309
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1310
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1311
	self assert: (parser propertyAt: #foo ifAbsent: [ true ]).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1312
	parser propertyAt: #foo put: true.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1313
	self assert: (parser propertyAt: #foo ifAbsent: [ false ])
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1314
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1315
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1316
testPropertyAtIfAbsentPut
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1317
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1318
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1319
	self assert: (parser propertyAt: #foo ifAbsentPut: [ true ]).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1320
	self assert: (parser propertyAt: #foo ifAbsentPut: [ false ])
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1321
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1322
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1323
testRemoveProperty
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1324
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1325
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1326
	self should: [ parser removeProperty: #foo ] raise: Error.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1327
	parser propertyAt: #foo put: true.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1328
	self assert: (parser removeProperty: #foo)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1329
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1330
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1331
testRemovePropertyIfAbsent
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1332
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1333
	parser := PPParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1334
	self assert: (parser removeProperty: #foo ifAbsent: [ true ]).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1335
	parser propertyAt: #foo put: true.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1336
	self assert: (parser removeProperty: #foo ifAbsent: [ false ])
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1337
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1338
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1339
!PPParserTest methodsFor:'testing-utilities'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1340
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1341
testChildren
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1342
	| p1 p2 p3 |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1343
	p1 := #lowercase asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1344
	p2 := p1 ==> #asUppercase.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1345
	p3 := PPUnresolvedParser new.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1346
	p3 def: p2 / p3.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1347
	self assert: p1 children isEmpty.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1348
	self assert: p2 children size equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1349
	self assert: p3 children size equals: 2
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1350
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1351
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1352
testFailure
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1353
	| failure |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1354
	failure := PPFailure message: 'Error' context: PPContext new at: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1355
	self assert: failure message equals: 'Error'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1356
	self assert: failure position equals: 3.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1357
	self assert: failure isPetitFailure.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1358
	self deny: 4 isPetitFailure.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1359
	self deny: 'foo' isPetitFailure
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1360
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1361
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1362
testListConstructor
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1363
	| p1 p2 p3 |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1364
	p1 := PPChoiceParser with: $a asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1365
	p2 := PPChoiceParser with: $a asParser with: $b asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1366
	p3 := PPChoiceParser withAll: (Array with: $a asParser with: $b asParser with: $c asParser).
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1367
	self assert: p1 children size equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1368
	self assert: p2 children size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1369
	self assert: p3 children size equals: 3
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1370
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1371
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1372
testMatches
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1373
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1374
	parser := $a asParser.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1375
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1376
	self assert: (parser matches: 'a').
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1377
	self deny: (parser matches: 'b').
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1378
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1379
	self assert: (parser matches: 'a' readStream).
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1380
	self deny: (parser matches: 'b' readStream)
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1381
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1382
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1383
testMatchesIn
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1384
	| parser result |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1385
	parser := $a asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1386
	result := parser matchesIn: 'abba'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1387
	self assert: result size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1388
	self assert: result first equals: $a.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1389
	self assert: result last equals: $a.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1390
	result := parser matchesIn: 'baaah'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1391
	self assert: result size equals: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1392
	self assert: result first equals: $a.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1393
	self assert: result last equals: $a
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1394
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1395
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1396
testMatchesInEmpty
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1397
	"Empty matches should properly advance and match at each position and at the end."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1398
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1399
	| parser result |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1400
	parser := [ :stream | stream position ] asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1401
	result := parser matchesIn: '123'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1402
	self assert: result asArray equals: #(0 1 2 3)
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1403
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1404
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1405
testMatchesInOverlapping
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1406
	"Matches that overlap should be properly reported."
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1407
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1408
	| parser result |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1409
	parser := #digit asParser , #digit asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1410
	result := parser matchesIn: 'a123b'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1411
	self assert: result size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1412
	self assert: result first equals: #($1 $2).
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1413
	self assert: result last equals: #($2 $3)
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1414
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1415
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1416
testMatchesSkipIn
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1417
	| parser result |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1418
	parser := $a asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1419
	result := parser matchesSkipIn: 'abba'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1420
	self assert: result size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1421
	self assert: result first equals: $a.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1422
	self assert: result last equals: $a.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1423
	result := parser matchesSkipIn: 'baaah'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1424
	self assert: result size equals: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1425
	self assert: result first equals: $a.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1426
	self assert: result last equals: $a
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1427
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1428
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1429
testMatchesSkipInOverlapping
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1430
	"Matches that overlap should be properly reported."
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1431
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1432
	| parser result |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1433
	parser := #digit asParser , #digit asParser.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1434
	result := parser matchesSkipIn: 'a123b'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1435
	self assert: result size equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1436
	self assert: result first equals: #($1 $2)
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1437
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1438
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1439
testMatchingRangesIn
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1440
	| input parser result |
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1441
	input := 'a12b3'.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1442
	parser := #digit asParser plus.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1443
	result := parser matchingRangesIn: input.
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1444
	result := result collect: [ :each | input copyFrom: each first to: each last ].
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1445
	self assert: result size equals: 3.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1446
	self assert: result first equals: '12'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1447
	self assert: result second equals: '2'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1448
	self assert: result last equals: '3'
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1449
!
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1450
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1451
testMatchingSkipRangesIn
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1452
	| input parser result |
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1453
	input := 'a12b3'.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1454
	parser := #digit asParser plus.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1455
	result := parser matchingSkipRangesIn: input.
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1456
	result := result collect: [ :each | input copyFrom: each first to: each last ].
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1457
	self assert: result size equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1458
	self assert: result first equals: '12'.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1459
	self assert: result last equals: '3'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1460
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1461
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1462
testParse
405
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1463
	| parser result |
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1464
	parser := $a asParser.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1465
	self assert: (parser parse: 'a') equals: $a.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1466
	self assert: (result := parser parse: 'b') isPetitFailure.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1467
	self assert: (result message includesSubstring: $a printString).
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1468
	self assert: (result message includesSubstring: 'expected').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1469
	self assert: result position equals: 0.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1470
	self assert: (parser parse: 'a' readStream) equals: $a.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1471
	self assert: (result := parser parse: 'b' readStream) isPetitFailure.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1472
	self assert: (result message includesSubstring: $a printString).
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1473
	self assert: (result message includesSubstring: 'expected').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1474
	self assert: result position equals: 0
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1475
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1476
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1477
testParseOnError0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1478
	| parser result seen |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1479
	parser := $a asParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1480
	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1481
	self assert: result equals: $a.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1482
	result := parser parse: 'b' onError: [ seen := true ].
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1483
	self assert: result.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1484
	self assert: seen
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1485
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1486
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1487
testParseOnError1
405
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1488
	| parser result seen |
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1489
	parser := $a asParser.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1490
	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1491
	self assert: result equals: $a.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1492
	result := parser
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1493
		parse: 'b'
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1494
		onError: [ :failure | 
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1495
			self assert: failure position equals: 0.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1496
			self assert: (failure message includesSubstring: $a printString).
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1497
			self assert: (failure message includesSubstring: 'expected').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1498
			seen := true ].
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1499
	self assert: result.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1500
	self assert: seen
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1501
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1502
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1503
testParseOnError2
405
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1504
	| parser result seen |
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1505
	parser := $a asParser.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1506
	result := parser parse: 'a' onError: [ self signalFailure: 'Not supposed to report an error' ].
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1507
	self assert: result equals: $a.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1508
	result := parser
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1509
		parse: 'b'
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1510
		onError: [ :msg :pos | 
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1511
			self assert: (msg includesSubstring: $a printString).
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1512
			self assert: (msg includesSubstring: 'expected').
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1513
			self assert: pos equals: 0.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1514
			seen := true ].
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1515
	self assert: result.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
  1516
	self assert: seen
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1517
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1518
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1519
testParser
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1520
	| parser |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1521
	parser := PPParser new.
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1522
	
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1523
	self assert: parser isPetitParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1524
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1525
	self deny: 4 isPetitParser.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1526
	self deny: 'foo' isPetitParser
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1527
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1528
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1529
!PPParserTest class methodsFor:'documentation'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1530
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1531
version
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1532
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPParserTest.st,v 1.4 2014-03-04 14:34:21 cg Exp $'
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1533
!
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1534
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1535
version_CVS
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1536
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPParserTest.st,v 1.4 2014-03-04 14:34:21 cg Exp $'
33
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1537
!
78c58a116921 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
  1538
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1539
version_HG
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1540
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1541
    ^ '$Changeset: <not expanded> $'
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1542
!
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
  1543
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1544
version_SVN
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1545
    ^ '$Id: PPParserTest.st,v 1.4 2014-03-04 14:34:21 cg Exp $'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1546
! !
191
Claus Gittinger <cg@exept.de>
parents: 33
diff changeset
  1547