PPLambdaParserTest.st
changeset 4 90de244a7fa2
parent 0 739fe9b7253e
child 37 d602818dd055
equal deleted inserted replaced
3:e1b11f74e142 4:90de244a7fa2
     1 "{ Package: 'squeak:petitparser' }"
     1 "{ Package: 'stx:goodies/petitparser' }"
     2 
     2 
     3 PPCompositeParserTest subclass:#PPLambdaParserTest
     3 PPCompositeParserTest subclass:#PPLambdaParserTest
     4 	instanceVariableNames:''
     4 	instanceVariableNames:''
     5 	classVariableNames:''
     5 	classVariableNames:''
     6 	poolDictionaries:''
     6 	poolDictionaries:''
    61 ! !
    61 ! !
    62 
    62 
    63 !PPLambdaParserTest methodsFor:'testing-utilities'!
    63 !PPLambdaParserTest methodsFor:'testing-utilities'!
    64 
    64 
    65 testParseOnError
    65 testParseOnError
    66         | beenHere |
    66 	| beenHere |
    67         result := self parserClass
    67 	result := self parserClass
    68                 parse: '\x.y'
    68 		parse: '\x.y'
    69                 onError: [ self fail ].
    69 		onError: [ self fail ].
    70         self assert: result = #('x' 'y').
    70 	self assert: result = #('x' 'y').
    71         
    71 
    72         beenHere := false.
    72 	beenHere := false.
    73         result := self parserClass
    73 	result := self parserClass
    74                 parse: '\x.'
    74 		parse: '\x.'
    75                 onError: [ beenHere := true ].
    75 		onError: [ beenHere := true ].
    76         self assert: beenHere.
    76 	self assert: beenHere.
    77         
    77 
    78         beenHere := false.
    78 	beenHere := false.
    79         result := self parserClass
    79 	result := self parserClass
    80                 parse: '\x.'
    80 		parse: '\x.'
    81                 onError: [ :fail | beenHere := true. fail ].
    81 		onError: [ :fail | beenHere := true. fail ].
    82         self assert: beenHere.
    82 	self assert: beenHere.
    83         "We don't use $ before character sign in ST/X"
    83 	"We don't use $ before character sign in ST/X"
    84         self assert: (result message includesSubString: '(').
    84 	self assert: (result message includesSubString: '(').
    85 "/        self assert: (result message includesSubString: '$(').
    85 "/        self assert: (result message includesSubString: '$(').
    86         self assert: (result message includesSubString: 'expected').
    86 	self assert: (result message includesSubString: 'expected').
    87         self assert: (result position = 0).
    87 	self assert: (result position = 0).
    88 
    88 
    89         beenHere := false.
    89 	beenHere := false.
    90         result := self parserClass
    90 	result := self parserClass
    91                 parse: '\x.'
    91 		parse: '\x.'
    92                 onError: [ :msg :pos | 
    92 		onError: [ :msg :pos |
    93                         "We don't use $ before character sign in ST/X"
    93 			"We don't use $ before character sign in ST/X"
    94                         self assert: (msg includesSubString: '(').
    94 			self assert: (msg includesSubString: '(').
    95 "/                        self assert: (msg includesSubString: '$(').
    95 "/                        self assert: (msg includesSubString: '$(').
    96                         self assert: (msg includesSubString: 'expected').
    96 			self assert: (msg includesSubString: 'expected').
    97                         self assert: (pos = 0).
    97 			self assert: (pos = 0).
    98                         beenHere := true ].
    98 			beenHere := true ].
    99         self assert: result.
    99 	self assert: result.
   100         self assert: beenHere
   100 	self assert: beenHere
   101 
   101 
   102     "Modified: / 19-12-2010 / 16:52:33 / Jan Kurs <kurs.jan@post.cz>"
   102     "Modified: / 19-12-2010 / 16:52:33 / Jan Kurs <kurs.jan@post.cz>"
   103 !
   103 !
   104 
   104 
   105 testParseStartingAtOnError
   105 testParseStartingAtOnError
   107 	result := self parserClass
   107 	result := self parserClass
   108 		parse: 'x'
   108 		parse: 'x'
   109 		startingAt: #variable
   109 		startingAt: #variable
   110 		onError: [ self fail ].
   110 		onError: [ self fail ].
   111 	self assert: result = 'x'.
   111 	self assert: result = 'x'.
   112 	
   112 
   113 	beenHere := false.
   113 	beenHere := false.
   114 	result := self parserClass
   114 	result := self parserClass
   115 		parse: '\'
   115 		parse: '\'
   116 		startingAt: #variable
   116 		startingAt: #variable
   117 		onError: [ beenHere := true ].
   117 		onError: [ beenHere := true ].
   118 	self assert: beenHere.
   118 	self assert: beenHere.
   119 	
   119 
   120 	beenHere := false.
   120 	beenHere := false.
   121 	result := self parserClass
   121 	result := self parserClass
   122 		parse: '\'
   122 		parse: '\'
   123 		startingAt: #variable
   123 		startingAt: #variable
   124 		onError: [ :fail | beenHere := true. fail ].
   124 		onError: [ :fail | beenHere := true. fail ].
   128 
   128 
   129 	beenHere := false.
   129 	beenHere := false.
   130 	result := self parserClass
   130 	result := self parserClass
   131 		parse: '\'
   131 		parse: '\'
   132 		startingAt: #variable
   132 		startingAt: #variable
   133 		onError: [ :msg :pos | 
   133 		onError: [ :msg :pos |
   134 			self assert: msg = 'letter expected'.
   134 			self assert: msg = 'letter expected'.
   135 			self assert: pos = 0.
   135 			self assert: pos = 0.
   136 			beenHere := true ].
   136 			beenHere := true ].
   137 	self assert: beenHere
   137 	self assert: beenHere
   138 !
   138 !
   139 
   139 
   140 testProductionAt
   140 testProductionAt
   141 	self assert: (parser productionAt: #foo) isNil.
   141 	self assert: (parser productionAt: #foo) isNil.
   142 	self assert: (parser productionAt: #foo ifAbsent: [ true ]).
   142 	self assert: (parser productionAt: #foo ifAbsent: [ true ]).
   143 	
   143 
   144 	self assert: (parser productionAt: #start) notNil.
   144 	self assert: (parser productionAt: #start) notNil.
   145 	self assert: (parser productionAt: #start ifAbsent: [ true ]) notNil.
   145 	self assert: (parser productionAt: #start ifAbsent: [ true ]) notNil.
   146 	
   146 
   147 	self assert: (parser productionAt: #variable) notNil.
   147 	self assert: (parser productionAt: #variable) notNil.
   148 	self assert: (parser productionAt: #variable ifAbsent: [ true ]) notNil
   148 	self assert: (parser productionAt: #variable ifAbsent: [ true ]) notNil
   149 ! !
   149 ! !
   150 
   150 
   151 !PPLambdaParserTest class methodsFor:'documentation'!
   151 !PPLambdaParserTest class methodsFor:'documentation'!
   152 
   152 
   153 version_SVN
   153 version_SVN
   154     ^ '$Id: PPLambdaParserTest.st,v 1.1 2011-08-18 18:56:17 cg Exp $'
   154     ^ '$Id: PPLambdaParserTest.st,v 1.2 2012-01-13 11:22:50 cg Exp $'
   155 ! !
   155 ! !