diff -r e2529c410388 -r d9855050be6c tests/PPMappingTest.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/PPMappingTest.st Mon Jul 02 07:38:01 2018 +0200 @@ -0,0 +1,92 @@ +"{ Package: 'stx:goodies/petitparser/tests' }" + +"{ NameSpace: Smalltalk }" + +PPAbstractParserTest subclass:#PPMappingTest + instanceVariableNames:'' + classVariableNames:'' + poolDictionaries:'' + category:'PetitTests-Tests' +! + + +!PPMappingTest methodsFor:'testing'! + +testFoldLeft2 + | parser | + parser := #any asParser star + foldLeft: [ :a :b | Array with: a with: b ]. + + self assert: parser parse: #(a) to: #a. + self assert: parser parse: #(a b) to: #(a b). + self assert: parser parse: #(a b c) to: #((a b) c). + self assert: parser parse: #(a b c d) to: #(((a b) c) d). + self assert: parser parse: #(a b c d e) to: #((((a b) c) d) e) +! + +testFoldLeft3 + | parser | + parser := #any asParser star + foldLeft: [ :a :b :c | Array with: a with: b with: c ]. + + self assert: parser parse: #(a) to: #a. + self assert: parser parse: #(a b c) to: #(a b c). + self assert: parser parse: #(a b c d e) to: #((a b c) d e) +! + +testFoldRight2 + | parser | + parser := #any asParser star + foldRight: [ :a :b | Array with: a with: b ]. + + self assert: parser parse: #(a) to: #a. + self assert: parser parse: #(a b) to: #(a b). + self assert: parser parse: #(a b c) to: #(a (b c)). + self assert: parser parse: #(a b c d) to: #(a (b (c d))). + self assert: parser parse: #(a b c d e) to: #(a (b (c (d e)))) +! + +testFoldRight3 + | parser | + parser := #any asParser star + foldRight: [ :a :b :c | Array with: a with: b with: c ]. + + self assert: parser parse: #(a) to: #a. + self assert: parser parse: #(a b c) to: #(a b c). + self assert: parser parse: #(a b c d e) to: #(a b (c d e)) +! + +testMap1 + | parser | + parser := #any asParser + map: [ :a | Array with: a ]. + + self assert: parser parse: #(a) to: #(a) +! + +testMap2 + | parser | + parser := (#any asParser , #any asParser) + map: [ :a :b | Array with: b with: a ]. + + self assert: parser parse: #(a b) to: #(b a) +! + +testMap3 + | parser | + parser := (#any asParser , #any asParser , #any asParser) + map: [ :a :b :c | Array with: c with: b with: a ]. + + self assert: parser parse: #(a b c) to: #(c b a) +! ! + +!PPMappingTest class methodsFor:'documentation'! + +version + ^ '$Header$' +! + +version_CVS + ^ '$Header$' +! ! +