From b219b558789e2a972ac9da0397ac76c8cd156600 Mon Sep 17 00:00:00 2001 From: Celestino Amoroso Date: Mon, 6 May 2024 10:39:21 +0200 Subject: [PATCH] parser_test.go: refactored --- parser_test.go | 68 ++++++-------------------------------------------- 1 file changed, 8 insertions(+), 60 deletions(-) diff --git a/parser_test.go b/parser_test.go index 2b8b396..0e44b2b 100644 --- a/parser_test.go +++ b/parser_test.go @@ -11,6 +11,12 @@ import ( "testing" ) +type inputType struct { + source string + wantResult any + wantErr error +} + func TestGeneralParser(t *testing.T) { inputs := []inputType{ /* 1 */ {`1+/*5*/2`, int64(3), nil}, @@ -151,67 +157,9 @@ func TestGeneralParser(t *testing.T) { /* 136 */ {`builtin "math.arith"; mul(1|2, 1.0, 2)`, float64(1.0), nil}, /* 137 */ {`builtin "os.file"`, int64(1), nil}, } - check_env_expr_path := 113 - succeeded := 0 - failed := 0 - - // inputs1 := []inputType{ - // /* 159 */ {`include "file-reader.expr"; it=$(ds,"int.list"); mul(it)`, int64(12000), nil}, - // } - - for i, input := range inputs { - var expr Expr - var gotResult any - var gotErr error - - ctx := NewSimpleFuncStore() - // ctx.SetVar("var1", int64(123)) - // ctx.SetVar("var2", "abc") - // ImportMathFuncs(ctx) - // ImportImportFuncs(ctx) - parser := NewParser(ctx) - - logTest(t, i+1, "General", input.source, input.wantResult, input.wantErr) - - r := strings.NewReader(input.source) - scanner := NewScanner(r, DefaultTranslations()) - - good := true - if expr, gotErr = parser.Parse(scanner); gotErr == nil { - gotResult, gotErr = expr.Eval(ctx) - } - - eq := reflect.DeepEqual(gotResult, input.wantResult) - - if !eq /*gotResult != input.wantResult*/ { - t.Errorf("%d: %q -> result = %v [%T], want %v [%T]", i+1, input.source, gotResult, gotResult, input.wantResult, input.wantResult) - good = false - } - - if gotErr != input.wantErr { - if input.wantErr == nil || gotErr == nil || (gotErr.Error() != input.wantErr.Error()) { - t.Errorf("%d: %q -> err = <%v>, want <%v>", i+1, input.source, gotErr, input.wantErr) - good = false - } - } - - if good { - succeeded++ - } else { - failed++ - if i+1 == check_env_expr_path { - t.Logf(`NOTICE: Test nr %d requires EXPR_PATH="."`, check_env_expr_path) - } - } - } - t.Logf("test count: %d, succeeded count: %d, failed count: %d", len(inputs), succeeded, failed) -} - -type inputType struct { - source string - wantResult any - wantErr error + // t.Setenv("EXPR_PATH", ".") + parserTest(t, "General", inputs) } func parserTest(t *testing.T, section string, inputs []inputType) {