TEST(ResourceManager,remove) { ResourceManager<TestResource> manager; auto handle0 = manager.add(0, "0"); auto handle1 = manager.add(1, "1"); auto handle2 = manager.add(2, "2"); auto handle3 = manager.add(3, "3"); auto handle1Copy = handle1; auto pRes1 = manager.request(handle1, true); ASSERT_NEQ(pRes1, nullptr); ASSERT_EQ(pRes1->m_int, 1); ASSERT_EQ(pRes1->m_string, "1"); ASSERT(pRes1->isLoaded()); bool removed = manager.remove(handle1, false); ASSERT(removed == false); handle1Copy = TestResource::ResourceHandle{}; removed = manager.remove(handle1, false); ASSERT(removed == true); auto handle5 = manager.add(5, "5"); auto handle5Copy = handle5; auto handle5Ident = manager.identify(5, "5"); ASSERT_EQ(handle5, handle5Ident); removed = manager.remove(handle5, false); ASSERT(removed == false); removed = manager.remove(handle5, true); ASSERT(removed == true); }
TEST(ResourceManager,identify) { ResourceManager<TestResource> manager; manager.add(0, ""); manager.add(42, ""); auto handle1 = manager.add(42, std::string("Hello World")); ASSERT(handle1.isValid()); manager.add(1, "Hello World"); auto handle1_o = manager.identify("Hello World"); ASSERT(handle1_o.isValid()); ASSERT_EQ(handle1_o, handle1); auto handle1_o2 = manager.identify(42, "Hello World"); ASSERT(handle1_o2.isValid()); ASSERT_EQ(handle1_o2, handle1); auto handle1_o22 = manager.identify(42, "Hello World"); ASSERT(handle1_o22.isValid()); ASSERT_EQ(handle1_o22, handle1); auto handle1_o23 = manager.identify(&noop); ASSERT(handle1_o23.isValid()); auto handle1_o24 = manager.identify(&noop); ASSERT_EQ(handle1_o23, handle1_o24); auto handle2 = manager.identify(&TestResource::noop); ASSERT(handle2.isValid()); auto handle2_o = manager.identify("Hello"); ASSERT(!handle2_o.isValid()); ASSERT_NEQ(handle2_o, handle1); }
TEST(ResourceManager,loadNext) { ResourceManager<TestResource> manager; { auto handle0 = manager.add(0, "0"); auto handle1 = manager.add(1, "1"); auto handle2 = manager.add(2, "2"); auto handle3 = manager.add(3, "3"); auto pRes1 = manager.request(handle1, false); auto pRes2 = manager.request(handle2, false); while (manager.needLoad()) manager.loadNext(); ASSERT_EQ(pRes1->isLoaded(), true); ASSERT_EQ(pRes2->isLoaded(), true); ASSERT_NOTHROW(manager.loadNext()); } // Let it unload the resources for(unsigned int i = 0; i < manager.size(); i++) manager.loadNext(); ASSERT_EQ(manager.request(manager.identify(1, "1"), false)->isLoaded(), false); ASSERT_EQ(manager.request(manager.identify(2, "2"), false)->isLoaded(), false); }