diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-02-02 11:09:16 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-02-02 11:31:13 -0800 |
commit | b97dcbc12592fc93d2c8137f3d56a523e994a136 (patch) | |
tree | 12e5f91d686f2853c5322a525663193a546ab130 /test/geometry | |
parent | ce8c6e26d58f91bba46576080caf48e4765c176f (diff) | |
download | qtlocation-mapboxgl-b97dcbc12592fc93d2c8137f3d56a523e994a136.tar.gz |
[tests] Reorganize tests to match src structure
Diffstat (limited to 'test/geometry')
-rw-r--r-- | test/geometry/binpack.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/geometry/binpack.cpp b/test/geometry/binpack.cpp new file mode 100644 index 0000000000..54f410a0be --- /dev/null +++ b/test/geometry/binpack.cpp @@ -0,0 +1,51 @@ +#include "../fixtures/util.hpp" + +#include <mbgl/geometry/binpack.hpp> + +#include <iosfwd> +#include <array> + +namespace mbgl { +template <typename T> ::std::ostream& operator<<(::std::ostream& os, const Rect<T>& t) { + return os << "Rect { " << t.x << ", " << t.y << ", " << t.w << ", " << t.h << " }"; +} +} // namespace mbgl + +TEST(BinPack, Allocating) { + mbgl::BinPack<uint16_t> bin(128, 128); + std::array<mbgl::Rect<uint16_t>, 4> rects; + + rects[0] = bin.allocate(32, 48); + ASSERT_EQ(mbgl::Rect<uint16_t>(0, 0, 32, 48), rects[0]); + rects[1] = bin.allocate(8, 17); + ASSERT_EQ(mbgl::Rect<uint16_t>(32, 0, 8, 17), rects[1]); + rects[2] = bin.allocate(8, 17); + ASSERT_EQ(mbgl::Rect<uint16_t>(0, 48, 8, 17), rects[2]); + + bin.release(rects[0]); + rects[0] = bin.allocate(32, 24); + ASSERT_EQ(mbgl::Rect<uint16_t>(0, 0, 32, 24), rects[0]); + rects[3] = bin.allocate(32, 24); + ASSERT_EQ(mbgl::Rect<uint16_t>(32, 17, 32, 24), rects[3]); +} + + +TEST(BinPack, Full) { + mbgl::BinPack<uint16_t> bin(128, 128); + std::vector<mbgl::Rect<uint16_t>> rects; + + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 256; i++) { + auto rect = bin.allocate(8, 8); + ASSERT_TRUE(rect.hasArea()); + rects.push_back(rect); + } + + ASSERT_FALSE(bin.allocate(8, 8).hasArea()); + + for (auto& rect: rects) { + bin.release(rect); + } + rects.clear(); + } +} |