ResourceManager.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // Copyright (C) 2009-2021, 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 = DefaultConfigSet::get();
  14. HeapAllocator<U8> alloc(allocAligned, nullptr);
  15. ResourceManagerInitInfo rinit;
  16. rinit.m_gr = nullptr;
  17. rinit.m_config = &config;
  18. rinit.m_cacheDir = "/tmp/";
  19. rinit.m_allocCallback = allocAligned;
  20. rinit.m_allocCallbackData = nullptr;
  21. ResourceManager* resources = alloc.newInstance<ResourceManager>();
  22. ANKI_TEST_EXPECT_NO_ERR(resources->init(rinit));
  23. // Very simple
  24. {
  25. DummyResourcePtr a;
  26. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  27. }
  28. // Load a resource
  29. {
  30. DummyResourcePtr a;
  31. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  32. {
  33. DummyResourcePtr b = a;
  34. a = b;
  35. b = a;
  36. }
  37. }
  38. // Load and load again
  39. {
  40. DummyResourcePtr a;
  41. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  42. auto refcount = a->getRefcount().load();
  43. DummyResourcePtr b;
  44. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", b));
  45. ANKI_TEST_EXPECT_EQ(b->getRefcount().load(), a->getRefcount().load());
  46. ANKI_TEST_EXPECT_EQ(a->getRefcount().load(), refcount + 1);
  47. ANKI_TEST_EXPECT_EQ(b.get(), a.get());
  48. // Again
  49. DummyResourcePtr c;
  50. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", c));
  51. ANKI_TEST_EXPECT_EQ(a->getRefcount().load(), refcount + 2);
  52. // Load something else
  53. DummyResourcePtr d;
  54. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blih", d));
  55. ANKI_TEST_EXPECT_EQ(a->getRefcount().load(), refcount + 2);
  56. }
  57. // Error
  58. {
  59. {
  60. DummyResourcePtr a;
  61. ANKI_TEST_EXPECT_EQ(resources->loadResource("error", a), Error::USER_DATA);
  62. }
  63. {
  64. DummyResourcePtr a;
  65. ANKI_TEST_EXPECT_EQ(resources->loadResource("error", a), Error::USER_DATA);
  66. }
  67. }
  68. // Delete
  69. alloc.deleteInstance(resources);
  70. }
  71. } // end namespace anki