--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PPTokenTest.st Thu Aug 18 20:56:17 2011 +0200
@@ -0,0 +1,130 @@
+"{ Package: 'squeak:petitparser' }"
+
+PPAbstractParseTest subclass:#PPTokenTest
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitTests-Tests'
+!
+
+
+!PPTokenTest methodsFor:'accessing'!
+
+identifier
+ ^ #word asParser plus token
+! !
+
+!PPTokenTest methodsFor:'testing'!
+
+testCollection
+ | input result |
+ input := 'foo '.
+ result := self
+ parse: input
+ using: self identifier.
+ self assert: (result collection = input).
+ self assert: (result collection == input)
+!
+
+testNew
+ self should: [ PPToken new ] raise: Error.
+
+!
+
+testPrinting
+ | result |
+ result := PPToken on: 'var'.
+ self assert: (result printString includesSubString: 'PPToken(var)')
+!
+
+testSize
+ | result |
+ result := self
+ parse: 'foo'
+ using: self identifier.
+ self assert: result size = 3
+!
+
+testStart
+ | result |
+ result := self
+ parse: 'foo'
+ using: self identifier.
+ self assert: result start = 1
+!
+
+testStop
+ | result |
+ result := self
+ parse: 'foo'
+ using: self identifier.
+ self assert: result stop = 3
+!
+
+testValue
+ | input result |
+ input := 'foo'.
+ result := self
+ parse: input
+ using: self identifier.
+ self assert: result value = input.
+ self deny: result value == input
+! !
+
+!PPTokenTest methodsFor:'testing-comparing'!
+
+testEquality
+ | token1 token2 |
+ token1 := self parse: 'foo' using: self identifier.
+ token2 := self parse: 'foo' using: self identifier.
+ self deny: token1 == token2.
+ self assert: token1 = token2.
+ self assert: token1 hash = token2 hash.
+! !
+
+!PPTokenTest methodsFor:'testing-copying'!
+
+testCopyFromTo
+ | result other |
+ result := PPToken on: 'abc'.
+ other := result copyFrom: 2 to: 2.
+
+ self assert: other size = 1.
+ self assert: other start = 2.
+ self assert: other stop = 2.
+ self assert: other collection = result collection
+! !
+
+!PPTokenTest methodsFor:'testing-querying'!
+
+testColumn
+ | input parser result |
+ input := '1' , (String with: Character cr) , '12' , (String with: Character cr with: Character lf) , '123' , (String with: Character lf) , '1234'.
+ parser := #any asParser token star.
+ result := parser parse: input.
+ result
+ with: #(1 2 1 2 3 4 1 2 3 4 1 2 3 4)
+ do: [ :token :line | self assert: token column = line ]
+!
+
+testLine
+ | input parser result |
+ input := '1' , (String with: Character cr) , '12' , (String with: Character cr with: Character lf) , '123' , (String with: Character lf) , '1234'.
+ parser := #any asParser token star.
+ result := parser parse: input.
+ result
+ with: #(1 1 2 2 2 2 3 3 3 3 4 4 4 4)
+ do: [ :token :line | self assert: token line = line ]
+! !
+
+!PPTokenTest methodsFor:'utilities'!
+
+parse: aString using: aParser
+ ^ aParser parse: aString
+! !
+
+!PPTokenTest class methodsFor:'documentation'!
+
+version_SVN
+ ^ '$Id: PPTokenTest.st,v 1.1 2011-08-18 18:56:17 cg Exp $'
+! !