Skip to content

Commit 2c144cb

Browse files
committed
Update buffer CopyOverlapFrom overlap checks and fixed BufferTests
1 parent f9cbe67 commit 2c144cb

File tree

2 files changed

+40
-30
lines changed

2 files changed

+40
-30
lines changed

isis/src/base/objs/Buffer/Buffer.cpp

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -333,14 +333,14 @@ namespace Isis {
333333

334334
// If one rectangle is on left side of other
335335
// if (l1.x > r2.x || l2.x > r1.x)
336-
if (p_line > in.p_line + in.p_nlines ||
337-
in.p_line > p_line + p_nlines)
336+
if (p_line >= in.p_line + in.p_nlines ||
337+
in.p_line >= p_line + p_nlines)
338338
isSubareaOfIn = false;
339339

340340
// If one rectangle is above other
341341
// if (r1.y > l2.y || r2.y > l1.y)
342-
if (p_sample + p_nsamps < in.p_sample ||
343-
in.p_sample + in.p_nsamps < p_sample)
342+
if (p_sample >= in.p_sample + in.p_nsamps ||
343+
in.p_sample >= p_sample + p_nsamps)
344344
isSubareaOfIn = false;
345345

346346
if (isSubareaOfIn) {
@@ -387,24 +387,6 @@ namespace Isis {
387387
}
388388
}
389389

390-
isSubareaOfIn = (p_npixels <= in.size());
391-
isSubareaOfIn &= (p_sample >= in.p_sample);
392-
isSubareaOfIn &= (p_line >= in.p_line);
393-
isSubareaOfIn &= (p_band >= in.p_band);
394-
395-
int endSample = p_sample + p_nsamps - 1;
396-
int otherEndSample = in.p_sample + in.p_nsamps - 1;
397-
398-
int endLine = p_line + p_nlines - 1;
399-
int otherEndLine = in.p_line + in.p_nlines - 1;
400-
401-
int endBand = p_band + p_nbands - 1;
402-
int otherEndBand = in.p_band + in.p_nbands - 1;
403-
404-
isSubareaOfIn &= (endSample <= otherEndSample);
405-
isSubareaOfIn &= (endLine <= otherEndLine);
406-
isSubareaOfIn &= (endBand <= otherEndBand);
407-
408390
return isSubareaOfIn;
409391
}
410392

isis/tests/BufferTests.cpp

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,17 +126,17 @@ TEST(BufferTest, TestBufferOutOfBound) {
126126
}
127127
}
128128

129-
TEST(BufferTest, TestBufferScale) {
129+
TEST(BufferTest, TestBufferScaleSmallToBig) {
130130
Buffer b(4, 3, 2, Isis::SignedInteger, 0.5);
131131

132132
EXPECT_EQ(b.SampleDimension(), 4);
133133
EXPECT_EQ(b.LineDimension(), 3);
134134
EXPECT_EQ(b.BandDimension(), 2);
135135

136136
EXPECT_EQ(b.SampleDimensionScaled(), 2);
137-
EXPECT_EQ(b.LineDimensionScaled(), 1);
137+
EXPECT_EQ(b.LineDimensionScaled(), 2);
138138

139-
EXPECT_EQ(b.size(), 4);
139+
EXPECT_EQ(b.size(), 8);
140140

141141
for(int i = 0; i < b.size(); i++) {
142142
b[i] = i;
@@ -146,12 +146,40 @@ TEST(BufferTest, TestBufferScale) {
146146
d.CopyOverlapFrom(b);
147147
std::vector<int> truthBuffer = {0, 0, 1, 1,
148148
0, 0, 1, 1,
149-
0, 0, 1, 1,
150-
// Second band
151149
2, 2, 3, 3,
152-
2, 2, 3, 3,
153-
2, 2, 3, 3};
154-
for (int i = 0; i < truthBuffer.size(); i++) {
150+
// Second band
151+
4, 4, 5, 5,
152+
4, 4, 5, 5,
153+
6, 6, 7, 7};
154+
for (int i = 0; i < d.size(); i++) {
155+
EXPECT_EQ(truthBuffer[i], d[i]);
156+
}
157+
}
158+
159+
TEST(BufferTest, TestBufferScaleBigToSmall) {
160+
Buffer b(4, 3, 2, Isis::SignedInteger, 1);
161+
162+
EXPECT_EQ(b.SampleDimension(), 4);
163+
EXPECT_EQ(b.LineDimension(), 3);
164+
EXPECT_EQ(b.BandDimension(), 2);
165+
166+
EXPECT_EQ(b.SampleDimensionScaled(), 4);
167+
EXPECT_EQ(b.LineDimensionScaled(), 3);
168+
169+
EXPECT_EQ(b.size(), 24);
170+
171+
for(int i = 0; i < b.size(); i++) {
172+
b[i] = i;
173+
}
174+
175+
Buffer d(4, 3, 2, Isis::SignedInteger, 0.5);
176+
d.CopyOverlapFrom(b);
177+
std::vector<int> truthBuffer = {4, 6,
178+
8, 10,
179+
// Second band
180+
16, 18,
181+
20, 22,};
182+
for (int i = 0; i < d.size(); i++) {
155183
EXPECT_EQ(truthBuffer[i], d[i]);
156184
}
157185
}

0 commit comments

Comments
 (0)