|
@@ -42,7 +42,7 @@ namespace UnitTest
|
|
|
void LoadModule()
|
|
|
{
|
|
|
m_handle = DynamicModuleHandle::Create("AzCoreTestDLL");
|
|
|
- bool isLoaded = m_handle->Load(true);
|
|
|
+ bool isLoaded = m_handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired);
|
|
|
ASSERT_TRUE(isLoaded) << "Could not load required test module: " << m_handle->GetFilename(); // failed to load the DLL, please check the output paths
|
|
|
|
|
|
auto createModule = m_handle->GetFunction<CreateModuleClassFunction>(CreateModuleClassFunctionName);
|
|
@@ -197,7 +197,7 @@ namespace UnitTest
|
|
|
TEST_F(DLL, LoadFailure)
|
|
|
{
|
|
|
auto handle = DynamicModuleHandle::Create("Not_a_DLL");
|
|
|
- bool isLoaded = handle->Load(true);
|
|
|
+ bool isLoaded = handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired);
|
|
|
EXPECT_FALSE(isLoaded);
|
|
|
|
|
|
bool isUnloaded = handle->Unload();
|
|
@@ -207,12 +207,12 @@ namespace UnitTest
|
|
|
TEST_F(DLL, LoadModuleTwice)
|
|
|
{
|
|
|
auto handle = DynamicModuleHandle::Create("AzCoreTestDLL");
|
|
|
- bool isLoaded = handle->Load(true);
|
|
|
+ bool isLoaded = handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired);
|
|
|
EXPECT_TRUE(isLoaded);
|
|
|
EXPECT_TRUE(handle->IsLoaded());
|
|
|
|
|
|
auto secondHandle = DynamicModuleHandle::Create("AzCoreTestDLL");
|
|
|
- isLoaded = secondHandle->Load(true);
|
|
|
+ isLoaded = secondHandle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired);
|
|
|
EXPECT_TRUE(isLoaded);
|
|
|
EXPECT_TRUE(handle->IsLoaded());
|
|
|
EXPECT_TRUE(secondHandle->IsLoaded());
|
|
@@ -227,5 +227,53 @@ namespace UnitTest
|
|
|
EXPECT_FALSE(handle->IsLoaded());
|
|
|
EXPECT_FALSE(secondHandle->IsLoaded());
|
|
|
}
|
|
|
+
|
|
|
+ TEST_F(DLL, NoLoadModule)
|
|
|
+ {
|
|
|
+ auto handle = DynamicModuleHandle::Create("AzCoreTestDLL");
|
|
|
+ bool isLoaded = handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired | AZ::DynamicModuleHandle::LoadFlags::NoLoad);
|
|
|
+ EXPECT_FALSE(isLoaded);
|
|
|
+ EXPECT_FALSE(handle->IsLoaded());
|
|
|
+ }
|
|
|
+
|
|
|
+ TEST_F(DLL, NoLoadLoadedModule)
|
|
|
+ {
|
|
|
+ auto handle = DynamicModuleHandle::Create("AzCoreTestDLL");
|
|
|
+ bool isLoaded = handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired);
|
|
|
+ EXPECT_TRUE(isLoaded);
|
|
|
+ EXPECT_TRUE(handle->IsLoaded());
|
|
|
+
|
|
|
+ auto secondHandle = DynamicModuleHandle::Create("AzCoreTestDLL");
|
|
|
+ isLoaded = secondHandle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired | AZ::DynamicModuleHandle::LoadFlags::NoLoad);
|
|
|
+ EXPECT_TRUE(isLoaded);
|
|
|
+ EXPECT_TRUE(handle->IsLoaded());
|
|
|
+ EXPECT_TRUE(secondHandle->IsLoaded());
|
|
|
+
|
|
|
+ bool isUnloaded = handle->Unload();
|
|
|
+ EXPECT_TRUE(isUnloaded);
|
|
|
+ EXPECT_FALSE(handle->IsLoaded());
|
|
|
+ EXPECT_TRUE(secondHandle->IsLoaded());
|
|
|
+
|
|
|
+ {
|
|
|
+ // Check that the Module wasn't unloaded by the OS when unloading one DynamicModuleHandle (the OS should have 1 ref count left).
|
|
|
+ isLoaded = handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired | AZ::DynamicModuleHandle::LoadFlags::NoLoad);
|
|
|
+ EXPECT_TRUE(isLoaded);
|
|
|
+ EXPECT_TRUE(handle->IsLoaded());
|
|
|
+ handle->Unload();
|
|
|
+ }
|
|
|
+
|
|
|
+ isUnloaded = secondHandle->Unload();
|
|
|
+ EXPECT_TRUE(isUnloaded);
|
|
|
+ EXPECT_FALSE(handle->IsLoaded());
|
|
|
+ EXPECT_FALSE(secondHandle->IsLoaded());
|
|
|
+
|
|
|
+ {
|
|
|
+ // Check that the Module was unloaded by the OS.
|
|
|
+ isLoaded = handle->Load(AZ::DynamicModuleHandle::LoadFlags::InitFuncRequired | AZ::DynamicModuleHandle::LoadFlags::NoLoad);
|
|
|
+ EXPECT_FALSE(isLoaded);
|
|
|
+ EXPECT_FALSE(handle->IsLoaded());
|
|
|
+ handle->Unload();
|
|
|
+ }
|
|
|
+ }
|
|
|
#endif // !AZ_UNIT_TEST_SKIP_DLL_TEST
|
|
|
}
|