aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/azalea/evaluate_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa/azalea/evaluate_test.go')
-rw-r--r--internal/rosa/azalea/evaluate_test.go66
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)