LCOV - app.info - js/src/jsapi-tests/testOps.cpp

LCOV - code coverage report
| Current view: | directory - js/src/jsapi-tests - testOps.cpp (source / functions) |  | Found | Hit | Coverage |
| Test: | app.info | Lines: | 19 | 18 | 94.7 %
| Date: | 2012-04-07 | Functions: | 10 | 8 | 80.0 %

           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                 :  * Tests for operators and implicit type conversion.
           5                 :  */
           6                 :
           7                 : #include "tests.h"
           8                 :
           9                 : static JSBool
          10               9 : my_convert(JSContext* context, JSObject* obj, JSType type, jsval* rval)
          11                 : {
          12               9 :     if (type == JSTYPE_VOID || type == JSTYPE_STRING || type == JSTYPE_NUMBER || type == JSTYPE_BOOLEAN)
          13               9 :         return JS_NewNumberValue(context, 123, rval);
          14               0 :     return JS_FALSE;
          15                 : }
          16                 :
          17                 : static JSClass myClass = {
          18                 :     "MyClass",
          19                 :     0,
          20                 :     JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
          21                 :     JS_EnumerateStub, JS_ResolveStub, my_convert
          22                 : };
          23                 :
          24                 : static JSBool
          25               9 : createMyObject(JSContext* context, unsigned argc, jsval *vp)
          26                 : {
          27               9 :     JS_BeginRequest(context);
          28                 :
          29                 :     //JS_GC(context); //<- if we make GC here, all is ok
          30                 :
          31               9 :     JSObject* myObject = JS_NewObject(context, &myClass, NULL, NULL);
          32               9 :     *vp = OBJECT_TO_JSVAL(myObject);
          33                 :
          34               9 :     JS_EndRequest(context);
          35                 :
          36               9 :     return JS_TRUE;
          37                 : }
          38                 :
          39                 : static JSFunctionSpec s_functions[] =
          40                 : {
          41                 :     { "createMyObject", createMyObject, 0 },
          42                 :     { 0,0,0,0 }
          43                 : };
          44                 :
          45               4 : BEGIN_TEST(testOps_bug559006)
          46                 : {
          47               1 :     CHECK(JS_DefineFunctions(cx, global, s_functions));
          48                 :
          49               1 :     EXEC("function main() { while(1) return 0 + createMyObject(); }");
          50                 :
          51              10 :     for (int i = 0; i < 9; i++) {
          52              18 :         jsvalRoot rval(cx);
          53               9 :         CHECK(JS_CallFunctionName(cx, global, "main", 0, NULL, rval.addr()));
          54               9 :         CHECK_SAME(rval, INT_TO_JSVAL(123));
          55                 :     }
          56               1 :     return true;
          57                 : }
          58               2 : END_TEST(testOps_bug559006)
          59                 :

Generated by: LCOV version 1.7