diff options
Diffstat (limited to 'internal/rosa/azalea/evaluate_test.go')
| -rw-r--r-- | internal/rosa/azalea/evaluate_test.go | 66 |
1 files changed, 61 insertions, 5 deletions
diff --git a/internal/rosa/azalea/evaluate_test.go b/internal/rosa/azalea/evaluate_test.go index 049fcb52..edd72432 100644 --- a/internal/rosa/azalea/evaluate_test.go +++ b/internal/rosa/azalea/evaluate_test.go @@ -6,6 +6,7 @@ import ( "reflect" "strings" "testing" + "text/scanner" "unique" . "hakurei.app/internal/rosa/azalea" @@ -81,6 +82,12 @@ func TestEvaluate(t *testing.T) { Args: []Arg{ {K: []Ident{"v"}, V: Val{Int(9)}}, }, + Pos: scanner.Position{ + Filename: "apply_undefined.az", + Offset: 1, + Line: 1, + Column: 2, + }, }, Err: UndefinedError("v"), }}, @@ -96,8 +103,13 @@ func TestEvaluate(t *testing.T) { }), "\x00", nil}, {"undefined function", `f {}`, nil, "", EvaluationError{ - Expr: Func{Ident: "f"}, - Err: UndefinedError("f"), + Expr: Func{Ident: "f", Pos: scanner.Position{ + Filename: "undefined_function.az", + Offset: 1, + Line: 1, + Column: 2, + }}, + Err: UndefinedError("f"), }}, {"error wrap deep", `f { v = nonexistent; }`, makeStackCheck(func( @@ -128,6 +140,12 @@ func TestEvaluate(t *testing.T) { Args: []Arg{ {K: []Ident{"v"}, V: Val{Ident("nil")}}, }, + Pos: scanner.Position{ + Filename: "apply_nil_string.az", + Offset: 1, + Line: 1, + Column: 2, + }, }, Err: NilError{Type: reflect.TypeFor[string]()}, }}, @@ -184,6 +202,13 @@ func TestEvaluate(t *testing.T) { "v", }, V: Val{Array(nil)}}, }, + + Pos: scanner.Position{ + Filename: "common_inputs.az", + Offset: 12, + Line: 1, + Column: 13, + }, }, Err: ErrInvalidSpecial, }}, @@ -196,6 +221,13 @@ func TestEvaluate(t *testing.T) { Args: []Arg{ {K: []Ident{"inputs"}, V: Val{Array(nil)}, R: true}, }, + + Pos: scanner.Position{ + Filename: "bound_inputs.az", + Offset: 12, + Line: 1, + Column: 13, + }, }, Err: ErrInvalidSpecial, }}, @@ -208,6 +240,13 @@ func TestEvaluate(t *testing.T) { Args: []Arg{ {K: []Ident{"runtime"}, V: Val{Array(nil)}, R: true}, }, + + Pos: scanner.Position{ + Filename: "bound_runtime.az", + Offset: 12, + Line: 1, + Column: 13, + }, }, Err: ErrInvalidSpecial, }}, @@ -220,6 +259,13 @@ func TestEvaluate(t *testing.T) { Args: []Arg{ {K: []Ident{"inputs"}, V: Val{String(""), String("")}}, }, + + Pos: scanner.Position{ + Filename: "concat_inputs.az", + Offset: 12, + Line: 1, + Column: 13, + }, }, Err: ErrInvalidSpecial, }}, @@ -232,6 +278,13 @@ func TestEvaluate(t *testing.T) { Args: []Arg{ {K: []Ident{"source"}, V: Val{String(""), String("")}}, }, + + Pos: scanner.Position{ + Filename: "concat_source.az", + Offset: 12, + Line: 1, + Column: 13, + }, }, Err: ErrInvalidSpecial, }}, @@ -250,7 +303,10 @@ func TestEvaluate(t *testing.T) { t.Parallel() var expr Func - if e, err := Parse(strings.NewReader(tc.data)); err != nil { + if e, err := Parse( + strings.NewReader(tc.data), + strings.ReplaceAll(tc.name, " ", "_")+".az", + ); err != nil { t.Fatal(err) } else if len(e) != 1 { t.Fatalf("got expression %#v", e) @@ -294,7 +350,7 @@ func TestEvaluateGCC(t *testing.T) { t.Parallel() var gcc Func - if e, err := Parse(strings.NewReader(sample)); err != nil { + if e, err := Parse(strings.NewReader(sample), "./testdata/gcc.az"); err != nil { t.Fatal(err) } else { gcc = e[0].(Func) @@ -421,7 +477,7 @@ func TestEvaluateGCC(t *testing.T) { func BenchmarkEvaluate(b *testing.B) { var gcc Func - if e, err := Parse(strings.NewReader(sample)); err != nil { + if e, err := Parse(strings.NewReader(sample), "testdata/gcc.az"); err != nil { b.Fatal(err) } else { gcc = e[0].(Func) |
