ResourceManager.cpp 2.0 KB

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