mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 06:55:07 +00:00
103 lines
2.5 KiB
C++
103 lines
2.5 KiB
C++
/*
|
|
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*/
|
|
|
|
#include "gtest/gtest.h"
|
|
#include "bh_platform.h"
|
|
#include "bh_read_file.h"
|
|
#include "wasm_export.h"
|
|
|
|
class WasmGCTest : public testing::Test
|
|
{
|
|
private:
|
|
std::string get_binary_path()
|
|
{
|
|
char cwd[1024] = { 0 };
|
|
|
|
if (readlink("/proc/self/exe", cwd, 1024) <= 0) {
|
|
return NULL;
|
|
}
|
|
|
|
char *path_end = strrchr(cwd, '/');
|
|
if (path_end != NULL) {
|
|
*path_end = '\0';
|
|
}
|
|
|
|
return std::string(cwd);
|
|
}
|
|
|
|
protected:
|
|
void SetUp()
|
|
{
|
|
CWD = get_binary_path();
|
|
|
|
memset(&init_args, 0, sizeof(RuntimeInitArgs));
|
|
|
|
init_args.mem_alloc_type = Alloc_With_Pool;
|
|
init_args.mem_alloc_option.pool.heap_buf = global_heap_buf;
|
|
init_args.mem_alloc_option.pool.heap_size = sizeof(global_heap_buf);
|
|
|
|
ASSERT_EQ(wasm_runtime_full_init(&init_args), true);
|
|
|
|
cleanup = true;
|
|
}
|
|
|
|
void TearDown()
|
|
{
|
|
if (cleanup) {
|
|
wasm_runtime_destroy();
|
|
}
|
|
}
|
|
|
|
public:
|
|
bool load_wasm_file(const char *wasm_file)
|
|
{
|
|
const char *file;
|
|
unsigned char *wasm_file_buf;
|
|
uint32 wasm_file_size;
|
|
|
|
file = strdup((CWD + "/" + wasm_file).c_str());
|
|
|
|
wasm_file_buf =
|
|
(unsigned char *)bh_read_file_to_buffer(file, &wasm_file_size);
|
|
if (!wasm_file_buf)
|
|
return false;
|
|
|
|
module = wasm_runtime_load(wasm_file_buf, wasm_file_size, error_buf,
|
|
sizeof(error_buf));
|
|
if (!module)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
public:
|
|
std::string CWD;
|
|
RuntimeInitArgs init_args;
|
|
wasm_module_t module = NULL;
|
|
wasm_module_inst_t module_inst = NULL;
|
|
wasm_function_inst_t func_inst = NULL;
|
|
wasm_exec_env_t exec_env = NULL;
|
|
char error_buf[128];
|
|
char global_heap_buf[512 * 1024];
|
|
bool cleanup = true;
|
|
};
|
|
|
|
TEST_F(WasmGCTest, Test_app1)
|
|
{
|
|
ASSERT_TRUE(load_wasm_file("test1.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("test2.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("test3.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("test4.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("test5.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("test6.wasm"));
|
|
|
|
ASSERT_TRUE(load_wasm_file("struct1.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("struct2.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("struct3.wasm"));
|
|
|
|
ASSERT_TRUE(load_wasm_file("func1.wasm"));
|
|
ASSERT_TRUE(load_wasm_file("func2.wasm"));
|
|
}
|