PPTokenTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 10 Jan 2013 14:25:42 +0100
changeset 118 c40460d0df0d
parent 95 3ba2f35e7a50
child 194 4d2a1901344b
permissions -rw-r--r--
automatically generated by browser

"{ Package: 'stx:goodies/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 |
        Smalltalk isSmalltalkX ifTrue:[
            input := '1' , (String with: Character return) , '12' , (String with: Character return with: Character lf) , '123' , (String with: Character lf) , '1234'.
        ] ifFalse:[
            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 |
        Smalltalk isSmalltalkX ifTrue:[
            input := '1' , (String with: Character return) , '12' , (String with: Character return with: Character lf) , '123' , (String with: Character lf) , '1234'.
        ] ifFalse:[
            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
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPTokenTest.st,v 1.4 2012-12-01 15:09:03 cg Exp $'
!

version_CVS
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPTokenTest.st,v 1.4 2012-12-01 15:09:03 cg Exp $'
!

version_SVN
    ^ '§Id: PPTokenTest.st 4 2010-12-18 17:02:23Z kursjan §'
! !