aboutsummaryrefslogtreecommitdiffstats
path: root/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-03-23 04:45:56 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-03-23 04:45:56 +0800
commit3133372a6a81c91528afbde58e22b3f9df257d03 (patch)
tree16778611a22c9fd249a94c88660cb0c6d297ce9b /Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go
parent59eab49cb849ca93b9608763f4842654e8044d0f (diff)
parent85acdadcfa99ea5c74907029cb63919cc0302c1a (diff)
downloadgo-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.tar
go-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.tar.gz
go-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.tar.bz2
go-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.tar.lz
go-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.tar.xz
go-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.tar.zst
go-tangerine-3133372a6a81c91528afbde58e22b3f9df257d03.zip
Merge pull request #536 from zsfelfoldi/develop
using robertkrimen/otto, godeps updated
Diffstat (limited to 'Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go')
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go192
1 files changed, 192 insertions, 0 deletions
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go
new file mode 100644
index 000000000..7f1b16af7
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/robertkrimen/otto/error_test.go
@@ -0,0 +1,192 @@
+package otto
+
+import (
+ "testing"
+)
+
+func TestError(t *testing.T) {
+ tt(t, func() {
+ test, _ := test()
+
+ test(`
+ [ Error.prototype.name, Error.prototype.message, Error.prototype.hasOwnProperty("message") ];
+ `, "Error,,true")
+ })
+}
+
+func TestError_instanceof(t *testing.T) {
+ tt(t, func() {
+ test, _ := test()
+
+ test(`(new TypeError()) instanceof Error`, true)
+ })
+}
+
+func TestPanicValue(t *testing.T) {
+ tt(t, func() {
+ test, vm := test()
+
+ vm.Set("abc", func(call FunctionCall) Value {
+ value, err := call.Otto.Run(`({ def: 3.14159 })`)
+ is(err, nil)
+ panic(value)
+ })
+
+ test(`
+ try {
+ abc();
+ }
+ catch (err) {
+ error = err;
+ }
+ [ error instanceof Error, error.message, error.def ];
+ `, "false,,3.14159")
+ })
+}
+
+func Test_catchPanic(t *testing.T) {
+ tt(t, func() {
+ vm := New()
+
+ _, err := vm.Run(`
+ A syntax error that
+ does not define
+ var;
+ abc;
+ `)
+ is(err, "!=", nil)
+
+ _, err = vm.Call(`abc.def`, nil)
+ is(err, "!=", nil)
+ })
+}
+
+func TestErrorContext(t *testing.T) {
+ tt(t, func() {
+ vm := New()
+
+ _, err := vm.Run(`
+ undefined();
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'undefined' is not a function")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:2:13")
+ }
+
+ _, err = vm.Run(`
+ ({}).abc();
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'abc' is not a function")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:2:14")
+ }
+
+ _, err = vm.Run(`
+ ("abc").abc();
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'abc' is not a function")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:2:14")
+ }
+
+ _, err = vm.Run(`
+ var ghi = "ghi";
+ ghi();
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'ghi' is not a function")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:3:13")
+ }
+
+ _, err = vm.Run(`
+ function def() {
+ undefined();
+ }
+ function abc() {
+ def();
+ }
+ abc();
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'undefined' is not a function")
+ is(len(err.trace), 3)
+ is(err.trace[0].location(), "def (<anonymous>:3:17)")
+ is(err.trace[1].location(), "abc (<anonymous>:6:17)")
+ is(err.trace[2].location(), "<anonymous>:8:13")
+ }
+
+ _, err = vm.Run(`
+ function abc() {
+ xyz();
+ }
+ abc();
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'xyz' is not defined")
+ is(len(err.trace), 2)
+ is(err.trace[0].location(), "abc (<anonymous>:3:17)")
+ is(err.trace[1].location(), "<anonymous>:5:13")
+ }
+
+ _, err = vm.Run(`
+ mno + 1;
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'mno' is not defined")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:2:13")
+ }
+
+ _, err = vm.Run(`
+ eval("xyz();");
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'xyz' is not defined")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:1:1")
+ }
+
+ _, err = vm.Run(`
+ xyzzy = "Nothing happens."
+ eval("xyzzy();");
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "'xyzzy' is not a function")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:1:1")
+ }
+
+ _, err = vm.Run(`
+ throw Error("xyzzy");
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "xyzzy")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:2:19")
+ }
+
+ _, err = vm.Run(`
+ throw new Error("xyzzy");
+ `)
+ {
+ err := err.(*Error)
+ is(err.message, "xyzzy")
+ is(len(err.trace), 1)
+ is(err.trace[0].location(), "<anonymous>:2:23")
+ }
+ })
+}