ResourceManager.cpp 1.9 KB

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