ResourceManager.cpp 2.1 KB

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