diff options
author | vng <viktor.govako@gmail.com> | 2011-08-30 17:55:46 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:22:45 +0300 |
commit | 04fd05c9ad267ea00af88deb65c062b943c46592 (patch) | |
tree | 88efeb5b3873798c961865c5a100a4382e8d2eed /geometry/geometry_tests/region2d_binary_op_test.cpp | |
parent | e7b2d8899a66ae51187bf7f52142abf44bb0d765 (diff) |
Add difference of regions.
Diffstat (limited to 'geometry/geometry_tests/region2d_binary_op_test.cpp')
-rw-r--r-- | geometry/geometry_tests/region2d_binary_op_test.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/geometry/geometry_tests/region2d_binary_op_test.cpp b/geometry/geometry_tests/region2d_binary_op_test.cpp index f129c24652..47b00095a2 100644 --- a/geometry/geometry_tests/region2d_binary_op_test.cpp +++ b/geometry/geometry_tests/region2d_binary_op_test.cpp @@ -42,3 +42,39 @@ UNIT_TEST(RegionIntersect_Smoke) TEST_EQUAL(res.size(), 0, ()); } } + +UNIT_TEST(RegionDifference_Smoke) +{ + { + P arr1[] = { P(-1, 1), P(1, 1), P(1, -1), P(-1, -1) }; + P arr2[] = { P(-2, 2), P(2, 2), P(2, -2), P(-2, -2) }; + + R r1, r2; + r1.Assign(arr1, arr1 + ARRAY_SIZE(arr1)); + r2.Assign(arr2, arr2 + ARRAY_SIZE(arr2)); + + vector<R> res; + m2::DiffRegions(r1, r2, res); + TEST_EQUAL(res.size(), 0, ()); + + m2::DiffRegions(r2, r1, res); + + TEST_EQUAL(res.size(), 1, ()); + TEST_EQUAL(res[0].GetRect(), r2.GetRect(), ()); + } + + { + P arr1[] = { P(0, 1), P(2, 1), P(2, 0), P(0, 0) }; + P arr2[] = { P(1, 2), P(2, 2), P(2, -1), P(1, -1) }; + + R r1, r2; + r1.Assign(arr1, arr1 + ARRAY_SIZE(arr1)); + r2.Assign(arr2, arr2 + ARRAY_SIZE(arr2)); + + vector<R> res; + m2::DiffRegions(r1, r2, res); + + TEST_EQUAL(res.size(), 1, ()); + TEST_EQUAL(res[0].GetRect(), m2::RectI(0, 0, 1, 1), ()); + } +} |