GeometryDatabase.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <doctest.h>
  2. #include "../../../Source/Core/GeometryDatabase.cpp"
  3. using namespace Rml;
  4. TEST_CASE("Geometry database")
  5. {
  6. std::vector<Geometry> geometry_list(10);
  7. auto list_database_equivalent = [&geometry_list]() -> bool {
  8. int i = 0;
  9. bool result = true;
  10. GeometryDatabase::geometry_database.for_each([&geometry_list, &i, &result](Geometry* geometry) {
  11. result &= (geometry == &geometry_list[i++]);
  12. });
  13. return result;
  14. };
  15. int i = 0;
  16. for (auto& geometry : geometry_list)
  17. geometry.GetIndices().push_back(i++);
  18. CHECK(list_database_equivalent());
  19. geometry_list.reserve(2000);
  20. CHECK(list_database_equivalent());
  21. geometry_list.erase(geometry_list.begin() + 5);
  22. CHECK(list_database_equivalent());
  23. std::swap(geometry_list.front(), geometry_list.back());
  24. geometry_list.pop_back();
  25. CHECK(list_database_equivalent());
  26. std::swap(geometry_list.front(), geometry_list.back());
  27. CHECK(list_database_equivalent());
  28. geometry_list.emplace_back();
  29. CHECK(list_database_equivalent());
  30. geometry_list.clear();
  31. CHECK(list_database_equivalent());
  32. }