js/src/jsapi-tests/testJSEvaluateScript.cpp

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:ad477e0a865e
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: set ts=8 sts=4 et sw=4 tw=99:
3 */
4
5 #include "jsapi-tests/tests.h"
6
7 BEGIN_TEST(testJSEvaluateScript)
8 {
9 JS::RootedObject obj(cx, JS_NewObject(cx, nullptr, JS::NullPtr(), global));
10 CHECK(obj);
11
12 CHECK(JS::ContextOptionsRef(cx).varObjFix());
13
14 static const char src[] = "var x = 5;";
15
16 JS::RootedValue retval(cx);
17 CHECK(JS_EvaluateScript(cx, obj, src, sizeof(src) - 1, __FILE__, __LINE__, &retval));
18
19 bool hasProp = true;
20 CHECK(JS_AlreadyHasOwnProperty(cx, obj, "x", &hasProp));
21 CHECK(!hasProp);
22
23 hasProp = false;
24 CHECK(JS_HasProperty(cx, global, "x", &hasProp));
25 CHECK(hasProp);
26
27 // Now do the same thing, but without JSOPTION_VAROBJFIX
28 JS::ContextOptionsRef(cx).setVarObjFix(false);
29
30 static const char src2[] = "var y = 5;";
31
32 CHECK(JS_EvaluateScript(cx, obj, src2, sizeof(src2) - 1, __FILE__, __LINE__, &retval));
33
34 hasProp = false;
35 CHECK(JS_AlreadyHasOwnProperty(cx, obj, "y", &hasProp));
36 CHECK(hasProp);
37
38 hasProp = true;
39 CHECK(JS_AlreadyHasOwnProperty(cx, global, "y", &hasProp));
40 CHECK(!hasProp);
41
42 return true;
43 }
44 END_TEST(testJSEvaluateScript)
45
46

mercurial