4#include <gtest/gtest.h>
151llvm::orc::ThreadSafeModule createDemoModule();
155 if (!std::filesystem::exists(std::filesystem::path(
"temp"))) {
156 std::filesystem::create_directories(std::filesystem::path(
"temp"));
158 ASSERT_TRUE(std::filesystem::exists(std::filesystem::path(
"temp")));
159 ASSERT_TRUE(std::filesystem::is_directory(std::filesystem::path(
"temp")));
174 std::string source =
"::val := 1; val2 := 1; @::val3 := 1";
175 TermPtr ast = Parser::ParseString(source);
180 llvm::orc::ThreadSafeModule mod = createDemoModule();
182 std::filesystem::remove(
"temp/test-other.nlm");
183 std::filesystem::remove(
"temp/test-module.nlm");
187 RunTime::ModuleCreate(module,
"test-module", ast, source, mod.getModuleUnlocked());
189 ASSERT_TRUE(!module.
name.empty());
190 ASSERT_STREQ(
"test-module", module.
name.c_str());
191 ASSERT_TRUE(!module.
include.empty());
192 ASSERT_TRUE(!module.
source.empty());
193 ASSERT_TRUE(!module.
bytecode.empty());
196 ASSERT_TRUE(RunTime::ModuleSave(module,
"temp/test-other.nlm",
"other"));
198 ASSERT_TRUE(std::filesystem::exists(std::filesystem::path(
"temp/test-other.nlm")));
201 ASSERT_TRUE(RunTime::ModuleSave(module,
"temp/test-module.nlm"));
203 ASSERT_TRUE(std::filesystem::exists(std::filesystem::path(
"temp/test-module.nlm")));
206 RunTime::ModuleRead(module2,
"temp/test-module.nlm");
207 ASSERT_TRUE(!module2.
name.empty());
208 ASSERT_STREQ(
"test-module", module2.
name.c_str());
214 ASSERT_TRUE(0 == memcmp(module.
source.data(), module2.
source.data(), module2.
source.size()));
220 RunTime::ModuleRead(other,
"temp/test-other.nlm",
"other");
221 ASSERT_TRUE(!other.
name.empty());
222 ASSERT_STREQ(
"other", other.
name.c_str());
227 ASSERT_TRUE(0 == memcmp(module.
source.data(), other.
source.data(), other.
source.size()));
std::shared_ptr< Term > TermPtr
std::shared_ptr< RunTime > RuntimePtr