tests/PPTokenTest.st
changeset 377 6112a403a52d
parent 376 a2656b27cace
child 380 8fe3cb4e607f
equal deleted inserted replaced
376:a2656b27cace 377:6112a403a52d
    17 !PPTokenTest methodsFor:'testing'!
    17 !PPTokenTest methodsFor:'testing'!
    18 
    18 
    19 testCollection
    19 testCollection
    20 	| input result |
    20 	| input result |
    21 	input := 'foo    '.
    21 	input := 'foo    '.
    22 	result := self 
    22 	result := self parse: input using: self identifier.
    23 		parse: input
    23 	self assert: result collection equals: input.
    24 		using: self identifier.
    24 	self assert: result collection == input
    25 	self assert: (result collection = input).
       
    26 	self assert: (result collection == input)
       
    27 !
    25 !
    28 
    26 
    29 testInitialize
    27 testInitialize
    30 	PPToken initialize
    28 	PPToken initialize
    31 !
    29 !
    36 !
    34 !
    37 
    35 
    38 testPrinting
    36 testPrinting
    39 	| result |
    37 	| result |
    40 	result := PPToken on: 'var'.
    38 	result := PPToken on: 'var'.
    41 	self assert: (result printString findString: 'PPToken[1,3]') > 0
    39 	self assert: (result printString includesSubstring: 'PPToken[1,3]')
    42 !
    40 !
    43 
    41 
    44 testSize
    42 testSize
    45 	| result |
    43 	| result |
    46 	result := self 
    44 	result := self parse: 'foo' using: self identifier.
    47 		parse: 'foo'
    45 	self assert: result size equals: 3
    48 		using: self identifier.
       
    49 	self assert: result size = 3
       
    50 !
    46 !
    51 
    47 
    52 testStart
    48 testStart
    53 	| result |
    49 	| result |
    54 	result := self 
    50 	result := self parse: 'foo' using: self identifier.
    55 		parse: 'foo'
    51 	self assert: result start equals: 1
    56 		using: self identifier.
       
    57 	self assert: result start = 1
       
    58 !
    52 !
    59 
    53 
    60 testStop
    54 testStop
    61 	| result |
    55 	| result |
    62 	result := self 
    56 	result := self parse: 'foo' using: self identifier.
    63 		parse: 'foo'
    57 	self assert: result stop equals: 3
    64 		using: self identifier.
       
    65 	self assert: result stop = 3
       
    66 !
    58 !
    67 
    59 
    68 testValue
    60 testValue
    69 	| result |
    61 	| result |
    70 	result := PPToken on: 'var'.
    62 	result := PPToken on: 'var'.
    73 
    65 
    74 !PPTokenTest methodsFor:'testing-comparing'!
    66 !PPTokenTest methodsFor:'testing-comparing'!
    75 
    67 
    76 testEquality
    68 testEquality
    77 	| token1 token2 |
    69 	| token1 token2 |
    78 	token1 := self  parse: 'foo' using: self identifier.
    70 	token1 := self parse: 'foo' using: self identifier.
    79 	token2 := self  parse: 'foo' using: self identifier.
    71 	token2 := self parse: 'foo' using: self identifier.
    80 	self deny: token1 == token2.
    72 	self deny: token1 == token2.
    81 	self assert: token1 = token2.
    73 	self assert: token1 equals: token2.
    82 	self assert: token1 hash = token2 hash.
    74 	self assert: token1 hash equals: token2 hash
    83 ! !
    75 ! !
    84 
    76 
    85 !PPTokenTest methodsFor:'testing-copying'!
    77 !PPTokenTest methodsFor:'testing-copying'!
    86 
    78 
    87 testCopyFromTo
    79 testCopyFromTo
    88 	| result other |
    80 	| result other |
    89 	result := PPToken on: 'abc'.
    81 	result := PPToken on: 'abc'.
    90 	other := result copyFrom: 2 to: 2.
    82 	other := result copyFrom: 2 to: 2.
    91 	
    83 	self assert: other size equals: 1.
    92 	self assert: other size = 1.
    84 	self assert: other start equals: 2.
    93 	self assert: other start = 2.
    85 	self assert: other stop equals: 2.
    94 	self assert: other stop = 2.
    86 	self assert: other collection equals: result collection
    95 	self assert: other collection = result collection
       
    96 ! !
    87 ! !
    97 
    88 
    98 !PPTokenTest methodsFor:'testing-querying'!
    89 !PPTokenTest methodsFor:'testing-querying'!
    99 
    90 
   100 testColumn
    91 testColumn
   101         | input parser result cr |
    92 	| input parser result |
   102 
    93 	input := '1' , (String with: Character cr) , '12' , (String with: Character cr with: Character lf) , '123'
   103         cr := Smalltalk isSmalltalkX 
    94 		, (String with: Character lf) , '1234'.
   104                 ifTrue:[ Character return]
    95 	parser := #any asParser token star.
   105                 ifFalse:[ Character cr ].
    96 	result := parser parse: input.
   106         input := '1' , (String with:cr) , '12' , (String with: cr with: Character lf) , '123' , (String with: Character lf) , '1234'.
    97 	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 ]
   107         parser := #any asParser token star.
       
   108         result := parser parse: input.
       
   109         result 
       
   110                 with:  #(1 2 1 2 3 4 1 2 3 4 1 2 3 4)
       
   111                 do: [ :token :line | self assert: token column = line ]
       
   112 !
    98 !
   113 
    99 
   114 testLine
   100 testLine
   115         | input parser result cr|
   101 	| input parser result |
   116 
   102 	input := '1' , (String with: Character cr) , '12' , (String with: Character cr with: Character lf) , '123'
   117         cr := Smalltalk isSmalltalkX 
   103 		, (String with: Character lf) , '1234'.
   118             ifTrue:[Character return] 
   104 	parser := #any asParser token star.
   119             ifFalse:[Character cr].
   105 	result := parser parse: input.
   120         input := '1' , (String with: cr) , '12' , (String with: cr with: Character lf) , '123' , (String with: Character lf) , '1234'.
   106 	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 ]
   121         parser := #any asParser token star.
       
   122         result := parser parse: input.
       
   123         result 
       
   124                 with: #(1 1 2 2 2 2 3 3 3 3 4 4 4 4) 
       
   125                 do: [ :token :line | self assert: token line = line ]
       
   126 ! !
   107 ! !
   127 
   108 
   128 !PPTokenTest methodsFor:'testing-values'!
   109 !PPTokenTest methodsFor:'testing-values'!
   129 
   110 
   130 testInputValue
   111 testInputValue
   131 	| input result |
   112 	| input result |
   132 	input := 'foo'.
   113 	input := 'foo'.
   133 	result := self 
   114 	result := self parse: input using: self identifier.
   134 		parse: input
   115 	self assert: result inputValue equals: input.
   135 		using: self identifier.
       
   136 	self assert: result inputValue = input.
       
   137 	self deny: result inputValue == input
   116 	self deny: result inputValue == input
   138 !
   117 !
   139 
   118 
   140 testParsedValue
   119 testParsedValue
   141 	| input result |
   120 	| input result |
   142 	input := 'foo'.
   121 	input := 'foo'.
   143 	result := self 
   122 	result := self parse: input using: self identifier.
   144 		parse: input
   123 	self assert: result parsedValue equals: #($f $o $o)
   145 		using: self identifier.
       
   146 	self assert: result parsedValue = #($f $o $o)
       
   147 ! !
   124 ! !
   148 
   125 
   149 !PPTokenTest methodsFor:'utilities'!
   126 !PPTokenTest methodsFor:'utilities'!
   150 
   127 
   151 parse: aString using: aParser
   128 parse: aString using: aParser