tests/PPTokenTest.st
author sr
Wed, 04 Jul 2018 15:23:55 +0200
changeset 607 019302eb9dd9
parent 576 07daf10d3285
permissions -rw-r--r--
build order was wrong
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
576
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/tests' }"
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
PPAbstractParserTest subclass:#PPTokenTest
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'PetitTests-Tests'
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!PPTokenTest methodsFor:'accessing'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
identifier
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	^ #word asParser plus token
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!PPTokenTest methodsFor:'testing'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
testCollection
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	| input result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	input := 'foo    '.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	result := self 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
		parse: input
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
		using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	self assert: (result collection = input).
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	self assert: (result collection == input)
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
testInitialize
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	PPToken initialize
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
testNew
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	self should: [ PPToken new ] raise: Error.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
testPrinting
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	| result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
	result := PPToken on: 'var'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	self assert: (result printString findString: 'PPToken[1,3]') > 0
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
testSize
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	| result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	result := self 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
		parse: 'foo'
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
		using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	self assert: result size = 3
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
testStart
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	| result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	result := self 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		parse: 'foo'
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
		using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	self assert: result start = 1
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
testStop
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	| result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	result := self 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
		parse: 'foo'
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
		using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
	self assert: result stop = 3
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
testValue
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
	| result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	result := PPToken on: 'var'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
	self should: [ result value ] raise: Notification
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
!PPTokenTest methodsFor:'testing-comparing'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
testEquality
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
	| token1 token2 |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
	token1 := self  parse: 'foo' using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	token2 := self  parse: 'foo' using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	self deny: token1 == token2.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
	self assert: token1 = token2.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
	self assert: token1 hash = token2 hash.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!PPTokenTest methodsFor:'testing-copying'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
testCopyFromTo
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
	| result other |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	result := PPToken on: 'abc'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
	other := result copyFrom: 2 to: 2.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
	self assert: other size = 1.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	self assert: other start = 2.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
	self assert: other stop = 2.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
	self assert: other collection = result collection
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!PPTokenTest methodsFor:'testing-querying'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
testColumn
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
        | input parser result cr |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
        cr := Smalltalk isSmalltalkX 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
                ifTrue:[ Character return]
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
                ifFalse:[ Character cr ].
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
        input := '1' , (String with:cr) , '12' , (String with: cr with: Character lf) , '123' , (String with: Character lf) , '1234'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
        parser := #any asParser token star.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
        result := parser parse: input.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
        result 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
                with:  #(1 2 1 2 3 4 1 2 3 4 1 2 3 4)
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
                do: [ :token :line | self assert: token column = line ]
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
testLine
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
        | input parser result cr|
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
        cr := Smalltalk isSmalltalkX 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
            ifTrue:[Character return] 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
            ifFalse:[Character cr].
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
        input := '1' , (String with: cr) , '12' , (String with: cr with: Character lf) , '123' , (String with: Character lf) , '1234'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
        parser := #any asParser token star.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
        result := parser parse: input.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
        result 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
                with: #(1 1 2 2 2 2 3 3 3 3 4 4 4 4) 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
                do: [ :token :line | self assert: token line = line ]
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
!PPTokenTest methodsFor:'testing-values'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
testInputValue
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
	| input result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
	input := 'foo'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
	result := self 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
		parse: input
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
		using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
	self assert: result inputValue = input.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
	self deny: result inputValue == input
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
testParsedValue
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
	| input result |
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
	input := 'foo'.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
	result := self 
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
		parse: input
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
		using: self identifier.
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	self assert: result parsedValue = #($f $o $o)
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
!PPTokenTest methodsFor:'utilities'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
parse: aString using: aParser
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
	^ aParser parse: aString
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
!PPTokenTest class methodsFor:'documentation'!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
version
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
    ^ '$Header$'
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
!
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
version_CVS
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    ^ '$Header$'
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
! !
07daf10d3285 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166