1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: set ts=8 sw=4 et tw=99:
7 #define JSVAL_IS_FALSE(x) ((JSVAL_IS_BOOLEAN(x)) && !(JSVAL_TO_BOOLEAN(x)))
8 #define JSVAL_IS_TRUE(x) ((JSVAL_IS_BOOLEAN(x)) && (JSVAL_TO_BOOLEAN(x)))
11 stringToId(JSContext *cx, const char *s, jsid *idp)
13 JSString *str = JS_NewStringCopyZ(cx, s);
17 return JS_ValueToId(cx, STRING_TO_JSVAL(str), idp);
20 BEGIN_TEST(testGetPropertyDefault_bug594060)
23 // Check JS_GetPropertyDefault
25 JSObject *obj = JS_NewObject(cx, NULL, NULL, NULL);
28 jsval v0 = JSVAL_TRUE;
29 CHECK(JS_SetProperty(cx, obj, "here", &v0));
32 CHECK(JS_GetPropertyDefault(cx, obj, "here", JSVAL_FALSE, &v1));
33 CHECK(JSVAL_IS_TRUE(v1));
36 CHECK(JS_GetPropertyDefault(cx, obj, "nothere", JSVAL_FALSE, &v2));
37 CHECK(JSVAL_IS_FALSE(v2));
41 // Check JS_GetPropertyByIdDefault
43 JSObject *obj = JS_NewObject(cx, NULL, NULL, NULL);
47 CHECK(stringToId(cx, "here", &hereid));
50 CHECK(stringToId(cx, "nothere", ¬hereid));
52 jsval v0 = JSVAL_TRUE;
53 CHECK(JS_SetPropertyById(cx, obj, hereid, &v0));
56 CHECK(JS_GetPropertyByIdDefault(cx, obj, hereid, JSVAL_FALSE, &v1));
57 CHECK(JSVAL_IS_TRUE(v1));
60 CHECK(JS_GetPropertyByIdDefault(cx, obj, nothereid, JSVAL_FALSE, &v2));
61 CHECK(JSVAL_IS_FALSE(v2));
66 END_TEST(testGetPropertyDefault_bug594060)