LCOV - code coverage report
Current view: directory - js/src/jsapi-tests - testDefineGetterSetterNonEnumerable.cpp (source / functions) Found Hit Coverage
Test: app.info Lines: 29 27 93.1 %
Date: 2012-06-02 Functions: 9 6 66.7 %

       1                 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
       2                 :  * vim: set ts=8 sw=4 et tw=99:
       3                 :  */
       4                 : 
       5                 : #include "tests.h"
       6                 : #include "jsxdrapi.h"
       7                 : 
       8                 : static JSBool
       9               0 : native(JSContext *cx, unsigned argc, jsval *vp)
      10                 : {
      11               0 :     return JS_TRUE;
      12                 : }
      13                 : 
      14                 : static const char PROPERTY_NAME[] = "foo";
      15                 : 
      16               4 : BEGIN_TEST(testDefineGetterSetterNonEnumerable)
      17                 : {
      18               2 :     jsvalRoot vobj(cx);
      19               1 :     JSObject *obj = JS_NewObject(cx, NULL, NULL, NULL);
      20               1 :     CHECK(obj);
      21               1 :     vobj = OBJECT_TO_JSVAL(obj);
      22                 : 
      23               2 :     jsvalRoot vget(cx);
      24               1 :     JSFunction *funGet = JS_NewFunction(cx, native, 0, 0, NULL, "get");
      25               1 :     CHECK(funGet);
      26               1 :     JSObject *funGetObj = JS_GetFunctionObject(funGet);
      27               1 :     vget = OBJECT_TO_JSVAL(funGetObj);
      28                 : 
      29               2 :     jsvalRoot vset(cx);
      30               1 :     JSFunction *funSet = JS_NewFunction(cx, native, 1, 0, NULL, "set");
      31               1 :     CHECK(funSet);
      32               1 :     JSObject *funSetObj = JS_GetFunctionObject(funSet);
      33               1 :     vset = OBJECT_TO_JSVAL(funSetObj);
      34                 : 
      35               1 :     CHECK(JS_DefineProperty(cx, JSVAL_TO_OBJECT(vobj), PROPERTY_NAME,
      36                 :                             JSVAL_VOID,
      37                 :                             JS_DATA_TO_FUNC_PTR(JSPropertyOp, funGetObj),
      38                 :                             JS_DATA_TO_FUNC_PTR(JSStrictPropertyOp, funSetObj),
      39                 :                             JSPROP_GETTER | JSPROP_SETTER | JSPROP_ENUMERATE));
      40                 : 
      41               1 :     CHECK(JS_DefineProperty(cx, JSVAL_TO_OBJECT(vobj), PROPERTY_NAME,
      42                 :                             JSVAL_VOID,
      43                 :                             JS_DATA_TO_FUNC_PTR(JSPropertyOp, funGetObj),
      44                 :                             JS_DATA_TO_FUNC_PTR(JSStrictPropertyOp, funSetObj),
      45                 :                             JSPROP_GETTER | JSPROP_SETTER | JSPROP_PERMANENT));
      46                 : 
      47               1 :     JSBool found = JS_FALSE;
      48               1 :     unsigned attrs = 0;
      49               1 :     CHECK(JS_GetPropertyAttributes(cx, JSVAL_TO_OBJECT(vobj), PROPERTY_NAME,
      50                 :                                    &attrs, &found));
      51               1 :     CHECK(found);
      52               1 :     CHECK(attrs & JSPROP_GETTER);
      53               1 :     CHECK(attrs & JSPROP_SETTER);
      54               1 :     CHECK(attrs & JSPROP_PERMANENT);
      55               1 :     CHECK(!(attrs & JSPROP_ENUMERATE));
      56                 : 
      57               1 :     return true;
      58                 : }
      59               2 : END_TEST(testDefineGetterSetterNonEnumerable)

Generated by: LCOV version 1.7