ResourceManager.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Copyright (C) 2009-2023, 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. ANKI_TEST(Resource, ResourceManager)
  10. {
  11. // Create
  12. ConfigSet::allocateSingleton(allocAligned, nullptr);
  13. ResourceManager* resources = &ResourceManager::allocateSingleton();
  14. ANKI_TEST_EXPECT_NO_ERR(resources->init(allocAligned, nullptr));
  15. // Very simple
  16. {
  17. DummyResourcePtr a;
  18. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  19. }
  20. // Load a resource
  21. {
  22. DummyResourcePtr a;
  23. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  24. {
  25. DummyResourcePtr b = a;
  26. a = b;
  27. b = a;
  28. }
  29. }
  30. // Load and load again
  31. {
  32. DummyResourcePtr a;
  33. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", a));
  34. auto refcount = a->getRefcount();
  35. DummyResourcePtr b;
  36. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", b));
  37. ANKI_TEST_EXPECT_EQ(b->getRefcount(), a->getRefcount());
  38. ANKI_TEST_EXPECT_EQ(a->getRefcount(), refcount + 1);
  39. ANKI_TEST_EXPECT_EQ(b.get(), a.get());
  40. // Again
  41. DummyResourcePtr c;
  42. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blah", c));
  43. ANKI_TEST_EXPECT_EQ(a->getRefcount(), refcount + 2);
  44. // Load something else
  45. DummyResourcePtr d;
  46. ANKI_TEST_EXPECT_NO_ERR(resources->loadResource("blih", d));
  47. ANKI_TEST_EXPECT_EQ(a->getRefcount(), refcount + 2);
  48. }
  49. // Error
  50. {
  51. {
  52. DummyResourcePtr a;
  53. ANKI_TEST_EXPECT_EQ(resources->loadResource("error", a), Error::kUserData);
  54. }
  55. {
  56. DummyResourcePtr a;
  57. ANKI_TEST_EXPECT_EQ(resources->loadResource("error", a), Error::kUserData);
  58. }
  59. }
  60. // Delete
  61. ResourceManager::freeSingleton();
  62. }