aboutsummaryrefslogtreecommitdiff
path: root/starlark/eval_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'starlark/eval_test.go')
-rw-r--r--starlark/eval_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/starlark/eval_test.go b/starlark/eval_test.go
index 3725d17..81f8c58 100644
--- a/starlark/eval_test.go
+++ b/starlark/eval_test.go
@@ -10,6 +10,7 @@ import (
"math"
"os/exec"
"path/filepath"
+ "reflect"
"sort"
"strings"
"testing"
@@ -712,6 +713,34 @@ func TestUnpackCustomUnpacker(t *testing.T) {
}
}
+func TestAsInt(t *testing.T) {
+ for _, test := range []struct {
+ val starlark.Value
+ ptr interface{}
+ want string
+ }{
+ {starlark.MakeInt(42), new(int32), "42"},
+ {starlark.MakeInt(-1), new(int32), "-1"},
+ {starlark.MakeInt(1 << 40), new(int32), "1099511627776 out of range (want value in signed 32-bit range)"},
+ {starlark.MakeInt(-1 << 40), new(int32), "-1099511627776 out of range (want value in signed 32-bit range)"},
+
+ {starlark.MakeInt(42), new(uint16), "42"},
+ {starlark.MakeInt(0xffff), new(uint16), "65535"},
+ {starlark.MakeInt(0x10000), new(uint16), "65536 out of range (want value in unsigned 16-bit range)"},
+ {starlark.MakeInt(-1), new(uint16), "-1 out of range (want value in unsigned 16-bit range)"},
+ } {
+ var got string
+ if err := starlark.AsInt(test.val, test.ptr); err != nil {
+ got = err.Error()
+ } else {
+ got = fmt.Sprint(reflect.ValueOf(test.ptr).Elem().Interface())
+ }
+ if got != test.want {
+ t.Errorf("AsInt(%s, %T): got %q, want %q", test.val, test.ptr, got, test.want)
+ }
+ }
+}
+
func TestDocstring(t *testing.T) {
globals, _ := starlark.ExecFile(&starlark.Thread{}, "doc.star", `
def somefunc():