1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2007 Novell, Inc. (http://www.novell.com)
23 // Carlos Alberto Cortez <calberto.cortez@gmail.com>
28 using System.Windows.Forms;
29 using NUnit.Framework;
31 namespace MonoTests.System.Windows.Forms
34 public class ColumnHeaderTest : TestHelper
37 protected override void SetUp ()
44 public void DefaultValuesTest ()
46 ColumnHeader col = new ColumnHeader ();
48 Assert.IsNull (col.ListView, "1");
49 Assert.AreEqual (-1, col.Index, "2");
50 Assert.AreEqual ("ColumnHeader", col.Text, "3");
51 Assert.AreEqual (HorizontalAlignment.Left, col.TextAlign, "4");
52 Assert.AreEqual (-1, col.DisplayIndex, "5");
53 Assert.AreEqual (-1, col.ImageIndex, "6");
54 Assert.AreEqual (String.Empty, col.ImageKey, "7");
55 Assert.IsNull (col.ImageList, "8");
56 Assert.AreEqual (String.Empty, col.Name, "9");
57 Assert.IsNull (col.Tag, "10");
61 public void DisplayIndex_ListView_Created ()
63 ColumnHeader colA = new ColumnHeader ();
64 ColumnHeader colB = new ColumnHeader ();
65 ColumnHeader colC = new ColumnHeader ();
66 ColumnHeader colD = new ColumnHeader ();
67 colA.DisplayIndex = 2;
68 colD.DisplayIndex = 0;
69 colB.DisplayIndex = 3;
70 colC.DisplayIndex = 1;
72 Form form = new Form ();
73 form.ShowInTaskbar = false;
74 ListView lv = new ListView ();
75 lv.ColumnReordered += new ColumnReorderedEventHandler (ColumnReordered);
76 lv.View = View.Details;
77 lv.Columns.Add (colA);
78 lv.Columns.Add (colB);
79 lv.Columns.Add (colC);
80 form.Controls.Add (lv);
83 Assert.AreEqual (0, colA.DisplayIndex, "#A1");
84 Assert.AreEqual (1, colB.DisplayIndex, "#A2");
85 Assert.AreEqual (2, colC.DisplayIndex, "#A3");
86 Assert.AreEqual (0, colD.DisplayIndex, "#A4");
87 Assert.AreEqual (0, columnReordered, "#A5");
89 colC.DisplayIndex = 0;
90 Assert.AreEqual (1, colA.DisplayIndex, "#B1");
91 Assert.AreEqual (2, colB.DisplayIndex, "#B2");
92 Assert.AreEqual (0, colC.DisplayIndex, "#B3");
93 Assert.AreEqual (0, colD.DisplayIndex, "#B4");
94 Assert.AreEqual (0, columnReordered, "#B5");
96 colC.DisplayIndex = 2;
97 Assert.AreEqual (0, colA.DisplayIndex, "#C1");
98 Assert.AreEqual (1, colB.DisplayIndex, "#C2");
99 Assert.AreEqual (2, colC.DisplayIndex, "#C3");
100 Assert.AreEqual (0, colD.DisplayIndex, "#C4");
101 Assert.AreEqual (0, columnReordered, "#C5");
103 colB.DisplayIndex = 2;
104 Assert.AreEqual (0, colA.DisplayIndex, "#D1");
105 Assert.AreEqual (2, colB.DisplayIndex, "#D2");
106 Assert.AreEqual (1, colC.DisplayIndex, "#D3");
107 Assert.AreEqual (0, colD.DisplayIndex, "#D4");
108 Assert.AreEqual (0, columnReordered, "#D5");
110 colD.DisplayIndex = 1;
111 lv.Columns.Add (colD);
113 Assert.AreEqual (0, colA.DisplayIndex, "#E1");
114 Assert.AreEqual (2, colB.DisplayIndex, "#E2");
115 Assert.AreEqual (1, colC.DisplayIndex, "#E3");
116 Assert.AreEqual (3, colD.DisplayIndex, "#E4");
117 Assert.AreEqual (0, columnReordered, "#E5");
123 public void DisplayIndex_ListView_Disposed ()
125 ListView lv = new ListView ();
126 lv.View = View.Details;
127 ColumnHeader colA = new ColumnHeader ();
128 lv.Columns.Add (colA);
129 ColumnHeader colB = new ColumnHeader ();
130 lv.Columns.Add (colB);
131 ColumnHeader colC = new ColumnHeader ();
132 lv.Columns.Add (colC);
133 Assert.AreEqual (0, colA.DisplayIndex, "#A1");
134 Assert.AreEqual (1, colB.DisplayIndex, "#A2");
135 Assert.AreEqual (2, colC.DisplayIndex, "#A3");
136 colA.DisplayIndex = 2;
137 lv.Columns.Remove (colB);
139 Assert.AreEqual (1, colA.DisplayIndex, "#B1");
140 Assert.AreEqual (-1, colB.DisplayIndex, "#B2");
141 Assert.AreEqual (0, colC.DisplayIndex, "#B3");
142 colA.DisplayIndex = 255;
143 Assert.AreEqual (255, colA.DisplayIndex, "#C1");
144 Assert.AreEqual (-1, colB.DisplayIndex, "#C2");
145 Assert.AreEqual (0, colC.DisplayIndex, "#C3");
149 public void DisplayIndex_ListView_NotCreated ()
151 ColumnHeader colA = new ColumnHeader ();
152 colA.DisplayIndex = -66;
153 Assert.AreEqual (-66, colA.DisplayIndex, "#A1");
154 colA.DisplayIndex = 66;
155 Assert.AreEqual (66, colA.DisplayIndex, "#A2");
157 ColumnHeader colB = new ColumnHeader ();
158 colB.DisplayIndex = 0;
159 Assert.AreEqual (0, colB.DisplayIndex, "#A3");
161 ColumnHeader colC = new ColumnHeader ();
162 colC.DisplayIndex = 1;
163 Assert.AreEqual (1, colC.DisplayIndex, "#A4");
165 ListView lv = new ListView ();
166 lv.ColumnReordered += new ColumnReorderedEventHandler (ColumnReordered);
167 lv.View = View.Details;
168 lv.Columns.Add (colA);
169 lv.Columns.Add (colB);
170 lv.Columns.Add (colC);
173 colA.DisplayIndex = -1;
175 } catch (ArgumentOutOfRangeException ex) {
176 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
177 Assert.IsNull (ex.InnerException, "#B3");
178 Assert.IsNotNull (ex.Message, "#B4");
179 Assert.IsNotNull (ex.ParamName, "#B5");
180 Assert.AreEqual ("DisplayIndex", ex.ParamName, "#B6");
184 colA.DisplayIndex = lv.Columns.Count;
186 } catch (ArgumentOutOfRangeException ex) {
187 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
188 Assert.IsNull (ex.InnerException, "#C3");
189 Assert.IsNotNull (ex.Message, "#C4");
190 Assert.IsNotNull (ex.ParamName, "#C5");
191 Assert.AreEqual ("DisplayIndex", ex.ParamName, "#C6");
194 Assert.AreEqual (0, colA.DisplayIndex, "#D1");
195 Assert.AreEqual (1, colB.DisplayIndex, "#D2");
196 Assert.AreEqual (2, colC.DisplayIndex, "#D3");
197 Assert.AreEqual (0, columnReordered, "#D4");
201 public void ImageIndex_Invalid ()
203 ColumnHeader col = new ColumnHeader ();
208 } catch (ArgumentOutOfRangeException ex) {
209 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
210 Assert.IsNotNull (ex.Message, "#3");
211 Assert.IsNotNull (ex.ParamName, "#4");
212 Assert.AreEqual ("ImageIndex", ex.ParamName, "#5");
213 Assert.IsNull (ex.InnerException, "#6");
215 Assert.AreEqual (2, col.ImageIndex, "#7");
219 public void ImageKey ()
221 ColumnHeader col = new ColumnHeader ();
222 Assert.AreEqual (string.Empty, col.ImageKey, "#1");
223 col.ImageKey = "test";
224 Assert.AreEqual ("test", col.ImageKey, "#2");
226 Assert.AreEqual (string.Empty, col.ImageKey, "#3");
230 public void ImageKeyAndImageIndexInteraction ()
232 ColumnHeader col = new ColumnHeader ();
234 Assert.AreEqual (1, col.ImageIndex, "#A1");
235 Assert.AreEqual (string.Empty, col.ImageKey, "#A2");
236 col.ImageKey = "test";
237 Assert.AreEqual (-1, col.ImageIndex, "#B1");
238 Assert.AreEqual ("test", col.ImageKey, "#B2");
240 Assert.AreEqual (2, col.ImageIndex, "#C1");
241 Assert.AreEqual (string.Empty, col.ImageKey, "#C2");
243 Assert.AreEqual (-1, col.ImageIndex, "#D1");
244 Assert.AreEqual (string.Empty, col.ImageKey, "#D2");
248 public void ImageList ()
250 ColumnHeader col = new ColumnHeader ();
251 Assert.IsNull (col.ImageList, "#1");
253 ListView lv = new ListView ();
254 lv.View = View.Details;
255 ImageList small = new ImageList ();
256 lv.SmallImageList = small;
257 ImageList large = new ImageList ();
258 lv.LargeImageList = large;
259 lv.Columns.Add (col);
260 Assert.IsNotNull (col.ImageList, "#2");
261 Assert.AreSame (small, col.ImageList, "#3");
265 public void ImageList_ListView_Disposed ()
267 ListView lv = new ListView ();
268 lv.View = View.Details;
269 ImageList small = new ImageList ();
270 lv.SmallImageList = small;
271 ImageList large = new ImageList ();
272 lv.LargeImageList = large;
273 ColumnHeader col = new ColumnHeader ();
274 lv.Columns.Add (col);
276 Assert.IsNull (col.ImageList);
280 public void Index_ListView_Disposed ()
282 ListView lv = new ListView ();
283 lv.View = View.Details;
284 ColumnHeader colA = new ColumnHeader ();
285 lv.Columns.Add (colA);
286 ColumnHeader colB = new ColumnHeader ();
287 lv.Columns.Add (colB);
289 Assert.AreEqual (-1, colA.Index, "#1");
290 Assert.AreEqual (-1, colB.Index, "#2");
296 ColumnHeader col = new ColumnHeader ();
297 Assert.AreEqual (string.Empty, col.Name, "#1");
298 col.Name = "Address";
299 Assert.AreEqual ("Address", col.Name, "#2");
301 Assert.AreEqual (string.Empty, col.Name, "#3");
307 ColumnHeader col = new ColumnHeader ();
308 Assert.IsNull (col.Tag, "#1");
309 col.Tag = "whatever";
310 Assert.AreEqual ("whatever", col.Tag, "#2");
312 Assert.IsNull (col.Tag, "#3");
316 public void Text_ListView_Disposed ()
318 ListView lv = new ListView ();
319 lv.View = View.Details;
320 ColumnHeader col = new ColumnHeader ();
321 lv.Columns.Add (col);
323 col.Text = "whatever";
324 Assert.AreEqual ("whatever", col.Text);
328 public void TextAlign_ListView_Disposed ()
330 ListView lv = new ListView ();
331 lv.View = View.Details;
332 ColumnHeader col = new ColumnHeader ();
333 lv.Columns.Add (col);
335 col.TextAlign = HorizontalAlignment.Right;
336 Assert.AreEqual (HorizontalAlignment.Right, col.TextAlign);
340 public void ToStringTest ()
342 ListView lv = new ListView ();
343 lv.SmallImageList = new ImageList ();
344 ColumnHeader col = new ColumnHeader ();
345 col.DisplayIndex = 3;
347 col.Name = "address_col";
348 col.Tag = DateTime.Now;
349 col.Text = "Address";
350 col.TextAlign = HorizontalAlignment.Right;
352 lv.Columns.Add (col);
353 Assert.AreEqual ("ColumnHeader: Text: Address", col.ToString ());
357 [Category ("NotWorking")]
358 public void WidthDefault ()
360 ColumnHeader col = new ColumnHeader ();
361 Assert.AreEqual (60, col.Width);
365 public void WidthTest ()
367 ColumnHeader col = new ColumnHeader ();
368 col.Text = "Column text";
370 ListView lv = new ListView ();
371 lv.Items.Add ("Item text");
372 lv.View = View.Details;
373 lv.Columns.Add (col);
377 Assert.IsTrue (col.Width > 0, "#1");
380 Assert.IsTrue (col.Width > 0, "#2");
382 bool eventRaised = false;
383 lv.ColumnWidthChanged += delegate (object sender, ColumnWidthChangedEventArgs e) {
384 Assert.AreEqual (e.ColumnIndex, 0, "#3");
388 Assert.IsTrue (eventRaised, "#4");
392 public void Width_ListView_Disposed ()
394 ListView lv = new ListView ();
395 lv.View = View.Details;
396 ColumnHeader col = new ColumnHeader ();
397 lv.Columns.Add (col);
400 Assert.AreEqual (10, col.Width);
403 // Ensure the last column is using all the free space to the right
405 public void Width_AutoResize_Expand ()
407 ListView lv = new ListView ();
409 lv.View = View.Details;
410 ColumnHeader col1 = new ColumnHeader ("One");
411 ColumnHeader col2 = new ColumnHeader ("Two");
412 lv.Columns.AddRange (new ColumnHeader [] { col1, col2 });
417 Assert.AreEqual (10, col1.Width, "#A1");
418 Assert.AreEqual (10, col2.Width, "#A2");
420 // Need to create the handle in order to actually use the auto size feature
424 Assert.AreEqual (true, col2.Width == lv.ClientRectangle.Width - col1.Width, "#B1");
427 public void ColumnReordered (object sender, ColumnReorderedEventArgs e)
432 private int columnReordered;