From 2a16ea92529b07e918e331c13cc56b75e441fb52 Mon Sep 17 00:00:00 2001
From: Aaron <aaronquinlan@gmail.com>
Date: Wed, 26 Dec 2012 15:40:42 -0500
Subject: [PATCH] [BUG] Fix regression in reporting all overlapping features
 for .  Thanks to @jsilter.

---
 src/closestBed/closestBed.cpp |  1 +
 test/closest/close-a.bed      |  8 +++++
 test/closest/close-b.bed      |  7 ++++
 test/closest/test-closest.sh  | 66 +++++++++++++++++++++++++++++++++++
 4 files changed, 82 insertions(+)
 create mode 100644 test/closest/close-a.bed
 create mode 100644 test/closest/close-b.bed

diff --git a/src/closestBed/closestBed.cpp b/src/closestBed/closestBed.cpp
index 12279c39..673028aa 100644
--- a/src/closestBed/closestBed.cpp
+++ b/src/closestBed/closestBed.cpp
@@ -126,6 +126,7 @@ void BedClosest::FindWindowOverlaps(BED &a, vector<BED> &hits) {
                         closestB.clear();
                         distances.clear();
                     }
+                    minDistance = 0;
                     closestB.push_back(*h);
                     distances.push_back(0);
                 }
diff --git a/test/closest/close-a.bed b/test/closest/close-a.bed
new file mode 100644
index 00000000..ad2095e3
--- /dev/null
+++ b/test/closest/close-a.bed
@@ -0,0 +1,8 @@
+track name="Test Bed" maxheightpixels=120:120
+chr1	100	101
+chr1	200	201
+chr1	300	301
+chr1	100000	100010
+chr1	100020	100040
+chr2	1	10
+chr2	20	30
diff --git a/test/closest/close-b.bed b/test/closest/close-b.bed
new file mode 100644
index 00000000..65b4e004
--- /dev/null
+++ b/test/closest/close-b.bed
@@ -0,0 +1,7 @@
+track name="Test Bed 2" maxheightpixels=120:120
+chr1	100	101
+chr1	150	201
+chr1	175	375
+chr3	20	30
+chr7	55209979	55210130
+chr7	55210220	55210688
diff --git a/test/closest/test-closest.sh b/test/closest/test-closest.sh
index 58269cf8..7a0ded2d 100644
--- a/test/closest/test-closest.sh
+++ b/test/closest/test-closest.sh
@@ -101,3 +101,69 @@ echo \
 $BT closest -a strand-test-a.bed -b strand-test-b.bed -S > obs
 check obs exp
 rm obs exp
+
+
+###########################################################
+# test reproting of all overlapping features
+###########################################################
+echo "    closest.t9...\c"
+echo \
+"chr1	100	101	chr1	100	101
+chr1	200	201	chr1	150	201
+chr1	200	201	chr1	175	375
+chr1	300	301	chr1	175	375
+chr1	100000	100010	chr1	175	375
+chr1	100020	100040	chr1	175	375
+chr2	1	10	.	-1	-1
+chr2	20	30	.	-1	-1" > exp
+$BT closest -a close-a.bed -b close-b.bed > obs
+check obs exp
+rm obs exp
+
+###########################################################
+# test reproting of first overlapping feature
+###########################################################
+echo "    closest.t10...\c"
+echo \
+"chr1	100	101	chr1	100	101
+chr1	200	201	chr1	150	201
+chr1	300	301	chr1	175	375
+chr1	100000	100010	chr1	175	375
+chr1	100020	100040	chr1	175	375
+chr2	1	10	.	-1	-1
+chr2	20	30	.	-1	-1" > exp
+$BT closest -a close-a.bed -b close-b.bed -t first > obs
+check obs exp
+rm obs exp
+
+###########################################################
+# test reproting of last overlapping feature
+###########################################################
+echo "    closest.t11...\c"
+echo \
+"chr1	100	101	chr1	100	101
+chr1	200	201	chr1	175	375
+chr1	300	301	chr1	175	375
+chr1	100000	100010	chr1	175	375
+chr1	100020	100040	chr1	175	375
+chr2	1	10	.	-1	-1
+chr2	20	30	.	-1	-1" > exp
+$BT closest -a close-a.bed -b close-b.bed -t last > obs
+check obs exp
+rm obs exp
+
+###########################################################
+# test reproting of no overlapping feature
+###########################################################
+echo "    closest.t12...\c"
+echo \
+"chr1	100	101	chr1	150	201
+chr1	200	201	chr1	100	101
+chr1	300	301	chr1	150	201
+chr1	100000	100010	chr1	175	375
+chr1	100020	100040	chr1	175	375
+chr2	1	10	.	-1	-1
+chr2	20	30	.	-1	-1" > exp
+$BT closest -a close-a.bed -b close-b.bed -io > obs
+check obs exp
+rm obs exp
-- 
GitLab