ResourceManager.cpp 2.2 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/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(allocAligned, nullptr);
  17. GlDevice* gl = alloc.newInstance<GlDevice>();
  18. ANKI_TEST_EXPECT_NO_ERR(gl->create(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>();
  26. ANKI_TEST_EXPECT_NEQ(resources, nullptr);
  27. ANKI_TEST_EXPECT_NO_ERR(resources->create(rinit));
  28. // Load a resource
  29. {
  30. DummyResourcePointer a;
  31. ANKI_TEST_EXPECT_NO_ERR(a.load("blah", resources));
  32. {
  33. DummyResourcePointer b = a;
  34. a = b;
  35. b = a;
  36. }
  37. }
  38. // Load and load again
  39. {
  40. DummyResourcePointer a;
  41. ANKI_TEST_EXPECT_NO_ERR(a.load("blah", resources));
  42. auto refcount = a.getReferenceCount();
  43. DummyResourcePointer b;
  44. ANKI_TEST_EXPECT_NO_ERR(b.load("blah", resources));
  45. ANKI_TEST_EXPECT_EQ(b.getReferenceCount(), a.getReferenceCount());
  46. ANKI_TEST_EXPECT_EQ(a.getReferenceCount(), refcount + 1);
  47. ANKI_TEST_EXPECT_EQ(b.get(), a.get());
  48. // Again
  49. DummyResourcePointer c;
  50. ANKI_TEST_EXPECT_NO_ERR(c.load("blah", resources));
  51. ANKI_TEST_EXPECT_EQ(a.getReferenceCount(), refcount + 2);
  52. // Load something else
  53. DummyResourcePointer d;
  54. ANKI_TEST_EXPECT_NO_ERR(d.load("blih", resources));
  55. ANKI_TEST_EXPECT_EQ(a.getReferenceCount(), refcount + 2);
  56. }
  57. // Exception
  58. {
  59. {
  60. DummyResourcePointer a;
  61. ANKI_TEST_EXPECT_EQ(
  62. a.load("error", resources), ErrorCode::USER_DATA);
  63. }
  64. {
  65. DummyResourcePointer a;
  66. ANKI_TEST_EXPECT_EQ(
  67. a.load("error", resources), ErrorCode::USER_DATA);
  68. }
  69. }
  70. // Delete
  71. alloc.deleteInstance(resources);
  72. alloc.deleteInstance(gl);
  73. }
  74. } // end namespace anki