diff options
author | Felix Lange <fjl@twurst.com> | 2015-03-18 20:39:01 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2015-03-18 20:39:01 +0800 |
commit | d15f90645d5b2e90c441140972d9fe6ecd753643 (patch) | |
tree | b1f024c3c01f25b67bc25ed0452a9b584dad984f /jsre/jsre_test.go | |
parent | a59dd393e71cc52b1f96973aef884af619166f38 (diff) | |
parent | 0a1eeca41e6ba5920ba65d9b41654768299bc7e3 (diff) | |
download | dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.gz dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.bz2 dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.lz dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.xz dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.zst dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.zip |
Merge remote-tracking branch 'ethereum/conversion' into conversion
Diffstat (limited to 'jsre/jsre_test.go')
-rw-r--r-- | jsre/jsre_test.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/jsre/jsre_test.go b/jsre/jsre_test.go new file mode 100644 index 000000000..f01854b51 --- /dev/null +++ b/jsre/jsre_test.go @@ -0,0 +1,84 @@ +package jsre + +import ( + "github.com/obscuren/otto" + "testing" + + "github.com/ethereum/go-ethereum/common" +) + +type testNativeObjectBinding struct { + toVal func(interface{}) otto.Value +} + +type msg struct { + Msg string +} + +func (no *testNativeObjectBinding) TestMethod(call otto.FunctionCall) otto.Value { + m, err := call.Argument(0).ToString() + if err != nil { + return otto.UndefinedValue() + } + return no.toVal(&msg{m}) +} + +func TestExec(t *testing.T) { + jsre := New("/tmp") + + common.WriteFile("/tmp/test.js", []byte(`msg = "testMsg"`)) + err := jsre.Exec("test.js") + if err != nil { + t.Errorf("expected no error, got %v", err) + } + val, err := jsre.Run("msg") + if err != nil { + t.Errorf("expected no error, got %v", err) + } + if !val.IsString() { + t.Errorf("expected string value, got %v", val) + } + exp := "testMsg" + got, _ := val.ToString() + if exp != got { + t.Errorf("expected '%v', got '%v'", exp, got) + } +} + +func TestBind(t *testing.T) { + jsre := New("/tmp") + + jsre.Bind("no", &testNativeObjectBinding{jsre.ToVal}) + + val, err := jsre.Run(`no.testMethod("testMsg")`) + if err != nil { + t.Errorf("expected no error, got %v", err) + } + pp, err := jsre.PrettyPrint(val) + if err != nil { + t.Errorf("expected no error, got %v", err) + } + t.Logf("no: %v", pp) +} + +func TestLoadScript(t *testing.T) { + jsre := New("/tmp") + + common.WriteFile("/tmp/test.js", []byte(`msg = "testMsg"`)) + _, err := jsre.Run(`loadScript("test.js")`) + if err != nil { + t.Errorf("expected no error, got %v", err) + } + val, err := jsre.Run("msg") + if err != nil { + t.Errorf("expected no error, got %v", err) + } + if !val.IsString() { + t.Errorf("expected string value, got %v", val) + } + exp := "testMsg" + got, _ := val.ToString() + if exp != got { + t.Errorf("expected '%v', got '%v'", exp, got) + } +} |