From 829966d9a155762de06d1580388909ee742fe840 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sat, 7 Apr 2018 09:21:50 +0200 Subject: [PATCH] Fixed #108 (Box#enlarge, Box#move on empty boxes) --- src/db/db/dbBox.h | 12 ++++++++---- src/db/unit_tests/dbBox.cc | 7 +++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/db/db/dbBox.h b/src/db/db/dbBox.h index ea3e1648e..a3319fffb 100644 --- a/src/db/db/dbBox.h +++ b/src/db/db/dbBox.h @@ -860,8 +860,10 @@ template inline box & box::move (const vector &p) { - m_p1 += p; - m_p2 += p; + if (! empty ()) { + m_p1 += p; + m_p2 += p; + } return *this; } @@ -869,8 +871,10 @@ template inline box & box::enlarge (const vector &p) { - m_p1 -= p; - m_p2 += p; + if (! empty ()) { + m_p1 -= p; + m_p2 += p; + } return *this; } diff --git a/src/db/unit_tests/dbBox.cc b/src/db/unit_tests/dbBox.cc index 071d04ab5..5a3396c7b 100644 --- a/src/db/unit_tests/dbBox.cc +++ b/src/db/unit_tests/dbBox.cc @@ -41,12 +41,19 @@ TEST(2) EXPECT_EQ (b.moved (db::Vector (10, 20)), db::Box (110, 20, 10, 220)); EXPECT_EQ (b.enlarged (db::Vector (10, 20)), db::Box (-10, -20, 110, 220)); + EXPECT_EQ (empty.moved (db::Vector (10, 20)).empty (), true); + EXPECT_EQ (empty.enlarged (db::Vector (10, 20)).empty (), true); EXPECT_EQ (b + db::Box (-10, 20, 100, 200), db::Box (-10, 0, 100, 200)); EXPECT_EQ (b + db::Box (-10, -20, 100, -10), db::Box (-10, -20, 100, 200)); EXPECT_EQ (b + db::Box (110, 220, 120, 250), db::Box (0, 0, 120, 250)); EXPECT_EQ (b & db::Box (110, 220, 120, 250), empty); EXPECT_EQ (b & db::Box (50, 100, 120, 250), db::Box (50, 100, 100, 200)); EXPECT_EQ (b & db::Box (50, 100, 60, 120), db::Box (50, 100, 60, 120)); + + empty.move (db::Vector (10, 20)); + EXPECT_EQ (empty == db::Box (), true); + empty.enlarge (db::Vector (10, 20)); + EXPECT_EQ (empty == db::Box (), true); } TEST(3)