123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package goja
- import "testing"
- func TestGoSliceBasic(t *testing.T) {
- const SCRIPT = `
- var sum = 0;
- for (var i = 0; i < a.length; i++) {
- sum += a[i];
- }
- sum;
- `
- r := New()
- r.Set("a", []interface{}{1, 2, 3, 4})
- v, err := r.RunString(SCRIPT)
- if err != nil {
- t.Fatal(err)
- }
- if i := v.ToInteger(); i != 10 {
- t.Fatalf("Expected 10, got: %d", i)
- }
- }
- func TestGoSliceIn(t *testing.T) {
- const SCRIPT = `
- var idx = "";
- for (var i in a) {
- idx += i;
- }
- idx;
- `
- r := New()
- r.Set("a", []interface{}{1, 2, 3, 4})
- v, err := r.RunString(SCRIPT)
- if err != nil {
- t.Fatal(err)
- }
- if i := v.String(); i != "0123" {
- t.Fatalf("Expected '0123', got: '%s'", i)
- }
- }
- func TestGoSliceExpand(t *testing.T) {
- const SCRIPT = `
- var l = a.length;
- for (var i = 0; i < l; i++) {
- a[l + i] = a[i] * 2;
- }
- var sum = 0;
- for (var i = 0; i < a.length; i++) {
- sum += a[i];
- }
- sum;
- `
- r := New()
- a := []interface{}{int64(1), int64(2), int64(3), int64(4)}
- r.Set("a", &a)
- v, err := r.RunString(SCRIPT)
- if err != nil {
- t.Fatal(err)
- }
- sum := int64(0)
- for _, v := range a {
- sum += v.(int64)
- }
- if i := v.ToInteger(); i != sum {
- t.Fatalf("Expected %d, got: %d", sum, i)
- }
- }
- func TestGoSliceProto(t *testing.T) {
- const SCRIPT = `
- a.join(",")
- `
- r := New()
- a := []interface{}{1, 2, 3, 4}
- r.Set("a", a)
- ret, err := r.RunString(SCRIPT)
- if err != nil {
- t.Fatal(err)
- }
- if s := ret.String(); s != "1,2,3,4" {
- t.Fatalf("Unexpected result: '%s'", s)
- }
- }
|