tests/PPTokenTest.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
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
     5
PPAbstractParserTest subclass:#PPTokenTest
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
!PPTokenTest methodsFor:'accessing'!
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
identifier
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	^ #word asParser plus token
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!PPTokenTest methodsFor:'testing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
testCollection
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	| input result |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	input := 'foo    '.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    24
	result := self parse: input using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    25
	self assert: result collection equals: input.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    26
	self assert: result collection == input
0
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
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    29
testInitialize
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    30
	PPToken initialize
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    31
!
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    32
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
testNew
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	self should: [ PPToken new ] raise: Error.
38
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    35
	
0
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
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
testPrinting
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	| result |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	result := PPToken on: 'var'.
427
a7f5e6de19d2 Merged JK's version from Monticello
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 405
diff changeset
    41
	self assert: result printString includesSubstring: 'PPToken[1,3]'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
!
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
testSize
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	| result |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    46
	result := self parse: 'foo' using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    47
	self assert: result size equals: 3
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
testStart
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	| result |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    52
	result := self parse: 'foo' using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    53
	self assert: result start equals: 1
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
testStop
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
	| result |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    58
	result := self parse: 'foo' using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    59
	self assert: result stop equals: 3
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
testValue
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    63
	| result |
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    64
	result := PPToken on: 'var'.
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
    65
	self should: [ result value ] raise: Notification
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!PPTokenTest methodsFor:'testing-comparing'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
testEquality
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	| token1 token2 |
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    72
	token1 := self parse: 'foo' using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    73
	token2 := self parse: 'foo' using: self identifier.
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	self deny: token1 == token2.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    75
	self assert: token1 equals: token2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    76
	self assert: token1 hash equals: token2 hash
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
!PPTokenTest methodsFor:'testing-copying'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
testCopyFromTo
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	| result other |
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	result := PPToken on: 'abc'.
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	other := result copyFrom: 2 to: 2.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    85
	self assert: other size equals: 1.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    86
	self assert: other start equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    87
	self assert: other stop equals: 2.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
    88
	self assert: other collection equals: result collection
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
!PPTokenTest methodsFor:'testing-querying'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
testColumn
405
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
    94
	| input parser result |
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
    95
	input := '1' , (String with: (Character codePoint: 13)) , '12' , (String with: (Character codePoint: 13) with: (Character codePoint: 10)) , '123'
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
    96
		, (String with: (Character codePoint: 10)) , '1234'.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
    97
	parser := #any asParser token star.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
    98
	result := parser parse: input.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
    99
	result with: #(1 2 1 2 3 4 1 2 3 4 1 2 3 4) do: [ :token :line | self assert: token column equals: line ]
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
testLine
405
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   103
	| input parser result |
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   104
	input := '1' , (String with: (Character codePoint: 13)) , '12' , (String with: (Character codePoint: 13) with: (Character codePoint: 10)) , '123'
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   105
		, (String with: (Character codePoint: 10)) , '1234'.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   106
	parser := #any asParser token star.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   107
	result := parser parse: input.
0470a5e6e712 Merged PetitParser and PetitTests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 380
diff changeset
   108
	result with: #(1 1 2 2 2 2 3 3 3 3 4 4 4 4) do: [ :token :line | self assert: token line equals: line ]
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   111
!PPTokenTest methodsFor:'testing-values'!
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   112
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   113
testInputValue
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   114
	| input result |
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   115
	input := 'foo'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   116
	result := self parse: input using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   117
	self assert: result inputValue equals: input.
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   118
	self deny: result inputValue == input
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   119
!
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   120
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   121
testParsedValue
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   122
	| input result |
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   123
	input := 'foo'.
377
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   124
	result := self parse: input using: self identifier.
6112a403a52d Updated to latest version from Moose repository.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 376
diff changeset
   125
	self assert: result parsedValue equals: #($f $o $o)
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   126
! !
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   127
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
!PPTokenTest methodsFor:'utilities'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
parse: aString using: aParser
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
	^ aParser parse: aString
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
! !
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
!PPTokenTest class methodsFor:'documentation'!
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
38
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   136
version
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   137
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPTokenTest.st,v 1.5 2014-03-04 14:34:24 cg Exp $'
38
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   138
!
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   139
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   140
version_CVS
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   141
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPTokenTest.st,v 1.5 2014-03-04 14:34:24 cg Exp $'
38
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   142
!
1e678b5f1423 Checkin from browser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   143
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
version_SVN
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   145
    ^ '$Id: PPTokenTest.st,v 1.5 2014-03-04 14:34:24 cg Exp $'
0
739fe9b7253e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
! !
194
Claus Gittinger <cg@exept.de>
parents: 95
diff changeset
   147