michael@0: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- michael@0: * vim: set ts=8 sts=4 et sw=4 tw=99: michael@0: */ michael@0: michael@0: #include "jsapi-tests/tests.h" michael@0: michael@0: BEGIN_TEST(testJSEvaluateScript) michael@0: { michael@0: JS::RootedObject obj(cx, JS_NewObject(cx, nullptr, JS::NullPtr(), global)); michael@0: CHECK(obj); michael@0: michael@0: CHECK(JS::ContextOptionsRef(cx).varObjFix()); michael@0: michael@0: static const char src[] = "var x = 5;"; michael@0: michael@0: JS::RootedValue retval(cx); michael@0: CHECK(JS_EvaluateScript(cx, obj, src, sizeof(src) - 1, __FILE__, __LINE__, &retval)); michael@0: michael@0: bool hasProp = true; michael@0: CHECK(JS_AlreadyHasOwnProperty(cx, obj, "x", &hasProp)); michael@0: CHECK(!hasProp); michael@0: michael@0: hasProp = false; michael@0: CHECK(JS_HasProperty(cx, global, "x", &hasProp)); michael@0: CHECK(hasProp); michael@0: michael@0: // Now do the same thing, but without JSOPTION_VAROBJFIX michael@0: JS::ContextOptionsRef(cx).setVarObjFix(false); michael@0: michael@0: static const char src2[] = "var y = 5;"; michael@0: michael@0: CHECK(JS_EvaluateScript(cx, obj, src2, sizeof(src2) - 1, __FILE__, __LINE__, &retval)); michael@0: michael@0: hasProp = false; michael@0: CHECK(JS_AlreadyHasOwnProperty(cx, obj, "y", &hasProp)); michael@0: CHECK(hasProp); michael@0: michael@0: hasProp = true; michael@0: CHECK(JS_AlreadyHasOwnProperty(cx, global, "y", &hasProp)); michael@0: CHECK(!hasProp); michael@0: michael@0: return true; michael@0: } michael@0: END_TEST(testJSEvaluateScript) michael@0: michael@0: