package otto

import (
	"testing"
)

func TestOttoError(t *testing.T) {
	tt(t, func() {
		vm := New()

		_, err := vm.Run(`throw "Xyzzy"`)
		is(err, "Xyzzy")

		_, err = vm.Run(`throw new TypeError()`)
		is(err, "TypeError")

		_, err = vm.Run(`throw new TypeError("Nothing happens.")`)
		is(err, "TypeError: Nothing happens.")

		_, err = ToValue([]byte{})
		is(err, "TypeError: invalid value (slice): missing runtime: [] ([]uint8)")

		_, err = vm.Run(`
            (function(){
                return abcdef.length
            })()
        `)
		is(err, "ReferenceError: 'abcdef' is not defined")

		_, err = vm.Run(`
            function start() {
            }

            start()

                xyzzy()
        `)
		is(err, "ReferenceError: 'xyzzy' is not defined")

		_, err = vm.Run(`
            // Just a comment

            xyzzy
        `)
		is(err, "ReferenceError: 'xyzzy' is not defined")
	})
}
