ResourceManager.cpp 1.7 KB

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