smalltalk
/
osmo-st-all
Archived
1
0
Fork 0

Add 'petitparser-tests/' from commit 'b466683989e11b6ffaac7ad03d1d95d10c362663'

git-subtree-dir: petitparser-tests
git-subtree-mainline: 287169d73a
git-subtree-split: b466683989
This commit is contained in:
Holger Hans Peter Freyther 2014-06-04 15:45:03 +02:00
commit 0616a4cd9b
3 changed files with 186 additions and 0 deletions

View File

@ -0,0 +1,3 @@
As of now I consider this to be MIT licensed. I have contacted the author to
get a clarification
Holger (27.11.2011)

View File

@ -0,0 +1,172 @@
TestResource subclass: PPParserResource [
| parsers |
<comment: nil>
<category: 'PetitTests-Core'>
parserAt: aParserClass [
"Answer a cached instance of aParserClass."
<category: 'accessing'>
^parsers at: aParserClass name ifAbsentPut: [aParserClass new]
]
setUp [
<category: 'running'>
super setUp.
parsers := Dictionary new
]
]
TestCase subclass: PPAbstractParseTest [
<comment: nil>
<category: 'PetitTests-Core'>
PPAbstractParseTest class >> isAbstract [
<category: 'testing'>
^self name = #PPAbstractParseTest
]
PPAbstractParseTest class >> packageNamesUnderTest [
<category: 'accessing'>
^#('PetitParser' 'PetitTests')
]
assert: aParser fail: aCollection [
<category: 'utilities'>
| stream result |
self assert: aParser isPetitParser.
stream := aCollection asPetitStream.
result := aParser parse: stream.
self assert: result isPetitFailure.
self assert: stream position = 0
]
assert: aParser parse: aCollection [
<category: 'utilities'>
self
assert: aParser
parse: aCollection
to: nil
end: aCollection size
]
assert: aParser parse: aCollection end: anInteger [
<category: 'utilities'>
self
assert: aParser
parse: aCollection
to: nil
end: anInteger
]
assert: aParser parse: aCollection to: anObject [
<category: 'utilities'>
self
assert: aParser
parse: aCollection
to: anObject
end: aCollection size
]
assert: aParser parse: aParseObject to: aTargetObject end: anInteger [
<category: 'utilities'>
| stream result |
self assert: aParser isPetitParser.
stream := aParseObject asPetitStream.
result := aParser parse: stream.
aTargetObject isNil
ifTrue: [self deny: result isPetitFailure]
ifFalse: [self assert: result = aTargetObject].
self assert: stream position = anInteger
]
assert: aParser parse: aParserObject toToken: from stop: to [
<category: 'utilities'>
| token |
token := PPToken
on: aParserObject
start: from
stop: to.
^self
assert: aParser
parse: aParserObject
to: token
]
assert: aParser parse: aParserObject toToken: from stop: to end: end [
<category: 'utilities'>
| token |
token := PPToken
on: aParserObject
start: from
stop: to.
^self
assert: aParser
parse: aParserObject
to: token
end: end
]
]
PPAbstractParseTest subclass: PPCompositeParserTest [
| parser |
<comment: nil>
<category: 'PetitTests-Core'>
PPCompositeParserTest class >> isAbstract [
<category: 'testing'>
^self name = #PPCompositeParserTest
]
PPCompositeParserTest class >> resources [
<category: 'accessing'>
^Array with: PPParserResource
]
assert: aCollection is: anObject [
<category: 'utilities'>
| result |
result := self parse: aCollection.
self
assert: result = anObject
description: 'Got: ' , result printString , '; Expected: '
, anObject printString
resumable: true
]
parse: aString [
<category: 'utilities'>
^parser parse: aString onError: [:err :pos | self error: err]
]
parse: aString production: aSymbol [
<category: 'utilities'>
^(parser productionAt: aSymbol) parse: aString
onError: [:err :pos | self error: err]
]
parserClass [
<category: 'accessing'>
self subclassResponsibility
]
parserInstance [
<category: 'accessing'>
^PPParserResource current parserAt: self parserClass
]
setUp [
<category: 'running'>
super setUp.
parser := self parserInstance
]
]

View File

@ -0,0 +1,11 @@
<package>
<name>PetitParserTests</name>
<namespace>PP</namespace>
<url>git://gitorious.org/gnu-smalltalk-ports/petitparser-tests.git</url>
<prereq>PetitParser</prereq>
<prereq>SUnit</prereq>
<filein>PetitParserTests.st</filein>
<file>PetitParserTests.st</file>
</package>