Skip to content

Commit 6bb6da5

Browse files
committed
Replaced Tuple<int, int> with IntegerSegment struct; updated tests
1 parent 7de8db0 commit 6bb6da5

7 files changed

Lines changed: 364 additions & 261 deletions

File tree

Src/ScreenGrid.Models.Tests/FlatImageTests.cs

Lines changed: 1 addition & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void FindBordersTest()
5454
{
5555
var stripe = flatImage.GetHorizontalStripe(iy);
5656
var derivative = FlatImage.GetDerivative(stripe);
57-
var segments = FlatImage.FindZeroSegments(derivative, minimalSegmentLength);
57+
var segments = IntegerSegmentUtils.FindZeroSegments(derivative, minimalSegmentLength);
5858

5959
Assert.AreEqual(2, segments.Count, String.Format("iy={0}", iy));
6060
}
@@ -73,120 +73,6 @@ public void FindBoundingsOfInnerImage()
7373
Assert.AreEqual(28, result.Height);
7474
}
7575

76-
[Test]
77-
public void FindZeroSegmentsTest1()
78-
{
79-
var array = new UInt32[] { 1, 0, 0, 0, 0, 0, 1, 2, 1, 0, 3, 4, 0, 3, 5 };
80-
var result = FlatImage.FindZeroSegments(array, 4);
81-
Assert.AreEqual(1, result.Count);
82-
Assert.AreEqual(1, result[0].Item1);
83-
Assert.AreEqual(5, result[0].Item2);
84-
}
85-
86-
[Test]
87-
public void FindZeroSegmentsTestThreeSegments()
88-
{
89-
var array = new UInt32[] { 1, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 3, 4, 0, 0, 3, 0, 5 };
90-
var result = FlatImage.FindZeroSegments(array, 2);
91-
Assert.AreEqual(3, result.Count);
92-
Assert.AreEqual(1, result[0].Item1);
93-
Assert.AreEqual(5, result[0].Item2);
94-
Assert.AreEqual(9, result[1].Item1);
95-
Assert.AreEqual(10, result[1].Item2);
96-
Assert.AreEqual(13, result[2].Item1);
97-
Assert.AreEqual(14, result[2].Item2);
98-
}
99-
100-
[Test]
101-
public void FindZeroSegmentsTestNoSegments()
102-
{
103-
var array = new UInt32[] { 1, 0, 0, 1, 2, 3 };
104-
var result = FlatImage.FindZeroSegments(array, 3);
105-
Assert.AreEqual(0, result.Count);
106-
}
107-
108-
[Test]
109-
public void FindZeroSegmentsTestShortAllZeroSegment()
110-
{
111-
var array = new UInt32[] { 0, 0, 0, 0, };
112-
var result = FlatImage.FindZeroSegments(array, 4);
113-
Assert.AreEqual(1, result.Count);
114-
Assert.AreEqual(0, result[0].Item1);
115-
Assert.AreEqual(3, result[0].Item2);
116-
}
117-
118-
[Test]
119-
public void FindZeroSegmentsTestAllZeroSegment()
120-
{
121-
var array = new UInt32[] { 0, 0, 0, 0, 0, 0 };
122-
var result = FlatImage.FindZeroSegments(array, 3);
123-
Assert.AreEqual(1, result.Count);
124-
Assert.AreEqual(0, result[0].Item1);
125-
Assert.AreEqual(5, result[0].Item2);
126-
}
127-
128-
[Test]
129-
public void FindZeroSegmentsTestSimpleSegment1()
130-
{
131-
var array = new UInt32[] { 1, 0, 0, 0, 0, 0 };
132-
var result = FlatImage.FindZeroSegments(array, 3);
133-
Assert.AreEqual(1, result.Count);
134-
Assert.AreEqual(1, result[0].Item1);
135-
Assert.AreEqual(5, result[0].Item2);
136-
}
137-
138-
[Test]
139-
public void FindZeroSegmentsTestSimpleSegment2()
140-
{
141-
var array = new UInt32[] { 0, 0, 0, 0, 0, 1 };
142-
var result = FlatImage.FindZeroSegments(array, 3);
143-
Assert.AreEqual(1, result.Count);
144-
Assert.AreEqual(0, result[0].Item1);
145-
Assert.AreEqual(4, result[0].Item2);
146-
}
147-
148-
[Test]
149-
public void IntersectionOfSegmentsFullIntersection()
150-
{
151-
var result = FlatImage.IntersectionOfSegments(
152-
new Tuple<int, int>(1, 2),
153-
new Tuple<int, int>(1, 2));
154-
Assert.AreEqual(new Tuple<int, int>(1, 2), result);
155-
}
156-
157-
[Test]
158-
public void IntersectionOfSegmentsPartialIntersection()
159-
{
160-
var a = new Tuple<int, int>(1, 4);
161-
var b = new Tuple<int, int>(2, 8);
162-
163-
Assert.AreEqual(new Tuple<int, int>(2, 4), FlatImage.IntersectionOfSegments(a, b));
164-
Assert.AreEqual(new Tuple<int, int>(2, 4), FlatImage.IntersectionOfSegments(b, a));
165-
}
166-
167-
[Test]
168-
public void IntersectionOfSegmentsNoIntersection()
169-
{
170-
var result = FlatImage.IntersectionOfSegments(
171-
new Tuple<int, int>(1, 2),
172-
new Tuple<int, int>(4, 5));
173-
Assert.IsNull(result);
174-
}
175-
176-
[Test]
177-
public void IntersectionOfSegments()
178-
{
179-
var result = FlatImage.IntersectionOfSegments(new[]
180-
{
181-
new[] { new Tuple<int, int>(1, 2), new Tuple<int, int>(4, 6) },
182-
new[] { new Tuple<int, int>(1, 2), new Tuple<int, int>(5, 10) },
183-
});
184-
185-
Assert.AreEqual(2, result.Count);
186-
Assert.AreEqual(new Tuple<int, int>(1, 2), result[0]);
187-
Assert.AreEqual(new Tuple<int, int>(5, 6), result[1]);
188-
}
189-
19076
private static FlatImage LoadFlatImageFromResource(string resourceName)
19177
{
19278
FlatImage flatImage;
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
namespace ScreenGrid.Models.Tests
2+
{
3+
using System;
4+
5+
using NUnit.Framework;
6+
7+
[TestFixture]
8+
public class IntegerSegmentTests
9+
{
10+
[Test]
11+
public void IntegerSegmentsAreEqualTest()
12+
{
13+
var a = new IntegerSegment(1, 2);
14+
var b = new IntegerSegment(1, 2);
15+
16+
Assert.IsTrue(a == b);
17+
Assert.AreEqual(a, b);
18+
}
19+
20+
[Test]
21+
public void IntegerSegmentsAreNotEqualTest()
22+
{
23+
var a = new IntegerSegment(1, 2);
24+
var b = new IntegerSegment(3, 5);
25+
26+
Assert.IsTrue(a != b);
27+
Assert.AreNotEqual(a, b);
28+
}
29+
30+
[Test]
31+
public void FindZeroSegmentsTest1()
32+
{
33+
var array = new UInt32[] { 1, 0, 0, 0, 0, 0, 1, 2, 1, 0, 3, 4, 0, 3, 5 };
34+
var result = IntegerSegmentUtils.FindZeroSegments(array, 4);
35+
Assert.AreEqual(1, result.Count);
36+
Assert.AreEqual(1, result[0].Start);
37+
Assert.AreEqual(5, result[0].End);
38+
}
39+
40+
[Test]
41+
public void FindZeroSegmentsTestThreeSegments()
42+
{
43+
var array = new UInt32[] { 1, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 3, 4, 0, 0, 3, 0, 5 };
44+
var result = IntegerSegmentUtils.FindZeroSegments(array, 2);
45+
Assert.AreEqual(3, result.Count);
46+
Assert.AreEqual(1, result[0].Start);
47+
Assert.AreEqual(5, result[0].End);
48+
Assert.AreEqual(9, result[1].Start);
49+
Assert.AreEqual(10, result[1].End);
50+
Assert.AreEqual(13, result[2].Start);
51+
Assert.AreEqual(14, result[2].End);
52+
}
53+
54+
[Test]
55+
public void FindZeroSegmentsTestNoSegments()
56+
{
57+
var array = new UInt32[] { 1, 0, 0, 1, 2, 3 };
58+
var result = IntegerSegmentUtils.FindZeroSegments(array, 3);
59+
Assert.AreEqual(0, result.Count);
60+
}
61+
62+
[Test]
63+
public void FindZeroSegmentsTestShortAllZeroSegment()
64+
{
65+
var array = new UInt32[] { 0, 0, 0, 0, };
66+
var result = IntegerSegmentUtils.FindZeroSegments(array, 4);
67+
Assert.AreEqual(1, result.Count);
68+
Assert.AreEqual(0, result[0].Start);
69+
Assert.AreEqual(3, result[0].End);
70+
}
71+
72+
[Test]
73+
public void FindZeroSegmentsTestAllZeroSegment()
74+
{
75+
var array = new UInt32[] { 0, 0, 0, 0, 0, 0 };
76+
var result = IntegerSegmentUtils.FindZeroSegments(array, 3);
77+
Assert.AreEqual(1, result.Count);
78+
Assert.AreEqual(0, result[0].Start);
79+
Assert.AreEqual(5, result[0].End);
80+
}
81+
82+
[Test]
83+
public void FindZeroSegmentsTestSimpleSegment1()
84+
{
85+
var array = new UInt32[] { 1, 0, 0, 0, 0, 0 };
86+
var result = IntegerSegmentUtils.FindZeroSegments(array, 3);
87+
Assert.AreEqual(1, result.Count);
88+
Assert.AreEqual(1, result[0].Start);
89+
Assert.AreEqual(5, result[0].End);
90+
}
91+
92+
[Test]
93+
public void FindZeroSegmentsTestSimpleSegment2()
94+
{
95+
var array = new UInt32[] { 0, 0, 0, 0, 0, 1 };
96+
var result = IntegerSegmentUtils.FindZeroSegments(array, 3);
97+
Assert.AreEqual(1, result.Count);
98+
Assert.AreEqual(0, result[0].Start);
99+
Assert.AreEqual(4, result[0].End);
100+
}
101+
102+
[Test]
103+
public void IntersectionOfSegmentsFullIntersection()
104+
{
105+
var result = IntegerSegmentUtils.IntersectionOfSegments(
106+
new IntegerSegment(1, 2),
107+
new IntegerSegment(1, 2));
108+
Assert.AreEqual(new IntegerSegment(1, 2), result);
109+
}
110+
111+
[Test]
112+
public void IntersectionOfSegmentsPartialIntersection()
113+
{
114+
var a = new IntegerSegment(1, 4);
115+
var b = new IntegerSegment(2, 8);
116+
117+
Assert.AreEqual(new IntegerSegment(2, 4), IntegerSegmentUtils.IntersectionOfSegments(a, b));
118+
Assert.AreEqual(new IntegerSegment(2, 4), IntegerSegmentUtils.IntersectionOfSegments(b, a));
119+
}
120+
121+
[Test]
122+
public void IntersectionOfSegmentsNoIntersection()
123+
{
124+
var result = IntegerSegmentUtils.IntersectionOfSegments(
125+
new IntegerSegment(1, 2),
126+
new IntegerSegment(4, 5));
127+
Assert.AreEqual(IntegerSegment.Zero, result);
128+
}
129+
130+
[Test]
131+
public void IntersectionOfSegments()
132+
{
133+
var result = IntegerSegmentUtils.IntersectionOfSegments(new[]
134+
{
135+
new[] { new IntegerSegment(1, 2), new IntegerSegment(4, 6) },
136+
new[] { new IntegerSegment(1, 2), new IntegerSegment(5, 10) },
137+
});
138+
139+
Assert.AreEqual(2, result.Count);
140+
Assert.AreEqual(new IntegerSegment(1, 2), result[0]);
141+
Assert.AreEqual(new IntegerSegment(5, 6), result[1]);
142+
}
143+
144+
}
145+
}

Src/ScreenGrid.Models.Tests/ScreenGrid.Models.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
</ItemGroup>
4343
<ItemGroup>
4444
<Compile Include="FlatImageTests.cs" />
45+
<Compile Include="IntegerSegmentTests.cs" />
4546
<Compile Include="Properties\AssemblyInfo.cs" />
4647
<Compile Include="Properties\Resources.Designer.cs">
4748
<AutoGen>True</AutoGen>

0 commit comments

Comments
 (0)