#include #include #include // disable, this just tests entt and not MM #if 0 TEST(EngineResourceManagerTest, entt_cache) { struct type_entt_cache_test { int val; }; entt::resource_cache cache{}; ASSERT_TRUE(cache.empty()); struct type_entt_cache_test_loader final : entt::resource_loader { std::shared_ptr load(int value) const { return std::shared_ptr(new type_entt_cache_test{value}); } }; ASSERT_TRUE(cache.load("test1"_hs, 1)); ASSERT_EQ(cache.size(), 1); auto h_test1 = cache.handle("test1"_hs); ASSERT_TRUE(static_cast(h_test1)); //ASSERT_EQ(*h_test1, 1); } #endif TEST(EngineResourceManagerTest, basic) { struct type_test { int val; }; auto& rm = MM::ResourceManager::ref(); ASSERT_TRUE(rm.empty()); struct type_test_loader final { std::shared_ptr load(int value) const { return std::shared_ptr(new type_test{value}); } }; ASSERT_TRUE(rm.load("test1", 1)); ASSERT_FALSE(rm.empty()); ASSERT_EQ(rm.size(), 1); ASSERT_TRUE(rm.contains("test1"_hs)); { auto h_test1 = rm.get("test1"_hs); ASSERT_TRUE(static_cast(h_test1)); ASSERT_EQ(h_test1->val, 1); ASSERT_TRUE(rm.reload("test1", 3)); ASSERT_EQ(rm.size(), 1); ASSERT_TRUE(static_cast(h_test1)); auto h_test1_2 = rm.get("test1"_hs); ASSERT_TRUE(static_cast(h_test1_2)); ASSERT_NE(h_test1->val, h_test1_2->val); { auto rt = rm.id_from_handle(h_test1_2); ASSERT_TRUE(static_cast(rt)); ASSERT_EQ(rt, "test1"_hs); } rm.discard("test1"); ASSERT_TRUE(rm.empty()); { auto rt = rm.id_from_handle(h_test1_2); ASSERT_FALSE(static_cast(rt)); } } }