ResourceManager.cpp 2.1 KB

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