From 13874986b21e2b4b5ec92cf7df2bc37079c942da Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Mon, 28 Nov 2022 23:40:04 +0100 Subject: [PATCH] Bugfix, tests updated --- src/db/db/dbDeepRegion.cc | 20 +++++++++++++++----- src/db/unit_tests/dbDeepRegionTests.cc | 6 +++--- testdata/algo/deep_region_au31.gds | Bin 8522 -> 8586 bytes 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/db/db/dbDeepRegion.cc b/src/db/db/dbDeepRegion.cc index 3af4d04c6..0f7ea7fd7 100644 --- a/src/db/db/dbDeepRegion.cc +++ b/src/db/db/dbDeepRegion.cc @@ -1933,12 +1933,22 @@ DeepRegion::selected_interacting_generic (const Region &other, int mode, bool to return std::make_pair (clone (), (RegionDelegate *) 0); } } else if (other.empty ()) { - if (output_mode == PositiveAndNegative) { - return std::make_pair (new DeepRegion (deep_layer ().derived ()), clone ()); - } else if (output_mode == Negative) { - return std::make_pair (clone (), (RegionDelegate *) 0); + if (mode > 0 /*outside*/) { + if (output_mode == PositiveAndNegative) { + return std::make_pair (clone (), new DeepRegion (deep_layer ().derived ())); + } else if (output_mode == Negative) { + return std::make_pair (new DeepRegion (deep_layer ().derived ()), (RegionDelegate *) 0); + } else { + return std::make_pair (clone (), (RegionDelegate *) 0); + } } else { - return std::make_pair (new DeepRegion (deep_layer ().derived ()), (RegionDelegate *) 0); + if (output_mode == PositiveAndNegative) { + return std::make_pair (new DeepRegion (deep_layer ().derived ()), clone ()); + } else if (output_mode == Negative) { + return std::make_pair (clone (), (RegionDelegate *) 0); + } else { + return std::make_pair (new DeepRegion (deep_layer ().derived ()), (RegionDelegate *) 0); + } } } diff --git a/src/db/unit_tests/dbDeepRegionTests.cc b/src/db/unit_tests/dbDeepRegionTests.cc index 972b06614..d749a8ddf 100644 --- a/src/db/unit_tests/dbDeepRegionTests.cc +++ b/src/db/unit_tests/dbDeepRegionTests.cc @@ -1799,7 +1799,7 @@ TEST(30a_interact_with_count_region) EXPECT_EQ (r.selected_interacting (rr2, 2, 5).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_interacting (rr2, 4, 5).to_string (), ""); - EXPECT_EQ (r.selected_not_interacting (empty).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); + EXPECT_EQ (r.selected_not_interacting (empty).to_string (), "(0,0;0,200;100,200;100,0);(-100,-100;-100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_not_interacting (rr).to_string (), ""); EXPECT_EQ (r.selected_not_interacting (rr, 0, 2).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_not_interacting (rr, 1, 2).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); @@ -1890,7 +1890,7 @@ TEST(30b_interact_with_count_edge) EXPECT_EQ (r.selected_interacting (rr2, 2, 5).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_interacting (rr2, 4, 5).to_string (), ""); - EXPECT_EQ (r.selected_not_interacting (empty).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); + EXPECT_EQ (r.selected_not_interacting (empty).to_string (), "(0,0;0,200;100,200;100,0);(-100,-100;-100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_not_interacting (rr).to_string (), ""); EXPECT_EQ (r.selected_not_interacting (rr, 0, 2).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_not_interacting (rr, 1, 2).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); @@ -1980,7 +1980,7 @@ TEST(30c_interact_with_count_text) EXPECT_EQ (r.selected_interacting (rr2, 2, 5).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_interacting (rr2, 4, 5).to_string (), ""); - EXPECT_EQ (r.selected_not_interacting (empty).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); + EXPECT_EQ (r.selected_not_interacting (empty).to_string (), "(0,0;0,200;100,200;100,0);(-100,-100;-100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_not_interacting (rr).to_string (), ""); EXPECT_EQ (r.selected_not_interacting (rr, 0, 2).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); EXPECT_EQ (r.selected_not_interacting (rr, 1, 2).to_string (), "(-100,-100;-100,0;0,0;0,200;100,200;100,0;0,0;0,-100)"); diff --git a/testdata/algo/deep_region_au31.gds b/testdata/algo/deep_region_au31.gds index 786700549f5b3184698a2217c14080913edb63ff..49e69259cfef2078b283e5bba99b3f4b64b54933 100644 GIT binary patch delta 180 zcmX@*)a9(iz{bGD6u}_F$i)7Pftx{wL7YL6K@gceQAt$-i!cKl8=KQ)Mq%-dW!%h@ z4>E^NZezBdyq}kKvlz>C7GW$pHXq>l&ocQxukYkN+{Tl$C3q+QfzX?M`1rBw$P?mX SoBTt(ROQAt$-i!cKl8=KQ)M`7`eW!%h@ zFETq!Ze$MKEXFdOMHq|f%?CLCvrOL3V==j&k7M$FUf<0