summaryrefslogtreecommitdiff
path: root/test_napi/src/properties.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test_napi/src/properties.rs')
-rw-r--r--test_napi/src/properties.rs89
1 files changed, 89 insertions, 0 deletions
diff --git a/test_napi/src/properties.rs b/test_napi/src/properties.rs
new file mode 100644
index 000000000..89d95d6c6
--- /dev/null
+++ b/test_napi/src/properties.rs
@@ -0,0 +1,89 @@
+// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
+
+use napi_sys::PropertyAttributes::*;
+use napi_sys::Status::napi_ok;
+use napi_sys::*;
+use std::ptr;
+
+pub fn init(env: napi_env, exports: napi_value) {
+ let mut number: napi_value = ptr::null_mut();
+ assert!(unsafe { napi_create_double(env, 1.0, &mut number) } == napi_ok);
+
+ // Key name as napi_value representing `v8::String`
+ let mut name_value: napi_value = ptr::null_mut();
+ assert!(
+ unsafe {
+ napi_create_string_utf8(
+ env,
+ "key_v8_string".as_ptr() as *const i8,
+ usize::MAX,
+ &mut name_value,
+ )
+ } == napi_ok
+ );
+
+ // Key symbol
+ let mut symbol_description: napi_value = ptr::null_mut();
+ let mut name_symbol: napi_value = ptr::null_mut();
+ assert!(
+ unsafe {
+ napi_create_string_utf8(
+ env,
+ "key_v8_symbol".as_ptr() as *const i8,
+ usize::MAX,
+ &mut symbol_description,
+ )
+ } == napi_ok
+ );
+ assert!(
+ unsafe { napi_create_symbol(env, symbol_description, &mut name_symbol) }
+ == napi_ok
+ );
+
+ let properties = &[
+ napi_property_descriptor {
+ utf8name: "test_property_rw\0".as_ptr() as *const i8,
+ name: ptr::null_mut(),
+ method: None,
+ getter: None,
+ setter: None,
+ data: ptr::null_mut(),
+ attributes: enumerable | writable,
+ value: number,
+ },
+ napi_property_descriptor {
+ utf8name: "test_property_r\0".as_ptr() as *const i8,
+ name: ptr::null_mut(),
+ method: None,
+ getter: None,
+ setter: None,
+ data: ptr::null_mut(),
+ attributes: enumerable,
+ value: number,
+ },
+ napi_property_descriptor {
+ utf8name: ptr::null(),
+ name: name_value,
+ method: None,
+ getter: None,
+ setter: None,
+ data: ptr::null_mut(),
+ attributes: enumerable,
+ value: number,
+ },
+ napi_property_descriptor {
+ utf8name: ptr::null(),
+ name: name_symbol,
+ method: None,
+ getter: None,
+ setter: None,
+ data: ptr::null_mut(),
+ attributes: enumerable,
+ value: number,
+ },
+ ];
+
+ unsafe {
+ napi_define_properties(env, exports, properties.len(), properties.as_ptr())
+ };
+}