GCC Code Coverage Report


Directory: src/
File: src/btree/constructor.c
Date: 2023-03-02 23:19:03
Exec Total Coverage
Lines: 19 19 100.0%
Functions: 1 1 100.0%
Branches: 15 60 25.0%

Line Branch Exec Source
1 #include <core.h>
2 #include <interface.h>
3 #include <type.h>
4
5 /**
6 * ES callback. Constructor
7 */
8 napi_value
9 167 esConstructor(napi_env env, napi_callback_info cbInfo) {
10 napi_value esBtree, comparator, isConstructor;
11
12 167 size_t argc = 1;
13 napi_value argv[1];
14
15 // Get es arguments & context
16
1/6
✓ Branch 0 taken 167 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
167 NAPI_CALL(env, false,
17 napi_get_cb_info(env, cbInfo, &argc, argv, &esBtree, NULL));
18
19
3/8
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 165 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
167 CHECK_ARGC(1, msgTooFewArguments);
20 165 comparator = argv[0];
21
22
1/6
✓ Branch 0 taken 165 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
165 NAPI_CALL(env, true,
23 napi_get_new_target(env, cbInfo, &isConstructor));
24
25
2/2
✓ Branch 0 taken 164 times.
✓ Branch 1 taken 1 times.
165 if (isConstructor) {
26 // Check type of first argument. Must be function
27 napi_valuetype comparatorType;
28
1/6
✓ Branch 0 taken 164 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
164 NAPI_CALL(env, false,
29 napi_typeof(env, comparator, &comparatorType));
30
31
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 163 times.
164 if (comparatorType != napi_function) {
32
1/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 NAPI_CALL(env, false,
33 napi_throw_error(env, NULL, "First arg must be comparator qsort() like function"));
34
35 1 return NULL;
36 }
37
38 163 BTree_t *bTree = btreeAlloc(env);
39
40 // Create ref on comparator function. Protect from GC
41
1/6
✓ Branch 0 taken 163 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
163 NAPI_CALL(env, false,
42 napi_create_reference(env, argv[0], 1, &bTree->comparator));
43
44 // Wrap native data in ES variable for native access again
45
1/6
✓ Branch 0 taken 163 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
163 NAPI_CALL(env, false,
46 napi_wrap(env, esBtree, bTree, freeNativeBTree, NULL, NULL));
47 163 }
48 else {
49 napi_value constructorFunc;
50
51
1/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 NAPI_CALL(env, true,
52 napi_get_reference_value(env, btreeConstructorRef, &constructorFunc));
53
54
1/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 NAPI_CALL(env, true,
55 napi_new_instance(env, constructorFunc, argc, argv, &esBtree));
56 }
57
58 164 return esBtree;
59 167 }
60