tests/PPMappingTest.st
changeset 566 d9855050be6c
equal deleted inserted replaced
565:e2529c410388 566:d9855050be6c
       
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 PPAbstractParserTest subclass:#PPMappingTest
       
     6 	instanceVariableNames:''
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitTests-Tests'
       
    10 !
       
    11 
       
    12 
       
    13 !PPMappingTest methodsFor:'testing'!
       
    14 
       
    15 testFoldLeft2
       
    16 	| parser |
       
    17 	parser := #any asParser star
       
    18 		foldLeft: [ :a :b | Array with: a with: b ].
       
    19 
       
    20 	self assert: parser parse: #(a) to: #a.
       
    21 	self assert: parser parse: #(a b) to: #(a b).
       
    22 	self assert: parser parse: #(a b c) to: #((a b) c).
       
    23 	self assert: parser parse: #(a b c d) to: #(((a b) c) d).
       
    24 	self assert: parser parse: #(a b c d e) to: #((((a b) c) d) e)
       
    25 !
       
    26 
       
    27 testFoldLeft3
       
    28 	| parser |
       
    29 	parser := #any asParser star
       
    30 		foldLeft: [ :a :b :c | Array with: a with: b with: c ].
       
    31 
       
    32 	self assert: parser parse: #(a) to: #a.
       
    33 	self assert: parser parse: #(a b c) to: #(a b c).
       
    34 	self assert: parser parse: #(a b c d e) to: #((a b c) d e)
       
    35 !
       
    36 
       
    37 testFoldRight2
       
    38 	| parser |
       
    39 	parser := #any asParser star
       
    40 		foldRight: [ :a :b | Array with: a with: b ].
       
    41 
       
    42 	self assert: parser parse: #(a) to: #a.
       
    43 	self assert: parser parse: #(a b) to: #(a b).
       
    44 	self assert: parser parse: #(a b c) to: #(a (b c)).
       
    45 	self assert: parser parse: #(a b c d) to: #(a (b (c d))).
       
    46 	self assert: parser parse: #(a b c d e) to: #(a (b (c (d e))))
       
    47 !
       
    48 
       
    49 testFoldRight3
       
    50 	| parser |
       
    51 	parser := #any asParser star
       
    52 		foldRight: [ :a :b :c | Array with: a with: b with: c ].
       
    53 
       
    54 	self assert: parser parse: #(a) to: #a.
       
    55 	self assert: parser parse: #(a b c) to: #(a b c).
       
    56 	self assert: parser parse: #(a b c d e) to: #(a b (c d e))
       
    57 !
       
    58 
       
    59 testMap1
       
    60 	| parser |
       
    61 	parser := #any asParser
       
    62 		map: [ :a | Array with: a ].
       
    63 
       
    64 	self assert: parser parse: #(a) to: #(a)
       
    65 !
       
    66 
       
    67 testMap2
       
    68 	| parser |
       
    69 	parser := (#any asParser , #any asParser)
       
    70 		map: [ :a :b | Array with: b with: a ].
       
    71 
       
    72 	self assert: parser parse: #(a b) to: #(b a)
       
    73 !
       
    74 
       
    75 testMap3
       
    76 	| parser |
       
    77 	parser := (#any asParser , #any asParser , #any asParser)
       
    78 		map: [ :a :b :c | Array with: c with: b with: a ].
       
    79 
       
    80 	self assert: parser parse: #(a b c) to: #(c b a)
       
    81 ! !
       
    82 
       
    83 !PPMappingTest class methodsFor:'documentation'!
       
    84 
       
    85 version
       
    86     ^ '$Header$'
       
    87 !
       
    88 
       
    89 version_CVS
       
    90     ^ '$Header$'
       
    91 ! !
       
    92