11namespace ScreenGrid . Models . Tests
22{
3- using NUnit . Framework ;
3+ using System ;
4+ using System . Collections . Generic ;
45 using System . Drawing ;
56
7+ using NUnit . Framework ;
8+
69 [ TestFixture ]
710 public class FlatImageTests
811 {
@@ -24,6 +27,112 @@ public void GetHorizontalStripeTest()
2427 Assert . AreEqual ( width , stripeMiddle . Length ) ;
2528 }
2629
30+ [ Test ]
31+ public void GetDerivativeTest ( )
32+ {
33+ var flatImage = LoadFlatImageFromResource ( "ScreenGrid.Models.Tests.Resources.ImageSimple.png" ) ;
34+ var stripeMiddle = flatImage . GetHorizontalStripe ( flatImage . Height / 2 ) ;
35+
36+ var dMiddle = FlatImage . GetDerivative ( stripeMiddle ) ;
37+ Assert . AreEqual ( stripeMiddle . Length , dMiddle . Length ) ;
38+
39+ // Border detection
40+ Assert . AreEqual ( 0 , dMiddle [ 11 ] ) ;
41+ Assert . Greater ( dMiddle [ 12 ] , 0 ) ;
42+ }
43+
44+
45+ [ Test ]
46+ public void FindBordersTest ( )
47+ {
48+ var flatImage = LoadFlatImageFromResource ( "ScreenGrid.Models.Tests.Resources.ImageSimple.png" ) ;
49+
50+ const int minimalSegmentLength = 8 ;
51+ var step = flatImage . Height / 8 ;
52+
53+ var list = new List < Tuple < int , int > > ( ) ;
54+ for ( var iy = minimalSegmentLength + step ; iy < flatImage . Height - ( minimalSegmentLength + step ) ; iy += step )
55+ {
56+ var stripe = flatImage . GetHorizontalStripe ( iy ) ;
57+ var derivative = FlatImage . GetDerivative ( stripe ) ;
58+ var segments = FlatImage . FindZeroSegments ( derivative , minimalSegmentLength ) ;
59+
60+ Assert . AreEqual ( 2 , segments . Count , String . Format ( "iy={0}" , iy ) ) ;
61+ }
62+ }
63+
64+ [ Test ]
65+ public void FindZeroSegmentsTest1 ( )
66+ {
67+ var array = new UInt32 [ ] { 1 , 0 , 0 , 0 , 0 , 0 , 1 , 2 , 1 , 0 , 3 , 4 , 0 , 3 , 5 } ;
68+ var result = FlatImage . FindZeroSegments ( array , 4 ) ;
69+ Assert . AreEqual ( 1 , result . Count ) ;
70+ Assert . AreEqual ( 1 , result [ 0 ] . Item1 ) ;
71+ Assert . AreEqual ( 5 , result [ 0 ] . Item2 ) ;
72+ }
73+
74+ [ Test ]
75+ public void FindZeroSegmentsTestThreeSegments ( )
76+ {
77+ var array = new UInt32 [ ] { 1 , 0 , 0 , 0 , 0 , 0 , 1 , 2 , 1 , 0 , 0 , 3 , 4 , 0 , 0 , 3 , 0 , 5 } ;
78+ var result = FlatImage . FindZeroSegments ( array , 2 ) ;
79+ Assert . AreEqual ( 3 , result . Count ) ;
80+ Assert . AreEqual ( 1 , result [ 0 ] . Item1 ) ;
81+ Assert . AreEqual ( 5 , result [ 0 ] . Item2 ) ;
82+ Assert . AreEqual ( 9 , result [ 1 ] . Item1 ) ;
83+ Assert . AreEqual ( 10 , result [ 1 ] . Item2 ) ;
84+ Assert . AreEqual ( 13 , result [ 2 ] . Item1 ) ;
85+ Assert . AreEqual ( 14 , result [ 2 ] . Item2 ) ;
86+ }
87+
88+ [ Test ]
89+ public void FindZeroSegmentsTestNoSegments ( )
90+ {
91+ var array = new UInt32 [ ] { 1 , 0 , 0 , 1 , 2 , 3 } ;
92+ var result = FlatImage . FindZeroSegments ( array , 3 ) ;
93+ Assert . AreEqual ( 0 , result . Count ) ;
94+ }
95+
96+ [ Test ]
97+ public void FindZeroSegmentsTestShortAllZeroSegment ( )
98+ {
99+ var array = new UInt32 [ ] { 0 , 0 , 0 , 0 , } ;
100+ var result = FlatImage . FindZeroSegments ( array , 4 ) ;
101+ Assert . AreEqual ( 1 , result . Count ) ;
102+ Assert . AreEqual ( 0 , result [ 0 ] . Item1 ) ;
103+ Assert . AreEqual ( 3 , result [ 0 ] . Item2 ) ;
104+ }
105+
106+ [ Test ]
107+ public void FindZeroSegmentsTestAllZeroSegment ( )
108+ {
109+ var array = new UInt32 [ ] { 0 , 0 , 0 , 0 , 0 , 0 } ;
110+ var result = FlatImage . FindZeroSegments ( array , 3 ) ;
111+ Assert . AreEqual ( 1 , result . Count ) ;
112+ Assert . AreEqual ( 0 , result [ 0 ] . Item1 ) ;
113+ Assert . AreEqual ( 5 , result [ 0 ] . Item2 ) ;
114+ }
115+
116+ [ Test ]
117+ public void FindZeroSegmentsTestSimpleSegment1 ( )
118+ {
119+ var array = new UInt32 [ ] { 1 , 0 , 0 , 0 , 0 , 0 } ;
120+ var result = FlatImage . FindZeroSegments ( array , 3 ) ;
121+ Assert . AreEqual ( 1 , result . Count ) ;
122+ Assert . AreEqual ( 1 , result [ 0 ] . Item1 ) ;
123+ Assert . AreEqual ( 5 , result [ 0 ] . Item2 ) ;
124+ }
125+
126+ [ Test ]
127+ public void FindZeroSegmentsTestSimpleSegment2 ( )
128+ {
129+ var array = new UInt32 [ ] { 0 , 0 , 0 , 0 , 0 , 1 } ;
130+ var result = FlatImage . FindZeroSegments ( array , 3 ) ;
131+ Assert . AreEqual ( 1 , result . Count ) ;
132+ Assert . AreEqual ( 0 , result [ 0 ] . Item1 ) ;
133+ Assert . AreEqual ( 4 , result [ 0 ] . Item2 ) ;
134+ }
135+
27136 private static FlatImage LoadFlatImageFromResource ( string resourceName )
28137 {
29138 FlatImage flatImage ;
0 commit comments