2 // Copyright (C) 2005-2007 Novell, Inc (http://www.novell.com)
\r
4 // Permission is hereby granted, free of charge, to any person obtaining
\r
5 // a copy of this software and associated documentation files (the
\r
6 // "Software"), to deal in the Software without restriction, including
\r
7 // without limitation the rights to use, copy, modify, merge, publish,
\r
8 // distribute, sublicense, and/or sell copies of the Software, and to
\r
9 // permit persons to whom the Software is furnished to do so, subject to
\r
10 // the following conditions:
\r
12 // The above copyright notice and this permission notice shall be
\r
13 // included in all copies or substantial portions of the Software.
\r
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
16 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
17 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
18 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
19 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
20 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
21 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
25 // Jordi Mas i Hernandez (jordi@ximian.com)
\r
26 // Sebastien Pouliot <sebastien@ximian.com>
\r
30 using System.Drawing;
\r
31 using System.Drawing.Imaging;
\r
32 using System.Runtime.InteropServices;
\r
33 using System.Security.Permissions;
\r
34 using NUnit.Framework;
\r
36 namespace MonoTests.System.Drawing.Imaging {
\r
39 [SecurityPermission (SecurityAction.Deny, UnmanagedCode = true)]
\r
40 public class ColorMatrixTest {
\r
43 [ExpectedException (typeof (NullReferenceException))]
\r
44 public void Constructor_Null ()
\r
46 new ColorMatrix (null);
\r
50 [ExpectedException (typeof (IndexOutOfRangeException))]
\r
51 public void Constructor_TooSmallArraySize ()
\r
53 new ColorMatrix (new float[][] { });
\r
57 [ExpectedException (typeof (IndexOutOfRangeException))]
\r
58 public void Constructor_TooWideArraySize ()
\r
60 new ColorMatrix (new float[][] {
\r
61 new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f }
\r
66 [ExpectedException (typeof (IndexOutOfRangeException))]
\r
67 public void Constructor_TooTallArraySize ()
\r
69 new ColorMatrix (new float[][] {
\r
70 new float[] { 0.0f },
\r
71 new float[] { 1.0f },
\r
72 new float[] { 2.0f },
\r
73 new float[] { 3.0f },
\r
74 new float[] { 4.0f },
\r
75 new float[] { 5.0f }
\r
80 public void Constructor_TooBigArraySize ()
\r
82 ColorMatrix cm = new ColorMatrix (new float[][] {
\r
83 new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f },
\r
84 new float[] { 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f },
\r
85 new float[] { 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f },
\r
86 new float[] { 3.0f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f },
\r
87 new float[] { 4.0f, 4.1f, 4.2f, 4.3f, 4.4f, 4.5f },
\r
88 new float[] { 5.0f, 5.1f, 5.2f, 5.3f, 5.4f, 5.5f }
\r
91 Assert.AreEqual (0.0f, cm.Matrix00, "00");
\r
92 Assert.AreEqual (0.1f, cm.Matrix01, "01");
\r
93 Assert.AreEqual (0.2f, cm.Matrix02, "02");
\r
94 Assert.AreEqual (0.3f, cm.Matrix03, "03");
\r
95 Assert.AreEqual (0.4f, cm.Matrix04, "04");
\r
96 Assert.AreEqual (1.0f, cm.Matrix10, "10");
\r
97 Assert.AreEqual (1.1f, cm.Matrix11, "11");
\r
98 Assert.AreEqual (1.2f, cm.Matrix12, "12");
\r
99 Assert.AreEqual (1.3f, cm.Matrix13, "13");
\r
100 Assert.AreEqual (1.4f, cm.Matrix14, "14");
\r
101 Assert.AreEqual (2.0f, cm.Matrix20, "20");
\r
102 Assert.AreEqual (2.1f, cm.Matrix21, "21");
\r
103 Assert.AreEqual (2.2f, cm.Matrix22, "22");
\r
104 Assert.AreEqual (2.3f, cm.Matrix23, "23");
\r
105 Assert.AreEqual (2.4f, cm.Matrix24, "24");
\r
106 Assert.AreEqual (3.0f, cm.Matrix30, "30");
\r
107 Assert.AreEqual (3.1f, cm.Matrix31, "31");
\r
108 Assert.AreEqual (3.2f, cm.Matrix32, "32");
\r
109 Assert.AreEqual (3.3f, cm.Matrix33, "33");
\r
110 Assert.AreEqual (3.4f, cm.Matrix34, "34");
\r
111 Assert.AreEqual (4.0f, cm.Matrix40, "40");
\r
112 Assert.AreEqual (4.1f, cm.Matrix41, "41");
\r
113 Assert.AreEqual (4.2f, cm.Matrix42, "42");
\r
114 Assert.AreEqual (4.3f, cm.Matrix43, "43");
\r
115 Assert.AreEqual (4.4f, cm.Matrix44, "44");
\r
119 [ExpectedException (typeof (IndexOutOfRangeException))]
\r
120 public void TooBigItems ()
\r
122 ColorMatrix cm = new ColorMatrix (new float[][] {
\r
123 new float[] { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f },
\r
124 new float[] { 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f },
\r
125 new float[] { 2.0f, 2.1f, 2.2f, 2.3f, 2.4f, 2.5f },
\r
126 new float[] { 3.0f, 3.1f, 3.2f, 3.3f, 3.4f, 3.5f },
\r
127 new float[] { 4.0f, 4.1f, 4.2f, 4.3f, 4.4f, 4.5f },
\r
128 new float[] { 5.0f, 5.1f, 5.2f, 5.3f, 5.4f, 5.5f }
\r
130 Assert.AreEqual (5.5f, cm[5,5], "out");
\r
134 public void DefaultConstructor ()
\r
136 ColorMatrix cm = new ColorMatrix ();
\r
138 Assert.AreEqual (1, cm.Matrix00, "0,0");
\r
139 Assert.AreEqual (1, cm.Matrix11, "1,1");
\r
140 Assert.AreEqual (1, cm.Matrix22, "2,2");
\r
141 Assert.AreEqual (1, cm.Matrix33, "3,3");
\r
142 Assert.AreEqual (1, cm.Matrix44, "4,4");
\r
143 Assert.AreEqual (0, cm.Matrix01, "0,1");
\r
144 Assert.AreEqual (0, cm.Matrix02, "0,2");
\r
145 Assert.AreEqual (0, cm.Matrix03, "0,3");
\r
146 Assert.AreEqual (0, cm.Matrix04, "0,4");
\r
147 Assert.AreEqual (0, cm.Matrix10, "1,0");
\r
148 Assert.AreEqual (0, cm.Matrix12, "1,2");
\r
149 Assert.AreEqual (0, cm.Matrix13, "1,3");
\r
150 Assert.AreEqual (0, cm.Matrix14, "1,4");
\r
151 Assert.AreEqual (0, cm.Matrix20, "2,0");
\r
152 Assert.AreEqual (0, cm.Matrix21, "2,1");
\r
153 Assert.AreEqual (0, cm.Matrix23, "2,3");
\r
154 Assert.AreEqual (0, cm.Matrix24, "2,4");
\r
155 Assert.AreEqual (0, cm.Matrix30, "3,0");
\r
156 Assert.AreEqual (0, cm.Matrix31, "3,1");
\r
157 Assert.AreEqual (0, cm.Matrix32, "3,2");
\r
158 Assert.AreEqual (0, cm.Matrix34, "3,4");
\r
159 Assert.AreEqual (0, cm.Matrix40, "4,0");
\r
160 Assert.AreEqual (0, cm.Matrix41, "4,1");
\r
161 Assert.AreEqual (0, cm.Matrix42, "4,2");
\r
162 Assert.AreEqual (0, cm.Matrix43, "4,3");
\r
163 Assert.AreEqual (100, Marshal.SizeOf (cm), "object");
\r
164 Assert.AreEqual (100, Marshal.SizeOf (typeof (ColorMatrix)), "type");
\r
168 public void ConstructorArrayAndMethods ()
\r
170 ColorMatrix cm = new ColorMatrix (new float[][] {
\r
171 new float[] {0.393f, 0.349f, 0.272f, 0, 0},
\r
172 new float[] {0.769f, 0.686f, 0.534f, 0, 0},
\r
173 new float[] {0.189f, 0.168f, 0.131f, 0, 0},
\r
174 new float[] { 0, 0, 0, 1, 0},
\r
175 new float[] { 0, 0, 0, 0, 1}
\r
178 Assert.AreEqual (0.393f, cm.Matrix00, "00");
\r
179 Assert.AreEqual (0.349f, cm.Matrix01, "01");
\r
180 Assert.AreEqual (0.272f, cm.Matrix02, "02");
\r
181 Assert.AreEqual (0, cm.Matrix03, "03");
\r
182 Assert.AreEqual (0, cm.Matrix04, "04");
\r
184 Assert.AreEqual (0.769f, cm.Matrix10, "10");
\r
185 Assert.AreEqual (0.686f, cm.Matrix11, "11");
\r
186 Assert.AreEqual (0.534f, cm.Matrix12, "12");
\r
187 Assert.AreEqual (0, cm.Matrix13, "13");
\r
188 Assert.AreEqual (0, cm.Matrix14, "14");
\r
190 Assert.AreEqual (0.189f, cm.Matrix20, "20");
\r
191 Assert.AreEqual (0.168f, cm.Matrix21, "21");
\r
192 Assert.AreEqual (0.131f, cm.Matrix22, "22");
\r
193 Assert.AreEqual (0, cm.Matrix23, "23");
\r
194 Assert.AreEqual (0, cm.Matrix24, "24");
\r
196 Assert.AreEqual (0, cm.Matrix30, "30");
\r
197 Assert.AreEqual (0, cm.Matrix31, "31");
\r
198 Assert.AreEqual (0, cm.Matrix32, "32");
\r
199 Assert.AreEqual (1, cm.Matrix33, "33");
\r
200 Assert.AreEqual (0, cm.Matrix34, "34");
\r
202 Assert.AreEqual (0, cm.Matrix40, "40");
\r
203 Assert.AreEqual (0, cm.Matrix41, "41");
\r
204 Assert.AreEqual (0, cm.Matrix42, "42");
\r
205 Assert.AreEqual (0, cm.Matrix43, "43");
\r
206 Assert.AreEqual (1, cm.Matrix44, "44");
\r
210 public void IndexerProperty ()
\r
212 ColorMatrix cm = new ColorMatrix (new float[][] {
\r
213 new float[] {1, 0, 0, 0, 0},
\r
214 new float[] {0.5f, 1, 0, 0, 0},
\r
215 new float[] {0, 0.1f, 1.5f, 0, 0},
\r
216 new float[] {0.5f, 3, 0.5f, 1, 0},
\r
217 new float[] {0, 0, 0, 0, 0}
\r
220 Assert.AreEqual (1, cm[0,0], "0,0");
\r
221 Assert.AreEqual (0, cm[0,1], "0,1");
\r
222 Assert.AreEqual (0, cm[0,2], "0,2");
\r
223 Assert.AreEqual (0, cm[0,3], "0,3");
\r
224 Assert.AreEqual (0, cm[0,4], "0,4");
\r
226 Assert.AreEqual (0.5f, cm[1,0], "1,0");
\r
227 Assert.AreEqual (1, cm[1,1], "1,1");
\r
228 Assert.AreEqual (0, cm[1,2], "1,2");
\r
229 Assert.AreEqual (0, cm[1,3], "1,3");
\r
230 Assert.AreEqual (0, cm[1,4], "1,4");
\r
232 Assert.AreEqual (0, cm[2,0], "2,0");
\r
233 Assert.AreEqual (0.1f, cm[2,1], "2,1");
\r
234 Assert.AreEqual (1.5f, cm[2,2], "2,2");
\r
235 Assert.AreEqual (0, cm[2,3], "2,3");
\r
236 Assert.AreEqual (0, cm[2,4], "2,4");
\r
238 Assert.AreEqual (0.5f, cm[3,0], "3,0");
\r
239 Assert.AreEqual (3, cm[3,1], "3,1");
\r
240 Assert.AreEqual (0.5f, cm[3,2], "3,2");
\r
241 Assert.AreEqual (1, cm[3,3], "3,3");
\r
242 Assert.AreEqual (0, cm[3,4], "3,4");
\r
244 Assert.AreEqual (0, cm[4,0], "4,0");
\r
245 Assert.AreEqual (0, cm[4,1], "4,1");
\r
246 Assert.AreEqual (0, cm[4,2], "4,2");
\r
247 Assert.AreEqual (0, cm[4,3], "4,3");
\r
248 Assert.AreEqual (0, cm[4,4], "4,4");
\r
252 public void IndividualProperties ()
\r
254 ColorMatrix cm = new ColorMatrix (new float[][] {
\r
255 new float[] {1, 0, 0, 0, 0},
\r
256 new float[] {0.5f, 1, 0, 0, 0},
\r
257 new float[] {0, 0.1f, 1.5f, 0, 0},
\r
258 new float[] {0.5f, 3, 0.5f, 1, 0},
\r
259 new float[] {0, 0, 0, 0, 0}
\r
262 Assert.AreEqual (1, cm.Matrix00, "0,0");
\r
263 Assert.AreEqual (0, cm.Matrix01, "0,1");
\r
264 Assert.AreEqual (0, cm.Matrix02, "0,2");
\r
265 Assert.AreEqual (0, cm.Matrix03, "0,3");
\r
266 Assert.AreEqual (0, cm.Matrix04, "0,4");
\r
268 Assert.AreEqual (0.5f, cm.Matrix10, "1,0");
\r
269 Assert.AreEqual (1, cm.Matrix11, "1,1");
\r
270 Assert.AreEqual (0, cm.Matrix12, "1,2");
\r
271 Assert.AreEqual (0, cm.Matrix13, "1,3");
\r
272 Assert.AreEqual (0, cm.Matrix14, "1,4");
\r
274 Assert.AreEqual (0, cm.Matrix20, "2,0");
\r
275 Assert.AreEqual (0.1f, cm.Matrix21, "2,1");
\r
276 Assert.AreEqual (1.5f, cm.Matrix22, "2,2");
\r
277 Assert.AreEqual (0, cm.Matrix23, "2,3");
\r
278 Assert.AreEqual (0, cm.Matrix24, "2,4");
\r
280 Assert.AreEqual (0.5f, cm.Matrix30, "3,0");
\r
281 Assert.AreEqual (3, cm.Matrix31, "3,1");
\r
282 Assert.AreEqual (0.5f, cm.Matrix32, "3,2");
\r
283 Assert.AreEqual (1, cm.Matrix33, "3,3");
\r
284 Assert.AreEqual (0, cm.Matrix34, "3,4");
\r
286 Assert.AreEqual (0, cm.Matrix40, "4,0");
\r
287 Assert.AreEqual (0, cm.Matrix41, "4,1");
\r
288 Assert.AreEqual (0, cm.Matrix42, "4,2");
\r
289 Assert.AreEqual (0, cm.Matrix43, "4,3");
\r
290 Assert.AreEqual (0, cm.Matrix44, "4,4");
\r