@@ -19,6 +19,7 @@ import (
19
19
"github.com/antlr/antlr4/runtime/Go/antlr"
20
20
parser "github.com/hyperjumptech/grule-rule-engine/antlr/parser/grulev3"
21
21
"github.com/hyperjumptech/grule-rule-engine/ast"
22
+ "github.com/hyperjumptech/grule-rule-engine/pkg"
22
23
"github.com/stretchr/testify/assert"
23
24
"io/ioutil"
24
25
"reflect"
@@ -137,19 +138,20 @@ func TestV3Parser(t *testing.T) {
137
138
lexer := parser .Newgrulev3Lexer (is )
138
139
stream := antlr .NewCommonTokenStream (lexer , antlr .TokenDefaultChannel )
139
140
140
- var parseError error
141
+ errReporter := & pkg.GruleErrorReporter {
142
+ Errors : make ([]error , 0 ),
143
+ }
144
+
141
145
kb := ast .NewKnowledgeLibrary ().GetKnowledgeBase ("T" , "1" )
142
146
143
- listener := NewGruleV3ParserListener (kb , func (e error ) {
144
- parseError = e
145
- })
147
+ listener := NewGruleV3ParserListener (kb , errReporter )
146
148
147
149
psr := parser .Newgrulev3Parser (stream )
148
150
psr .BuildParseTrees = true
149
151
antlr .ParseTreeWalkerDefault .Walk (listener , psr .Grl ())
150
152
151
- if parseError != nil {
152
- t .Log (parseError )
153
+ if errReporter . HasError () {
154
+ t .Log (errReporter . Error () )
153
155
t .FailNow ()
154
156
}
155
157
}
@@ -164,20 +166,19 @@ func TestV3Parser2(t *testing.T) {
164
166
lexer := parser .Newgrulev3Lexer (is )
165
167
stream := antlr .NewCommonTokenStream (lexer , antlr .TokenDefaultChannel )
166
168
167
- var parseError error
169
+ errReporter := & pkg.GruleErrorReporter {
170
+ Errors : make ([]error , 0 ),
171
+ }
168
172
kb := ast .NewKnowledgeLibrary ().GetKnowledgeBase ("T" , "1" )
169
173
170
- listener := NewGruleV3ParserListener (kb , func (e error ) {
171
- parseError = e
172
- panic (e )
173
- })
174
+ listener := NewGruleV3ParserListener (kb , errReporter )
174
175
175
176
psr := parser .Newgrulev3Parser (stream )
176
177
psr .BuildParseTrees = true
177
178
antlr .ParseTreeWalkerDefault .Walk (listener , psr .Grl ())
178
179
179
- if parseError != nil {
180
- t .Log (parseError )
180
+ if errReporter . HasError () {
181
+ t .Log (errReporter . Error () )
181
182
t .FailNow ()
182
183
}
183
184
}
@@ -189,18 +190,18 @@ func TestV3ParserEscapedStringInvalid(t *testing.T) {
189
190
lexer := parser .Newgrulev3Lexer (is )
190
191
stream := antlr .NewCommonTokenStream (lexer , antlr .TokenDefaultChannel )
191
192
192
- var parseError error
193
+ errReporter := & pkg.GruleErrorReporter {
194
+ Errors : make ([]error , 0 ),
195
+ }
193
196
kb := ast .NewKnowledgeLibrary ().GetKnowledgeBase ("T" , "1" )
194
197
195
- listener := NewGruleV3ParserListener (kb , func (e error ) {
196
- parseError = e
197
- })
198
+ listener := NewGruleV3ParserListener (kb , errReporter )
198
199
199
200
psr := parser .Newgrulev3Parser (stream )
200
201
psr .BuildParseTrees = true
201
202
antlr .ParseTreeWalkerDefault .Walk (listener , psr .Grl ())
202
203
203
- if parseError == nil {
204
+ if errReporter . HasError () == false {
204
205
t .Fatal ("Successfully parsed invalid string literal, should have gotten an error" )
205
206
}
206
207
}
@@ -212,18 +213,18 @@ func TestV3ParserEscapedStringValid(t *testing.T) {
212
213
lexer := parser .Newgrulev3Lexer (is )
213
214
stream := antlr .NewCommonTokenStream (lexer , antlr .TokenDefaultChannel )
214
215
215
- var parseError error
216
+ errReporter := & pkg.GruleErrorReporter {
217
+ Errors : make ([]error , 0 ),
218
+ }
216
219
kb := ast .NewKnowledgeLibrary ().GetKnowledgeBase ("T" , "1" )
217
220
218
- listener := NewGruleV3ParserListener (kb , func (e error ) {
219
- parseError = e
220
- })
221
+ listener := NewGruleV3ParserListener (kb , errReporter )
221
222
222
223
psr := parser .Newgrulev3Parser (stream )
223
224
psr .BuildParseTrees = true
224
225
antlr .ParseTreeWalkerDefault .Walk (listener , psr .Grl ())
225
226
226
- if parseError != nil {
227
+ if errReporter . HasError () {
227
228
t .Fatal ("Failed to parse rule with escaped string constant" )
228
229
}
229
230
}
@@ -245,18 +246,18 @@ rule SpeedUp "When testcar is speeding up we keep increase the speed." salience
245
246
lexer := parser .Newgrulev3Lexer (is )
246
247
stream := antlr .NewCommonTokenStream (lexer , antlr .TokenDefaultChannel )
247
248
248
- var parseError error
249
+ errReporter := & pkg.GruleErrorReporter {
250
+ Errors : make ([]error , 0 ),
251
+ }
249
252
kb := ast .NewKnowledgeLibrary ().GetKnowledgeBase ("T" , "1" )
250
253
251
- listener := NewGruleV3ParserListener (kb , func (e error ) {
252
- parseError = e
253
- })
254
+ listener := NewGruleV3ParserListener (kb , errReporter )
254
255
255
256
psr := parser .Newgrulev3Parser (stream )
256
257
psr .BuildParseTrees = true
257
258
antlr .ParseTreeWalkerDefault .Walk (listener , psr .Grl ())
258
- if parseError != nil {
259
- t .Log (parseError )
259
+ if errReporter . HasError () {
260
+ t .Log (errReporter . Error () )
260
261
t .FailNow ()
261
262
}
262
263
@@ -287,17 +288,17 @@ func prepareV3TestKnowledgeBase(t *testing.T, grl string) (*ast.KnowledgeBase, *
287
288
lexer := parser .Newgrulev3Lexer (is )
288
289
stream := antlr .NewCommonTokenStream (lexer , antlr .TokenDefaultChannel )
289
290
290
- var parseError error
291
+ errReporter := & pkg.GruleErrorReporter {
292
+ Errors : make ([]error , 0 ),
293
+ }
291
294
kb := ast .NewKnowledgeLibrary ().GetKnowledgeBase ("T" , "1" )
292
295
293
- listener := NewGruleV3ParserListener (kb , func (e error ) {
294
- parseError = e
295
- })
296
+ listener := NewGruleV3ParserListener (kb , errReporter )
296
297
297
298
psr := parser .Newgrulev3Parser (stream )
298
299
psr .BuildParseTrees = true
299
300
antlr .ParseTreeWalkerDefault .Walk (listener , psr .Grl ())
300
- assert .NoError (t , parseError )
301
+ assert .False (t , errReporter . HasError () )
301
302
listener .KnowledgeBase .WorkingMemory .IndexVariables ()
302
303
return kb , kb .WorkingMemory
303
304
}
0 commit comments