#include <stdio.h>
#include "napi_test_helpers.h"
int main(void) {
napi_env env = napi_wasm_init_env();
CHECK_OR_FAIL(env != NULL, "napi_wasm_init_env returned NULL");
size_t ab_byte_length = 128;
napi_value arraybuffer;
NAPI_CALL(env,
napi_create_arraybuffer(env, ab_byte_length, NULL, &arraybuffer));
size_t dv_byte_length = 64;
size_t dv_byte_offset = 32;
napi_value dataview;
NAPI_CALL(env, napi_create_dataview(env, dv_byte_length, arraybuffer,
dv_byte_offset, &dataview));
bool is_dv;
NAPI_CALL(env, napi_is_dataview(env, dataview, &is_dv));
CHECK_OR_FAIL(is_dv, "napi_is_dataview should return true for a dataview");
bool ab_is_dv;
NAPI_CALL(env, napi_is_dataview(env, arraybuffer, &ab_is_dv));
CHECK_OR_FAIL(!ab_is_dv,
"napi_is_dataview should return false for an arraybuffer");
size_t info_byte_length;
napi_value info_arraybuffer;
size_t info_byte_offset;
NAPI_CALL(env, napi_get_dataview_info(env, dataview, &info_byte_length,
NULL, &info_arraybuffer,
&info_byte_offset));
CHECK_OR_FAIL(info_byte_length == dv_byte_length,
"dataview info byte_length mismatch");
CHECK_OR_FAIL(info_byte_offset == dv_byte_offset,
"dataview info byte_offset mismatch");
bool info_is_ab;
NAPI_CALL(env, napi_is_arraybuffer(env, info_arraybuffer, &info_is_ab));
CHECK_OR_FAIL(info_is_ab,
"arraybuffer from dataview info should be an arraybuffer");
return PrintSuccess("TEST_DATAVIEW");
}