gui: after review of quadtree by msgctl, tougher tests
This commit is contained in:
parent
df908374dc
commit
402be30268
@ -61,6 +61,15 @@ class QuadTreeNode
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Sort the bounding box coordinates.
|
||||
void fixup()
|
||||
{
|
||||
if (x1_ < x0_)
|
||||
std::swap(x0_, x1_);
|
||||
if (y1_ < y0_)
|
||||
std::swap(y0_, y1_);
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
@ -281,7 +290,7 @@ class QuadTreeNode
|
||||
|
||||
// Return count of BoundingBoxes/Elements contained.
|
||||
// @returns count of elements contained.
|
||||
size_t size(void) const
|
||||
size_t size() const
|
||||
{
|
||||
size_t res = elems_.size();
|
||||
if (children_ != nullptr) {
|
||||
@ -351,20 +360,21 @@ class QuadTree
|
||||
// @param k Bounding box at which to store value.
|
||||
// @param v Value at a given bounding box.
|
||||
// @returns Whether the insert was succesful.
|
||||
bool insert(const BoundingBox &k, ElementT v)
|
||||
bool insert(BoundingBox k, ElementT v)
|
||||
{
|
||||
k.fixup();
|
||||
return root_.insert(k, v);
|
||||
}
|
||||
|
||||
// Dump a human-readable representation of the tree to stdout.
|
||||
void dump(void) const
|
||||
void dump() const
|
||||
{
|
||||
root_.dump(0);
|
||||
}
|
||||
|
||||
// Return count of BoundingBoxes/Elements contained.
|
||||
// @returns count of elements contained.
|
||||
size_t size(void) const
|
||||
size_t size() const
|
||||
{
|
||||
return root_.size();
|
||||
}
|
||||
@ -378,7 +388,7 @@ class QuadTree
|
||||
{
|
||||
std::vector<ElementT> res;
|
||||
root_.get(x, y, res);
|
||||
return std::move(res);
|
||||
return res;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -58,7 +58,7 @@ TEST_F(QuadTreeTest, insert_count)
|
||||
auto rng = NEXTPNR_NAMESPACE::DeterministicRNG();
|
||||
|
||||
// Add 10000 random rectangles.
|
||||
for (int i = 0; i < 10000; i++) {
|
||||
for (unsigned int i = 0; i < 10000; i++) {
|
||||
int x0 = rng.rng(width_);
|
||||
int y0 = rng.rng(height_);
|
||||
int w = rng.rng(width_ - x0);
|
||||
@ -69,7 +69,7 @@ TEST_F(QuadTreeTest, insert_count)
|
||||
ASSERT_EQ(qt_->size(), i+1);
|
||||
}
|
||||
// Add 100000 random points.
|
||||
for (int i = 0; i < 100000; i++) {
|
||||
for (unsigned int i = 0; i < 100000; i++) {
|
||||
int x0 = rng.rng(width_);
|
||||
int y0 = rng.rng(height_);
|
||||
int x1 = x0;
|
||||
@ -113,7 +113,7 @@ TEST_F(QuadTreeTest, insert_retrieve_same)
|
||||
auto res = qt_->get(x, y);
|
||||
// Somewhat arbirary test to make sure we don't return obscene
|
||||
// amounts of data.
|
||||
ASSERT_LT(res.size(), 200);
|
||||
ASSERT_LT(res.size(), 200UL);
|
||||
bool found = false;
|
||||
for (auto elem : res) {
|
||||
// Is this what we're looking for?
|
||||
|
Loading…
Reference in New Issue
Block a user