ResourceManager.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // Copyright (C) 2009-2022, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <Tests/Framework/Framework.h>
  6. #include <AnKi/Resource/DummyResource.h>
  7. #include <AnKi/Resource/ResourceManager.h>
  8. #include <AnKi/Core/ConfigSet.h>
  9. namespace anki {
  10. ANKI_TEST(Resource, ResourceManager)
  11. {
  12. // Create
  13. ConfigSet config;
  14. HeapAllocator<U8> alloc(allocAligned, nullptr);
  15. ResourceManagerInitInfo rinit;
  16. rinit.m_gr = nullptr;
  17. rinit.m_config = &config;
  18. rinit.m_allocCallback = allocAligned;
  19. rinit.m_allocCallbackData = nullptr;
  20. ResourceManager* resources = alloc.newInstance<ResourceManager>();
  21. ANKI_TEST_EXPECT_NO_ERR(resources->init(rinit));
  22. // Very simple
  23. {
  24. DummyResourcePtr a;
  25. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  26. }
  27. // Load a resource
  28. {
  29. DummyResourcePtr a;
  30. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  31. {
  32. DummyResourcePtr b = a;
  33. a = b;
  34. b = a;
  35. }
  36. }
  37. // Load and load again
  38. {
  39. DummyResourcePtr a;
  40. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  41. auto refcount = a->getRefcount().load();
  42. DummyResourcePtr b;
  43. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", b));
  44. ANKI_TEST_EXPECT_EQ(b->getRefcount().load(), a->getRefcount().load());
  45. ANKI_TEST_EXPECT_EQ(a->getRefcount().load(), refcount + 1);
  46. ANKI_TEST_EXPECT_EQ(b.get(), a.get());
  47. // Again
  48. DummyResourcePtr c;
  49. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", c));
  50. ANKI_TEST_EXPECT_EQ(a->getRefcount().load(), refcount + 2);
  51. // Load something else
  52. DummyResourcePtr d;
  53. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blih", d));
  54. ANKI_TEST_EXPECT_EQ(a->getRefcount().load(), refcount + 2);
  55. }
  56. // Error
  57. {
  58. {
  59. DummyResourcePtr a;
  60. ANKI_TEST_EXPECT_EQ(resources->loadResource("error", a), Error::USER_DATA);
  61. }
  62. {
  63. DummyResourcePtr a;
  64. ANKI_TEST_EXPECT_EQ(resources->loadResource("error", a), Error::USER_DATA);
  65. }
  66. }
  67. // Delete
  68. alloc.deleteInstance(resources);
  69. }
  70. } // end namespace anki