From 944bba96a0bc8f0cf2bdf142ea2b82756c684c89 Mon Sep 17 00:00:00 2001 From: Eugen Ciur <eugen@papermerge.com> Date: Thu, 3 Feb 2022 09:45:14 +0200 Subject: [PATCH] fix 'intersect' method + add couple of tests --- app/utils/rectangle.js | 20 +++++++++++++++++++- tests/unit/rectangle-test.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/app/utils/rectangle.js b/app/utils/rectangle.js index e017485..dc789f1 100644 --- a/app/utils/rectangle.js +++ b/app/utils/rectangle.js @@ -17,7 +17,8 @@ export default class Rectangle { intersect(rect) { /* - Returns true if this rectangle intersects with rect. + Returns true if this rectangle intersects with rect + (or other way around). Two rectangle intersect if one of them has a point inside other. */ if (this.contains_point(rect.p1)) { @@ -36,6 +37,23 @@ export default class Rectangle { return true; } + // or other way around + if (rect.contains_point(this.p1)) { + return true; + } + + if (rect.contains_point(this.p2)) { + return true; + } + + if (rect.contains_point(this.p3)) { + return true; + } + + if (rect.contains_point(this.p4)) { + return true; + } + return false; } diff --git a/tests/unit/rectangle-test.js b/tests/unit/rectangle-test.js index c6ccd2c..798432f 100644 --- a/tests/unit/rectangle-test.js +++ b/tests/unit/rectangle-test.js @@ -53,5 +53,35 @@ module('Unit | Rectangle', function () { rect.p4.isEqual(new Point(100, 205)) ); }); + + test('instersect positive', function(assert) { + let rect1, rect2; + + rect1 = new Rectangle(100, 100, 20, 20); + rect2 = new Rectangle(110, 90, 5, 25); + + assert.true( + rect1.intersect(rect2) + ); + + assert.true( + rect2.intersect(rect1) + ); + }); + + test('instersect negative', function(assert) { + let rect1, rect2; + + rect1 = new Rectangle(100, 100, 20, 20); + rect2 = new Rectangle(10, 10, 15, 15); + + assert.false( + rect1.intersect(rect2) + ); + + assert.false( + rect2.intersect(rect1) + ); + }); }); -- GitLab