koffi 1.0.3 → 1.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/README.md +48 -22
  2. package/build/qemu/1.1.0-beta.0/koffi_darwin_x64.tar.gz +0 -0
  3. package/build/qemu/1.1.0-beta.0/koffi_freebsd_arm64.tar.gz +0 -0
  4. package/build/qemu/1.1.0-beta.0/koffi_freebsd_ia32.tar.gz +0 -0
  5. package/build/qemu/1.1.0-beta.0/koffi_freebsd_x64.tar.gz +0 -0
  6. package/build/qemu/1.1.0-beta.0/koffi_linux_arm.tar.gz +0 -0
  7. package/build/qemu/1.1.0-beta.0/koffi_linux_arm64.tar.gz +0 -0
  8. package/build/qemu/1.1.0-beta.0/koffi_linux_ia32.tar.gz +0 -0
  9. package/build/qemu/1.1.0-beta.0/koffi_linux_x64.tar.gz +0 -0
  10. package/build/qemu/1.1.0-beta.0/koffi_win32_ia32.tar.gz +0 -0
  11. package/build/qemu/1.1.0-beta.0/koffi_win32_x64.tar.gz +0 -0
  12. package/package.json +1 -1
  13. package/qemu/qemu.js +11 -5
  14. package/qemu/registry/machines.json +20 -10
  15. package/src/abi_arm32.cc +130 -215
  16. package/src/abi_arm64.cc +103 -117
  17. package/src/abi_x64_sysv.cc +117 -135
  18. package/src/abi_x64_win.cc +89 -98
  19. package/src/abi_x86.cc +91 -99
  20. package/src/call.cc +164 -40
  21. package/src/call.hh +53 -31
  22. package/src/ffi.cc +163 -19
  23. package/src/ffi.hh +30 -22
  24. package/src/util.cc +0 -127
  25. package/src/util.hh +0 -16
  26. package/test/misc.c +68 -2
  27. package/vendor/libcc/libcc.hh +1 -1
  28. package/build/qemu/1.0.3/koffi_darwin_x64.tar.gz +0 -0
  29. package/build/qemu/1.0.3/koffi_freebsd_arm64.tar.gz +0 -0
  30. package/build/qemu/1.0.3/koffi_freebsd_ia32.tar.gz +0 -0
  31. package/build/qemu/1.0.3/koffi_freebsd_x64.tar.gz +0 -0
  32. package/build/qemu/1.0.3/koffi_linux_arm.tar.gz +0 -0
  33. package/build/qemu/1.0.3/koffi_linux_arm64.tar.gz +0 -0
  34. package/build/qemu/1.0.3/koffi_linux_ia32.tar.gz +0 -0
  35. package/build/qemu/1.0.3/koffi_linux_x64.tar.gz +0 -0
  36. package/build/qemu/1.0.3/koffi_win32_ia32.tar.gz +0 -0
  37. package/build/qemu/1.0.3/koffi_win32_x64.tar.gz +0 -0
  38. package/test/misc.js +0 -180
  39. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  40. package/vendor/node-addon-api/CONTRIBUTING.md +0 -93
  41. package/vendor/node-addon-api/appveyor.yml +0 -37
  42. package/vendor/node-addon-api/benchmark/README.md +0 -47
  43. package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
  44. package/vendor/node-addon-api/benchmark/function_args.cc +0 -217
  45. package/vendor/node-addon-api/benchmark/function_args.js +0 -60
  46. package/vendor/node-addon-api/benchmark/index.js +0 -34
  47. package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -91
  48. package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -37
  49. package/vendor/node-addon-api/doc/addon.md +0 -163
  50. package/vendor/node-addon-api/doc/array.md +0 -81
  51. package/vendor/node-addon-api/doc/array_buffer.md +0 -155
  52. package/vendor/node-addon-api/doc/async_context.md +0 -86
  53. package/vendor/node-addon-api/doc/async_operations.md +0 -31
  54. package/vendor/node-addon-api/doc/async_worker.md +0 -427
  55. package/vendor/node-addon-api/doc/async_worker_variants.md +0 -557
  56. package/vendor/node-addon-api/doc/bigint.md +0 -97
  57. package/vendor/node-addon-api/doc/boolean.md +0 -68
  58. package/vendor/node-addon-api/doc/buffer.md +0 -150
  59. package/vendor/node-addon-api/doc/callback_scope.md +0 -54
  60. package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
  61. package/vendor/node-addon-api/doc/checker-tool.md +0 -32
  62. package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
  63. package/vendor/node-addon-api/doc/cmake-js.md +0 -68
  64. package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
  65. package/vendor/node-addon-api/doc/creating_a_release.md +0 -62
  66. package/vendor/node-addon-api/doc/dataview.md +0 -248
  67. package/vendor/node-addon-api/doc/date.md +0 -68
  68. package/vendor/node-addon-api/doc/env.md +0 -196
  69. package/vendor/node-addon-api/doc/error.md +0 -120
  70. package/vendor/node-addon-api/doc/error_handling.md +0 -254
  71. package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
  72. package/vendor/node-addon-api/doc/external.md +0 -63
  73. package/vendor/node-addon-api/doc/function.md +0 -402
  74. package/vendor/node-addon-api/doc/function_reference.md +0 -238
  75. package/vendor/node-addon-api/doc/generator.md +0 -13
  76. package/vendor/node-addon-api/doc/handle_scope.md +0 -63
  77. package/vendor/node-addon-api/doc/hierarchy.md +0 -91
  78. package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
  79. package/vendor/node-addon-api/doc/maybe.md +0 -76
  80. package/vendor/node-addon-api/doc/memory_management.md +0 -27
  81. package/vendor/node-addon-api/doc/name.md +0 -29
  82. package/vendor/node-addon-api/doc/node-gyp.md +0 -82
  83. package/vendor/node-addon-api/doc/number.md +0 -163
  84. package/vendor/node-addon-api/doc/object.md +0 -411
  85. package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
  86. package/vendor/node-addon-api/doc/object_reference.md +0 -117
  87. package/vendor/node-addon-api/doc/object_wrap.md +0 -588
  88. package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
  89. package/vendor/node-addon-api/doc/promises.md +0 -79
  90. package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
  91. package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
  92. package/vendor/node-addon-api/doc/range_error.md +0 -59
  93. package/vendor/node-addon-api/doc/reference.md +0 -113
  94. package/vendor/node-addon-api/doc/setup.md +0 -110
  95. package/vendor/node-addon-api/doc/string.md +0 -93
  96. package/vendor/node-addon-api/doc/symbol.md +0 -61
  97. package/vendor/node-addon-api/doc/threadsafe.md +0 -121
  98. package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
  99. package/vendor/node-addon-api/doc/type_error.md +0 -59
  100. package/vendor/node-addon-api/doc/typed_array.md +0 -78
  101. package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
  102. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
  103. package/vendor/node-addon-api/doc/value.md +0 -340
  104. package/vendor/node-addon-api/doc/version_management.md +0 -43
  105. package/vendor/node-addon-api/package.json +0 -415
  106. package/vendor/node-addon-api/test/README.md +0 -91
  107. package/vendor/node-addon-api/test/addon.cc +0 -36
  108. package/vendor/node-addon-api/test/addon.js +0 -11
  109. package/vendor/node-addon-api/test/addon_build/index.js +0 -49
  110. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -17
  111. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -62
  112. package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
  113. package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
  114. package/vendor/node-addon-api/test/addon_data.cc +0 -99
  115. package/vendor/node-addon-api/test/addon_data.js +0 -46
  116. package/vendor/node-addon-api/test/array_buffer.cc +0 -243
  117. package/vendor/node-addon-api/test/array_buffer.js +0 -69
  118. package/vendor/node-addon-api/test/async_context.cc +0 -36
  119. package/vendor/node-addon-api/test/async_context.js +0 -122
  120. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -83
  121. package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -46
  122. package/vendor/node-addon-api/test/async_progress_worker.cc +0 -134
  123. package/vendor/node-addon-api/test/async_progress_worker.js +0 -61
  124. package/vendor/node-addon-api/test/async_worker.cc +0 -106
  125. package/vendor/node-addon-api/test/async_worker.js +0 -179
  126. package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -13
  127. package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
  128. package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
  129. package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
  130. package/vendor/node-addon-api/test/basic_types/array.js +0 -35
  131. package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -38
  132. package/vendor/node-addon-api/test/basic_types/boolean.js +0 -35
  133. package/vendor/node-addon-api/test/basic_types/number.cc +0 -99
  134. package/vendor/node-addon-api/test/basic_types/number.js +0 -114
  135. package/vendor/node-addon-api/test/basic_types/value.cc +0 -120
  136. package/vendor/node-addon-api/test/basic_types/value.js +0 -133
  137. package/vendor/node-addon-api/test/bigint.cc +0 -91
  138. package/vendor/node-addon-api/test/bigint.js +0 -53
  139. package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
  140. package/vendor/node-addon-api/test/binding.cc +0 -173
  141. package/vendor/node-addon-api/test/binding.gyp +0 -124
  142. package/vendor/node-addon-api/test/buffer.cc +0 -183
  143. package/vendor/node-addon-api/test/buffer.js +0 -69
  144. package/vendor/node-addon-api/test/callbackscope.cc +0 -22
  145. package/vendor/node-addon-api/test/callbackscope.js +0 -49
  146. package/vendor/node-addon-api/test/common/index.js +0 -114
  147. package/vendor/node-addon-api/test/common/test_helper.h +0 -71
  148. package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
  149. package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
  150. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
  151. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -90
  152. package/vendor/node-addon-api/test/date.cc +0 -44
  153. package/vendor/node-addon-api/test/date.js +0 -18
  154. package/vendor/node-addon-api/test/env_cleanup.cc +0 -88
  155. package/vendor/node-addon-api/test/env_cleanup.js +0 -56
  156. package/vendor/node-addon-api/test/error.cc +0 -287
  157. package/vendor/node-addon-api/test/error.js +0 -81
  158. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
  159. package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
  160. package/vendor/node-addon-api/test/error_terminating_environment.js +0 -95
  161. package/vendor/node-addon-api/test/external.cc +0 -81
  162. package/vendor/node-addon-api/test/external.js +0 -88
  163. package/vendor/node-addon-api/test/function.cc +0 -324
  164. package/vendor/node-addon-api/test/function.js +0 -133
  165. package/vendor/node-addon-api/test/function_reference.cc +0 -202
  166. package/vendor/node-addon-api/test/function_reference.js +0 -157
  167. package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
  168. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
  169. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -61
  170. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
  171. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -57
  172. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
  173. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -48
  174. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
  175. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -58
  176. package/vendor/node-addon-api/test/handlescope.cc +0 -60
  177. package/vendor/node-addon-api/test/handlescope.js +0 -14
  178. package/vendor/node-addon-api/test/index.js +0 -159
  179. package/vendor/node-addon-api/test/maybe/check.cc +0 -23
  180. package/vendor/node-addon-api/test/maybe/index.js +0 -38
  181. package/vendor/node-addon-api/test/memory_management.cc +0 -17
  182. package/vendor/node-addon-api/test/memory_management.js +0 -9
  183. package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
  184. package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
  185. package/vendor/node-addon-api/test/name.cc +0 -108
  186. package/vendor/node-addon-api/test/name.js +0 -59
  187. package/vendor/node-addon-api/test/napi_child.js +0 -14
  188. package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
  189. package/vendor/node-addon-api/test/object/delete_property.js +0 -41
  190. package/vendor/node-addon-api/test/object/finalizer.cc +0 -29
  191. package/vendor/node-addon-api/test/object/finalizer.js +0 -28
  192. package/vendor/node-addon-api/test/object/get_property.cc +0 -34
  193. package/vendor/node-addon-api/test/object/get_property.js +0 -40
  194. package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
  195. package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
  196. package/vendor/node-addon-api/test/object/has_property.cc +0 -38
  197. package/vendor/node-addon-api/test/object/has_property.js +0 -37
  198. package/vendor/node-addon-api/test/object/object.cc +0 -350
  199. package/vendor/node-addon-api/test/object/object.js +0 -217
  200. package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -66
  201. package/vendor/node-addon-api/test/object/object_deprecated.js +0 -47
  202. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
  203. package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
  204. package/vendor/node-addon-api/test/object/set_property.cc +0 -45
  205. package/vendor/node-addon-api/test/object/set_property.js +0 -30
  206. package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
  207. package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
  208. package/vendor/node-addon-api/test/object_reference.cc +0 -219
  209. package/vendor/node-addon-api/test/object_reference.js +0 -259
  210. package/vendor/node-addon-api/test/objectwrap.cc +0 -268
  211. package/vendor/node-addon-api/test/objectwrap.js +0 -284
  212. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
  213. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
  214. package/vendor/node-addon-api/test/objectwrap_function.cc +0 -45
  215. package/vendor/node-addon-api/test/objectwrap_function.js +0 -22
  216. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
  217. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
  218. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
  219. package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -40
  220. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -19
  221. package/vendor/node-addon-api/test/promise.cc +0 -29
  222. package/vendor/node-addon-api/test/promise.js +0 -18
  223. package/vendor/node-addon-api/test/reference.cc +0 -24
  224. package/vendor/node-addon-api/test/reference.js +0 -14
  225. package/vendor/node-addon-api/test/run_script.cc +0 -56
  226. package/vendor/node-addon-api/test/run_script.js +0 -45
  227. package/vendor/node-addon-api/test/symbol.cc +0 -79
  228. package/vendor/node-addon-api/test/symbol.js +0 -73
  229. package/vendor/node-addon-api/test/testUtil.js +0 -54
  230. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -195
  231. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -188
  232. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -63
  233. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -12
  234. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -115
  235. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
  236. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -26
  237. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
  238. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -225
  239. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
  240. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -42
  241. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -53
  242. package/vendor/node-addon-api/test/thunking_manual.cc +0 -140
  243. package/vendor/node-addon-api/test/thunking_manual.js +0 -17
  244. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
  245. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
  246. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -68
  247. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -12
  248. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
  249. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
  250. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -28
  251. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -7
  252. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
  253. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
  254. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -53
  255. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -53
  256. package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
  257. package/vendor/node-addon-api/test/typedarray.cc +0 -216
  258. package/vendor/node-addon-api/test/typedarray.js +0 -69
  259. package/vendor/node-addon-api/test/version_management.cc +0 -27
  260. package/vendor/node-addon-api/test/version_management.js +0 -31
  261. package/vendor/node-addon-api/unit-test/README.md +0 -28
  262. package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
  263. package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
  264. package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
  265. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
  266. package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
  267. package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
  268. package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
  269. package/vendor/node-addon-api/unit-test/setup.js +0 -13
  270. package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
  271. package/vendor/node-addon-api/unit-test/test.js +0 -30
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- function test(binding, succeed) {
6
- return new Promise((resolve) =>
7
- // Can't pass an arrow function to doWork because that results in an
8
- // undefined context inside its body when the function gets called.
9
- binding.doWork(succeed, function(e) {
10
- setImmediate(() => {
11
- // If the work is supposed to fail, make sure there's an error.
12
- assert.strictEqual(succeed || e.message === 'test error', true);
13
- assert.strictEqual(binding.workerGone, false);
14
- binding.deleteWorker();
15
- assert.strictEqual(binding.workerGone, true);
16
- resolve();
17
- });
18
- }));
19
- }
20
-
21
- module.exports = require('./common').runTest(async binding => {
22
- await test(binding.persistentasyncworker, false);
23
- await test(binding.persistentasyncworker, true);
24
- });
@@ -1,40 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- Value CreateArray(const CallbackInfo& info) {
6
- if (info.Length() > 0) {
7
- size_t length = info[0].As<Number>().Uint32Value();
8
- return Array::New(info.Env(), length);
9
- } else {
10
- return Array::New(info.Env());
11
- }
12
- }
13
-
14
- Value GetLength(const CallbackInfo& info) {
15
- Array array = info[0].As<Array>();
16
- return Number::New(info.Env(), static_cast<uint32_t>(array.Length()));
17
- }
18
-
19
- Value GetElement(const CallbackInfo& info) {
20
- Array array = info[0].As<Array>();
21
- size_t index = info[1].As<Number>().Uint32Value();
22
- return array[index];
23
- }
24
-
25
- void SetElement(const CallbackInfo& info) {
26
- Array array = info[0].As<Array>();
27
- size_t index = info[1].As<Number>().Uint32Value();
28
- array[index] = info[2].As<Value>();
29
- }
30
-
31
- Object InitBasicTypesArray(Env env) {
32
- Object exports = Object::New(env);
33
-
34
- exports["createArray"] = Function::New(env, CreateArray);
35
- exports["getLength"] = Function::New(env, GetLength);
36
- exports["get"] = Function::New(env, GetElement);
37
- exports["set"] = Function::New(env, SetElement);
38
-
39
- return exports;
40
- }
@@ -1,35 +0,0 @@
1
- 'use strict';
2
- const assert = require('assert');
3
-
4
- module.exports = require('../common').runTest(test);
5
-
6
- function test(binding) {
7
-
8
- // create empty array
9
- const array = binding.basic_types_array.createArray();
10
- assert.strictEqual(binding.basic_types_array.getLength(array), 0);
11
-
12
- // create array with length
13
- const arrayWithLength = binding.basic_types_array.createArray(10);
14
- assert.strictEqual(binding.basic_types_array.getLength(arrayWithLength), 10);
15
-
16
- // set function test
17
- binding.basic_types_array.set(array, 0, 10);
18
- binding.basic_types_array.set(array, 1, "test");
19
- binding.basic_types_array.set(array, 2, 3.0);
20
-
21
- // check length after set data
22
- assert.strictEqual(binding.basic_types_array.getLength(array), 3);
23
-
24
- // get function test
25
- assert.strictEqual(binding.basic_types_array.get(array, 0), 10);
26
- assert.strictEqual(binding.basic_types_array.get(array, 1), "test");
27
- assert.strictEqual(binding.basic_types_array.get(array, 2), 3.0);
28
-
29
- // overwrite test
30
- binding.basic_types_array.set(array, 0, 5);
31
- assert.strictEqual(binding.basic_types_array.get(array, 0), 5);
32
-
33
- // out of index test
34
- assert.strictEqual(binding.basic_types_array.get(array, 5), undefined);
35
- }
@@ -1,38 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- Value CreateBoolean(const CallbackInfo& info) {
6
- return Boolean::New(info.Env(), info[0].As<Boolean>().Value());
7
- }
8
-
9
- Value CreateEmptyBoolean(const CallbackInfo& info) {
10
- Boolean* boolean = new Boolean();
11
- return Boolean::New(info.Env(), boolean->IsEmpty());
12
- }
13
-
14
- Value CreateBooleanFromExistingValue(const CallbackInfo& info) {
15
- Boolean boolean(info.Env(), info[0].As<Boolean>());
16
- return Boolean::New(info.Env(), boolean.Value());
17
- }
18
-
19
- Value CreateBooleanFromPrimitive(const CallbackInfo& info) {
20
- bool boolean = info[0].As<Boolean>();
21
- return Boolean::New(info.Env(), boolean);
22
- }
23
-
24
- Value OperatorBool(const CallbackInfo& info) {
25
- Boolean boolean(info.Env(), info[0].As<Boolean>());
26
- return Boolean::New(info.Env(), static_cast<bool>(boolean));
27
- }
28
-
29
- Object InitBasicTypesBoolean(Env env) {
30
- Object exports = Object::New(env);
31
-
32
- exports["createBoolean"] = Function::New(env, CreateBoolean);
33
- exports["createEmptyBoolean"] = Function::New(env, CreateEmptyBoolean);
34
- exports["createBooleanFromExistingValue"] = Function::New(env, CreateBooleanFromExistingValue);
35
- exports["createBooleanFromPrimitive"] = Function::New(env, CreateBooleanFromPrimitive);
36
- exports["operatorBool"] = Function::New(env, OperatorBool);
37
- return exports;
38
- }
@@ -1,35 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('../common').runTest(test);
6
-
7
- function test(binding) {
8
- const bool1 = binding.basic_types_boolean.createBoolean(true);
9
- assert.strictEqual(bool1, true);
10
-
11
- const bool2 = binding.basic_types_boolean.createBoolean(false);
12
- assert.strictEqual(bool2, false);
13
-
14
- const emptyBoolean = binding.basic_types_boolean.createEmptyBoolean();
15
- assert.strictEqual(emptyBoolean, true);
16
-
17
- const bool3 = binding.basic_types_boolean.createBooleanFromExistingValue(true);
18
- assert.strictEqual(bool3, true);
19
-
20
- const bool4 = binding.basic_types_boolean.createBooleanFromExistingValue(false);
21
- assert.strictEqual(bool4, false);
22
-
23
- const bool5 = binding.basic_types_boolean.createBooleanFromPrimitive(true);
24
- assert.strictEqual(bool5, true);
25
-
26
- const bool6 = binding.basic_types_boolean.createBooleanFromPrimitive(false);
27
- assert.strictEqual(bool6, false);
28
-
29
- const bool7 = binding.basic_types_boolean.operatorBool(true);
30
- assert.strictEqual(bool7, true);
31
-
32
- const bool8 = binding.basic_types_boolean.operatorBool(false);
33
- assert.strictEqual(bool8, false);
34
-
35
- }
@@ -1,99 +0,0 @@
1
- #include <cfloat>
2
-
3
- #include "napi.h"
4
-
5
- using namespace Napi;
6
-
7
- Value ToInt32(const CallbackInfo& info) {
8
- return Number::New(info.Env(), info[0].As<Number>().Int32Value());
9
- }
10
-
11
- Value ToUint32(const CallbackInfo& info) {
12
- return Number::New(info.Env(), info[0].As<Number>().Uint32Value());
13
- }
14
-
15
- Value ToInt64(const CallbackInfo& info) {
16
- return Number::New(info.Env(),
17
- static_cast<double>(info[0].As<Number>().Int64Value()));
18
- }
19
-
20
- Value ToFloat(const CallbackInfo& info) {
21
- return Number::New(info.Env(), info[0].As<Number>().FloatValue());
22
- }
23
-
24
- Value ToDouble(const CallbackInfo& info) {
25
- return Number::New(info.Env(), info[0].As<Number>().DoubleValue());
26
- }
27
-
28
- Value MinFloat(const CallbackInfo& info) {
29
- return Number::New(info.Env(), FLT_MIN);
30
- }
31
-
32
- Value MaxFloat(const CallbackInfo& info) {
33
- return Number::New(info.Env(), FLT_MAX);
34
- }
35
-
36
- Value MinDouble(const CallbackInfo& info) {
37
- return Number::New(info.Env(), DBL_MIN);
38
- }
39
-
40
- Value MaxDouble(const CallbackInfo& info) {
41
- return Number::New(info.Env(), DBL_MAX);
42
- }
43
-
44
- Value OperatorInt32(const CallbackInfo& info) {
45
- Number number = info[0].As<Number>();
46
- return Boolean::New(info.Env(), number.Int32Value() == static_cast<int32_t>(number));
47
- }
48
-
49
- Value OperatorUint32(const CallbackInfo& info) {
50
- Number number = info[0].As<Number>();
51
- return Boolean::New(info.Env(), number.Uint32Value() == static_cast<uint32_t>(number));
52
- }
53
-
54
- Value OperatorInt64(const CallbackInfo& info) {
55
- Number number = info[0].As<Number>();
56
- return Boolean::New(info.Env(), number.Int64Value() == static_cast<int64_t>(number));
57
- }
58
-
59
- Value OperatorFloat(const CallbackInfo& info) {
60
- Number number = info[0].As<Number>();
61
- return Boolean::New(info.Env(), number.FloatValue() == static_cast<float>(number));
62
- }
63
-
64
- Value OperatorDouble(const CallbackInfo& info) {
65
- Number number = info[0].As<Number>();
66
- return Boolean::New(info.Env(), number.DoubleValue() == static_cast<double>(number));
67
- }
68
-
69
- Value CreateEmptyNumber(const CallbackInfo& info) {
70
- Number number;
71
- return Boolean::New(info.Env(), number.IsEmpty());
72
- }
73
-
74
- Value CreateNumberFromExistingValue(const CallbackInfo& info) {
75
- return info[0].As<Number>();
76
- }
77
-
78
- Object InitBasicTypesNumber(Env env) {
79
- Object exports = Object::New(env);
80
-
81
- exports["toInt32"] = Function::New(env, ToInt32);
82
- exports["toUint32"] = Function::New(env, ToUint32);
83
- exports["toInt64"] = Function::New(env, ToInt64);
84
- exports["toFloat"] = Function::New(env, ToFloat);
85
- exports["toDouble"] = Function::New(env, ToDouble);
86
- exports["minFloat"] = Function::New(env, MinFloat);
87
- exports["maxFloat"] = Function::New(env, MaxFloat);
88
- exports["minDouble"] = Function::New(env, MinDouble);
89
- exports["maxDouble"] = Function::New(env, MaxDouble);
90
- exports["operatorInt32"] = Function::New(env, OperatorInt32);
91
- exports["operatorUint32"] = Function::New(env, OperatorUint32);
92
- exports["operatorInt64"] = Function::New(env, OperatorInt64);
93
- exports["operatorFloat"] = Function::New(env, OperatorFloat);
94
- exports["operatorDouble"] = Function::New(env, OperatorDouble);
95
- exports["createEmptyNumber"] = Function::New(env, CreateEmptyNumber);
96
- exports["createNumberFromExistingValue"] = Function::New(env, CreateNumberFromExistingValue);
97
-
98
- return exports;
99
- }
@@ -1,114 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('../common').runTest(test);
6
-
7
- function test(binding) {
8
- const MIN_INT32 = -2147483648;
9
- const MAX_INT32 = 2147483647;
10
- const MIN_UINT32 = 0;
11
- const MAX_UINT32 = 4294967295;
12
- const MIN_INT64 = Number.MIN_SAFE_INTEGER;
13
- const MAX_INT64 = Number.MAX_SAFE_INTEGER;
14
- const MIN_FLOAT = binding.basic_types_number.minFloat();
15
- const MAX_FLOAT = binding.basic_types_number.maxFloat();
16
- const MIN_DOUBLE = binding.basic_types_number.minDouble();
17
- const MAX_DOUBLE = binding.basic_types_number.maxDouble();
18
-
19
- function randomRangeTestForInteger(min, max, converter) {
20
- for (let i = min; i < max; i+= Math.floor(Math.random() * max / 100)) {
21
- assert.strictEqual(i, converter(i));
22
- }
23
- }
24
-
25
- // Test for 32bit signed integer [-2147483648, 2147483647]
26
- {
27
- // Range tests
28
- randomRangeTestForInteger(MIN_INT32, MAX_INT32, binding.basic_types_number.toInt32);
29
- assert.strictEqual(MIN_INT32, binding.basic_types_number.toInt32(MIN_INT32));
30
- assert.strictEqual(MAX_INT32, binding.basic_types_number.toInt32(MAX_INT32));
31
-
32
- // Overflow tests
33
- assert.notStrictEqual(MAX_INT32 + 1, binding.basic_types_number.toInt32(MAX_INT32 + 1));
34
- assert.notStrictEqual(MIN_INT32 - 1, binding.basic_types_number.toInt32(MIN_INT32 - 1));
35
- }
36
-
37
- // Test for 32bit unsigned integer [0, 4294967295]
38
- {
39
- // Range tests
40
- randomRangeTestForInteger(MIN_UINT32, MAX_UINT32, binding.basic_types_number.toUint32);
41
- assert.strictEqual(MIN_UINT32, binding.basic_types_number.toUint32(MIN_UINT32));
42
- assert.strictEqual(MAX_UINT32, binding.basic_types_number.toUint32(MAX_UINT32));
43
-
44
- // Overflow tests
45
- assert.notStrictEqual(MAX_UINT32 + 1, binding.basic_types_number.toUint32(MAX_UINT32 + 1));
46
- assert.notStrictEqual(MIN_UINT32 - 1, binding.basic_types_number.toUint32(MIN_UINT32 - 1));
47
- }
48
-
49
- // Test for 64bit signed integer
50
- {
51
- // Range tests
52
- randomRangeTestForInteger(MIN_INT64, MAX_INT64, binding.basic_types_number.toInt64);
53
- assert.strictEqual(MIN_INT64, binding.basic_types_number.toInt64(MIN_INT64));
54
- assert.strictEqual(MAX_INT64, binding.basic_types_number.toInt64(MAX_INT64));
55
-
56
- // The int64 type can't be represented with full precision in JavaScript.
57
- // So, we are not able to do overflow test here.
58
- // Please see https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type.
59
- }
60
-
61
- // Test for float type (might be single-precision 32bit IEEE 754 floating point number)
62
- {
63
- // Range test
64
- assert.strictEqual(MIN_FLOAT, binding.basic_types_number.toFloat(MIN_FLOAT));
65
- assert.strictEqual(MAX_FLOAT, binding.basic_types_number.toFloat(MAX_FLOAT));
66
-
67
- // Overflow test
68
- assert.strictEqual(0, binding.basic_types_number.toFloat(MIN_FLOAT * MIN_FLOAT));
69
- assert.strictEqual(Infinity, binding.basic_types_number.toFloat(MAX_FLOAT * MAX_FLOAT));
70
- }
71
-
72
- // Test for double type (is double-precision 64 bit IEEE 754 floating point number)
73
- {
74
- assert.strictEqual(MIN_DOUBLE, binding.basic_types_number.toDouble(MIN_DOUBLE));
75
- assert.strictEqual(MAX_DOUBLE, binding.basic_types_number.toDouble(MAX_DOUBLE));
76
-
77
- // Overflow test
78
- assert.strictEqual(0, binding.basic_types_number.toDouble(MIN_DOUBLE * MIN_DOUBLE));
79
- assert.strictEqual(Infinity, binding.basic_types_number.toDouble(MAX_DOUBLE * MAX_DOUBLE));
80
- }
81
-
82
- // Test for operator overloading
83
- {
84
- assert.strictEqual(binding.basic_types_number.operatorInt32(MIN_INT32), true);
85
- assert.strictEqual(binding.basic_types_number.operatorInt32(MAX_INT32), true);
86
- assert.strictEqual(binding.basic_types_number.operatorUint32(MIN_UINT32), true);
87
- assert.strictEqual(binding.basic_types_number.operatorUint32(MAX_UINT32), true);
88
- assert.strictEqual(binding.basic_types_number.operatorInt64(MIN_INT64), true);
89
- assert.strictEqual(binding.basic_types_number.operatorInt64(MAX_INT64), true);
90
- assert.strictEqual(binding.basic_types_number.operatorFloat(MIN_FLOAT), true);
91
- assert.strictEqual(binding.basic_types_number.operatorFloat(MAX_FLOAT), true);
92
- assert.strictEqual(binding.basic_types_number.operatorFloat(MAX_DOUBLE), true);
93
- assert.strictEqual(binding.basic_types_number.operatorDouble(MIN_DOUBLE), true);
94
- assert.strictEqual(binding.basic_types_number.operatorDouble(MAX_DOUBLE), true);
95
- }
96
-
97
- // Construction test
98
- {
99
-     assert.strictEqual(binding.basic_types_number.createEmptyNumber(), true);
100
-    randomRangeTestForInteger(MIN_INT32, MAX_INT32, binding.basic_types_number.createNumberFromExistingValue);
101
-    assert.strictEqual(MIN_INT32, binding.basic_types_number.createNumberFromExistingValue(MIN_INT32));
102
-    assert.strictEqual(MAX_INT32, binding.basic_types_number.createNumberFromExistingValue(MAX_INT32));
103
-    randomRangeTestForInteger(MIN_UINT32, MAX_UINT32, binding.basic_types_number.createNumberFromExistingValue);
104
-    assert.strictEqual(MIN_UINT32, binding.basic_types_number.createNumberFromExistingValue(MIN_UINT32));
105
-    assert.strictEqual(MAX_UINT32, binding.basic_types_number.createNumberFromExistingValue(MAX_UINT32));
106
-    randomRangeTestForInteger(MIN_INT64, MAX_INT64, binding.basic_types_number.createNumberFromExistingValue);
107
-    assert.strictEqual(MIN_INT64, binding.basic_types_number.createNumberFromExistingValue(MIN_INT64));
108
-    assert.strictEqual(MAX_INT64, binding.basic_types_number.createNumberFromExistingValue(MAX_INT64));
109
-     assert.strictEqual(MIN_FLOAT, binding.basic_types_number.createNumberFromExistingValue(MIN_FLOAT));
110
-     assert.strictEqual(MAX_FLOAT, binding.basic_types_number.createNumberFromExistingValue(MAX_FLOAT));
111
-     assert.strictEqual(MIN_DOUBLE, binding.basic_types_number.createNumberFromExistingValue(MIN_DOUBLE));
112
-     assert.strictEqual(MAX_DOUBLE, binding.basic_types_number.createNumberFromExistingValue(MAX_DOUBLE));
113
- }
114
- }
@@ -1,120 +0,0 @@
1
- #include "napi.h"
2
- #include "test_helper.h"
3
-
4
- using namespace Napi;
5
-
6
- namespace {
7
-
8
- int testData = 1;
9
-
10
- // Helpers for testing non-Javascript values.
11
- Value CreateExternal(const CallbackInfo& info) {
12
- return External<int>::New(info.Env(), &testData);
13
- }
14
-
15
- } // end anonymous namespace
16
-
17
- static Value IsEmpty(const CallbackInfo& info) {
18
- Value value;
19
- return Boolean::New(info.Env(), value.IsEmpty());
20
- }
21
-
22
- static Value IsUndefined(const CallbackInfo& info) {
23
- return Boolean::New(info.Env(), info[0].IsUndefined());
24
- }
25
-
26
- static Value IsNull(const CallbackInfo& info) {
27
- return Boolean::New(info.Env(), info[0].IsNull());
28
- }
29
-
30
- static Value IsBoolean(const CallbackInfo& info) {
31
- return Boolean::New(info.Env(), info[0].IsBoolean());
32
- }
33
-
34
- static Value IsNumber(const CallbackInfo& info) {
35
- return Boolean::New(info.Env(), info[0].IsNumber());
36
- }
37
-
38
- static Value IsString(const CallbackInfo& info) {
39
- return Boolean::New(info.Env(), info[0].IsString());
40
- }
41
-
42
- static Value IsSymbol(const CallbackInfo& info) {
43
- return Boolean::New(info.Env(), info[0].IsSymbol());
44
- }
45
-
46
- static Value IsArray(const CallbackInfo& info) {
47
- return Boolean::New(info.Env(), info[0].IsArray());
48
- }
49
-
50
- static Value IsArrayBuffer(const CallbackInfo& info) {
51
- return Boolean::New(info.Env(), info[0].IsArrayBuffer());
52
- }
53
-
54
- static Value IsTypedArray(const CallbackInfo& info) {
55
- return Boolean::New(info.Env(), info[0].IsTypedArray());
56
- }
57
-
58
- static Value IsObject(const CallbackInfo& info) {
59
- return Boolean::New(info.Env(), info[0].IsObject());
60
- }
61
-
62
- static Value IsFunction(const CallbackInfo& info) {
63
- return Boolean::New(info.Env(), info[0].IsFunction());
64
- }
65
-
66
- static Value IsPromise(const CallbackInfo& info) {
67
- return Boolean::New(info.Env(), info[0].IsPromise());
68
- }
69
-
70
- static Value IsDataView(const CallbackInfo& info) {
71
- return Boolean::New(info.Env(), info[0].IsDataView());
72
- }
73
-
74
- static Value IsExternal(const CallbackInfo& info) {
75
- return Boolean::New(info.Env(), info[0].IsExternal());
76
- }
77
-
78
- static Value ToBoolean(const CallbackInfo& info) {
79
- return MaybeUnwrap(info[0].ToBoolean());
80
- }
81
-
82
- static Value ToNumber(const CallbackInfo& info) {
83
- return MaybeUnwrap(info[0].ToNumber());
84
- }
85
-
86
- static Value ToString(const CallbackInfo& info) {
87
- return MaybeUnwrap(info[0].ToString());
88
- }
89
-
90
- static Value ToObject(const CallbackInfo& info) {
91
- return MaybeUnwrap(info[0].ToObject());
92
- }
93
-
94
- Object InitBasicTypesValue(Env env) {
95
- Object exports = Object::New(env);
96
-
97
- exports["isEmpty"] = Function::New(env, IsEmpty);
98
- exports["isUndefined"] = Function::New(env, IsUndefined);
99
- exports["isNull"] = Function::New(env, IsNull);
100
- exports["isBoolean"] = Function::New(env, IsBoolean);
101
- exports["isNumber"] = Function::New(env, IsNumber);
102
- exports["isString"] = Function::New(env, IsString);
103
- exports["isSymbol"] = Function::New(env, IsSymbol);
104
- exports["isArray"] = Function::New(env, IsArray);
105
- exports["isArrayBuffer"] = Function::New(env, IsArrayBuffer);
106
- exports["isTypedArray"] = Function::New(env, IsTypedArray);
107
- exports["isObject"] = Function::New(env, IsObject);
108
- exports["isFunction"] = Function::New(env, IsFunction);
109
- exports["isPromise"] = Function::New(env, IsPromise);
110
- exports["isDataView"] = Function::New(env, IsDataView);
111
- exports["isExternal"] = Function::New(env, IsExternal);
112
- exports["toBoolean"] = Function::New(env, ToBoolean);
113
- exports["toNumber"] = Function::New(env, ToNumber);
114
- exports["toString"] = Function::New(env, ToString);
115
- exports["toObject"] = Function::New(env, ToObject);
116
-
117
- exports["createExternal"] = Function::New(env, CreateExternal);
118
-
119
- return exports;
120
- }
@@ -1,133 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('../common').runTest(test);
6
-
7
- function test(binding) {
8
- const externalValue = binding.basic_types_value.createExternal();
9
-
10
- function isObject(value) {
11
- return (typeof value === 'object' && value !== externalValue) ||
12
- (typeof value === 'function');
13
- }
14
-
15
- function detailedTypeOf(value) {
16
- const type = typeof value;
17
- if (type !== 'object')
18
- return type;
19
-
20
- if (value === null)
21
- return 'null';
22
-
23
- if (Array.isArray(value))
24
- return 'array';
25
-
26
- if (value === externalValue)
27
- return 'external';
28
-
29
- if (!value.constructor)
30
- return type;
31
-
32
- if (value instanceof ArrayBuffer)
33
- return 'arraybuffer';
34
-
35
- if (ArrayBuffer.isView(value)) {
36
- if (value instanceof DataView) {
37
- return 'dataview';
38
- } else {
39
- return 'typedarray';
40
- }
41
- }
42
-
43
- if (value instanceof Promise)
44
- return 'promise';
45
-
46
- return 'object';
47
- }
48
-
49
- function typeCheckerTest(typeChecker, expectedType) {
50
- const testValueList = [
51
- undefined,
52
- null,
53
- true,
54
- 10,
55
- 'string',
56
- Symbol('symbol'),
57
- [],
58
- new ArrayBuffer(10),
59
- new Int32Array(new ArrayBuffer(12)),
60
- {},
61
- function() {},
62
- new Promise((resolve, reject) => {}),
63
- new DataView(new ArrayBuffer(12)),
64
- externalValue
65
- ];
66
-
67
- testValueList.forEach((testValue) => {
68
- if (testValue !== null && expectedType === 'object') {
69
- assert.strictEqual(typeChecker(testValue), isObject(testValue));
70
- } else {
71
- assert.strictEqual(typeChecker(testValue), detailedTypeOf(testValue) === expectedType);
72
- }
73
- });
74
- }
75
-
76
- function typeConverterTest(typeConverter, expectedType) {
77
- const testValueList = [
78
- true,
79
- false,
80
- 0,
81
- 10,
82
- 'string',
83
- [],
84
- new ArrayBuffer(10),
85
- new Int32Array(new ArrayBuffer(12)),
86
- {},
87
- function() {},
88
- new Promise((resolve, reject) => {})
89
- ];
90
-
91
- testValueList.forEach((testValue) => {
92
- const expected = expectedType(testValue);
93
- const actual = typeConverter(testValue);
94
-
95
- if (isNaN(expected)) {
96
- assert(isNaN(actual));
97
- } else {
98
- assert.deepStrictEqual(typeConverter(testValue), expectedType(testValue));
99
- }
100
- });
101
- }
102
-
103
- const value = binding.basic_types_value;
104
-
105
- typeCheckerTest(value.isUndefined, 'undefined');
106
- typeCheckerTest(value.isNull, 'null');
107
- typeCheckerTest(value.isBoolean, 'boolean');
108
- typeCheckerTest(value.isNumber, 'number');
109
- typeCheckerTest(value.isString, 'string');
110
- typeCheckerTest(value.isSymbol, 'symbol');
111
- typeCheckerTest(value.isArray, 'array');
112
- typeCheckerTest(value.isArrayBuffer, 'arraybuffer');
113
- typeCheckerTest(value.isTypedArray, 'typedarray');
114
- typeCheckerTest(value.isObject, 'object');
115
- typeCheckerTest(value.isFunction, 'function');
116
- typeCheckerTest(value.isPromise, 'promise');
117
- typeCheckerTest(value.isDataView, 'dataview');
118
- typeCheckerTest(value.isExternal, 'external');
119
-
120
- typeConverterTest(value.toBoolean, Boolean);
121
- assert.strictEqual(value.toBoolean(undefined), false);
122
- assert.strictEqual(value.toBoolean(null), false);
123
-
124
- typeConverterTest(value.toNumber, Number);
125
- assert(isNaN(value.toNumber(undefined)));
126
- assert.strictEqual(value.toNumber(null), 0);
127
-
128
- typeConverterTest(value.toString, String);
129
- assert.strictEqual(value.toString(undefined), 'undefined');
130
- assert.strictEqual(value.toString(null), 'null');
131
-
132
- typeConverterTest(value.toObject, Object);
133
- }