2 // MonthCalendarTest.cs: Test case for MonthCalendar
5 // Ritvik Mayank (mritvik@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
12 using System.Reflection;
13 using System.Windows.Forms;
15 using NUnit.Framework;
17 namespace MonoTests.System.Windows.Forms
20 public class MonthCalendarPropertiesTest : MonthCalendar
22 private bool clickRaised;
23 private bool doubleClickRaised;
29 doubleClickRaised = false;
33 public void ClickEventTest ()
35 Click += new EventHandler (OnClickHandler);
36 DoubleClick += new EventHandler (OnDoubleClickHandler);
37 OnClick (EventArgs.Empty);
38 OnDoubleClick (EventArgs.Empty);
40 Assert.IsTrue (clickRaised, "Click event not raised");
41 Assert.IsTrue (doubleClickRaised, "DoubleClick event not raised");
44 void OnDoubleClickHandler (object sender, EventArgs e)
46 doubleClickRaised = true;
49 void OnClickHandler (object sender, EventArgs e)
56 public void DefaultMarginTest ()
58 Assert.AreEqual (DefaultMargin.All, 9, "#01");
64 public class MonthCalendarTest
67 public void MonthCalendarPropertyTest ()
69 Form myfrm = new Form ();
70 myfrm.ShowInTaskbar = false;
71 MonthCalendar myMonthCal1 = new MonthCalendar ();
72 //MonthCalendar myMonthCal2 = new MonthCalendar ();
73 myMonthCal1.Name = "MonthCendar";
74 myMonthCal1.TabIndex = 1;
75 //DateTime myDateTime = new DateTime ();
78 Assert.IsNotNull (myMonthCal1.AnnuallyBoldedDates, "#A-1");
79 myMonthCal1.AddAnnuallyBoldedDate (new DateTime (2005, 09, 01));
80 Assert.IsNotNull (myMonthCal1.AnnuallyBoldedDates, "#A0");
81 Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal1.AnnuallyBoldedDates.GetValue (0), "#A1");
84 Assert.AreEqual ("Window", myMonthCal1.BackColor.Name, "#B1");
85 myMonthCal1.AddBoldedDate (new DateTime (2005, 09, 01));
86 Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal1.BoldedDates.GetValue (0), "#B2");
89 Assert.AreEqual (1, myMonthCal1.CalendarDimensions.Height, "#C1");
90 Assert.AreEqual (1, myMonthCal1.CalendarDimensions.Width, "#C2");
91 Assert.AreEqual (false, myMonthCal1.CalendarDimensions.IsEmpty, "#C3");
94 Assert.AreEqual (Day.Default, myMonthCal1.FirstDayOfWeek, "#F1");
95 myMonthCal1.FirstDayOfWeek = Day.Sunday;
96 Assert.AreEqual (Day.Sunday, myMonthCal1.FirstDayOfWeek, "#F2");
97 Assert.AreEqual ("WindowText", myMonthCal1.ForeColor.Name, "#F3");
100 Assert.AreEqual (new DateTime (9998,12,31), myMonthCal1.MaxDate, "#M1");
101 Assert.AreEqual (7, myMonthCal1.MaxSelectionCount, "#M2");
102 Assert.AreEqual (new DateTime (1753,1,1), myMonthCal1.MinDate, "#M3");
103 myMonthCal1.AddMonthlyBoldedDate (new DateTime (2005, 09, 01));
104 Assert.AreEqual (new DateTime(2005, 09, 01), myMonthCal1.MonthlyBoldedDates.GetValue (0), "#M4");
107 Assert.AreEqual (0, myMonthCal1.ScrollChange, "#S1");
108 myMonthCal1.SelectionStart = new DateTime (2005,09,02);
109 myMonthCal1.SelectionEnd = new DateTime (2005,09,03);
110 Assert.AreEqual (new DateTime (2005,09,03), myMonthCal1.SelectionEnd, "#S2");
111 //Assert.AreEqual (new SelectionRange (new DateTime(2005,09,02), new DateTime(2005,09,03)), myMonthCal1.SelectionRange, "#S3");
112 Assert.AreEqual (new DateTime (2005,09,02), myMonthCal1.SelectionStart, "#S4");
113 Assert.AreEqual (true, myMonthCal1.ShowToday, "#S5");
114 Assert.AreEqual (true, myMonthCal1.ShowTodayCircle, "#S6");
115 Assert.AreEqual (false, myMonthCal1.ShowWeekNumbers, "#S7");
116 // Font dependent. // Assert.AreEqual (153, myMonthCal1.SingleMonthSize.Height, "#S8a");
117 // Font dependent. // Assert.AreEqual (176, myMonthCal1.SingleMonthSize.Width, "#S8b");
118 Assert.AreEqual (null, myMonthCal1.Site, "#S9");
120 Assert.AreEqual ("ActiveCaption", myMonthCal1.TitleBackColor.Name, "#T1");
121 Assert.AreEqual ("ActiveCaptionText", myMonthCal1.TitleForeColor.Name, "#T2");
122 Assert.AreEqual (DateTime.Today, myMonthCal1.TodayDate, "#T3");
123 Assert.AreEqual (false, myMonthCal1.TodayDateSet, "#T4");
124 Assert.AreEqual ("GrayText", myMonthCal1.TrailingForeColor.Name, "#T5");
130 public void MonthCalMaxSelectionCountException ()
132 MonthCalendar myMonthCal1 = new MonthCalendar ();
135 myMonthCal1.MaxSelectionCount = 0; // value is less than 1
138 } catch (ArgumentOutOfRangeException ex) {
139 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
140 Assert.IsNotNull (ex.Message, "#A3");
141 Assert.IsNotNull (ex.ParamName, "#A4");
142 Assert.AreEqual ("MaxSelectionCount", ex.ParamName, "#A5");
143 Assert.IsNull (ex.InnerException, "#A6");
146 } catch (ArgumentException ex) {
147 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
148 Assert.IsNotNull (ex.Message, "#A3");
149 Assert.IsNull (ex.ParamName, "#A4");
150 Assert.IsNull (ex.InnerException, "#A5");
156 public void MonthCalMaxDateException ()
158 MonthCalendar myMonthCal1 = new MonthCalendar ();
161 myMonthCal1.MaxDate = new DateTime (1752, 1, 1, 0, 0, 0, 0); // value is less than min date (01/01/1753)
164 } catch (ArgumentOutOfRangeException ex) {
165 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
166 Assert.IsNotNull (ex.Message, "#A3");
167 Assert.IsNotNull (ex.ParamName, "#A4");
168 Assert.AreEqual ("MaxDate", ex.ParamName, "#A5");
169 Assert.IsNull (ex.InnerException, "#A6");
172 } catch (ArgumentException ex) {
173 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
174 Assert.IsNotNull (ex.Message, "#A3");
175 Assert.IsNull (ex.ParamName, "#A4");
176 Assert.IsNull (ex.InnerException, "#A5");
182 public void MonthCalMinDateException ()
184 MonthCalendar myMonthCal1 = new MonthCalendar ();
187 myMonthCal1.MinDate = new DateTime (1752, 1, 1, 0, 0, 0, 0); // Date earlier than 01/01/1753
190 } catch (ArgumentOutOfRangeException ex) {
191 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
192 Assert.IsNotNull (ex.Message, "#A3");
193 Assert.IsNotNull (ex.ParamName, "#A4");
194 Assert.AreEqual ("MinDate", ex.ParamName, "#A5");
195 Assert.IsNull (ex.InnerException, "#A6");
198 } catch (ArgumentException ex) {
199 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
200 Assert.IsNotNull (ex.Message, "#A3");
201 Assert.IsNull (ex.ParamName, "#A4");
202 Assert.IsNull (ex.InnerException, "#A5");
207 myMonthCal1.MinDate = new DateTime (9999, 12, 31, 0, 0, 0, 0); // Date greater than max date
210 } catch (ArgumentOutOfRangeException ex) {
211 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
212 Assert.IsNotNull (ex.Message, "#B3");
213 Assert.IsNotNull (ex.ParamName, "#B4");
214 Assert.AreEqual ("MinDate", ex.ParamName, "#B5");
215 Assert.IsNull (ex.InnerException, "#B6");
218 } catch (ArgumentException ex) {
219 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
220 Assert.IsNotNull (ex.Message, "#B3");
221 Assert.IsNull (ex.ParamName, "#B4");
222 Assert.IsNull (ex.InnerException, "#B5");
228 [ExpectedException (typeof (ArgumentException))]
229 public void MonthCalSelectRangeException ()
231 MonthCalendar myMonthCal1 = new MonthCalendar ();
232 myMonthCal1.SelectionRange = new SelectionRange (new DateTime (1752, 01, 01), new DateTime (1752, 01, 02));
236 [ExpectedException (typeof (ArgumentException))]
237 public void MonthCalSelectRangeException2 ()
239 MonthCalendar myMonthCal1 = new MonthCalendar ();
240 myMonthCal1.SelectionRange = new SelectionRange (new DateTime (9999, 12, 30), new DateTime (9999, 12, 31));
244 public void AddAnnuallyBoldedDateTest ()
246 Form myForm = new Form ();
247 myForm.ShowInTaskbar = false;
248 MonthCalendar myMonthCal = new MonthCalendar ();
249 myMonthCal.AddAnnuallyBoldedDate (new DateTime (2005, 09, 01));
250 myForm.Controls.Add (myMonthCal);
251 Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal.AnnuallyBoldedDates.GetValue (0), "#add1");
253 DateTime dt = new DateTime (2006, 02, 03, 04, 05, 06, 07);
254 DateTime dt2 = new DateTime (2006, 02, 03);
256 myMonthCal.RemoveAllAnnuallyBoldedDates ();
257 myMonthCal.AddAnnuallyBoldedDate (dt);
258 Assert.AreEqual (dt, myMonthCal.AnnuallyBoldedDates [0], "#add2");
260 myMonthCal.AddAnnuallyBoldedDate (dt2);
261 Assert.AreEqual (dt2, myMonthCal.AnnuallyBoldedDates [1], "#add3");
267 public void RemoveAnnuallyBoldedDateTest ()
269 MonthCalendar myMonthCal = new MonthCalendar ();
271 DateTime[] dts = new DateTime [10];
272 dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
273 dts[1] = new DateTime (2001, 02, 03); // only date
274 dts[2] = new DateTime (2002, 03, 04); // only date, different
275 dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
276 dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
277 dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
278 dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
279 dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
280 dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
281 dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
283 for (int i = 0; i < dts.Length; i++) {
284 for (int j = 0; j < dts.Length; j++) {
285 myMonthCal.RemoveAllAnnuallyBoldedDates ();
286 myMonthCal.AddAnnuallyBoldedDate (dts [j]);
287 myMonthCal.RemoveAnnuallyBoldedDate (dts [i]);
288 if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day)
289 Assert.AreEqual (0, myMonthCal.AnnuallyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
291 Assert.AreEqual (1, myMonthCal.AnnuallyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
295 for (int i = 0; i < dts.Length; i++)
297 myMonthCal.AnnuallyBoldedDates = dts;
298 myMonthCal.RemoveAnnuallyBoldedDate (dts [i]);
299 Assert.AreEqual (9, myMonthCal.AnnuallyBoldedDates.Length, "#remove1" + i.ToString ());
304 public void RemoveMonthlyBoldedDateTest ()
306 MonthCalendar myMonthCal = new MonthCalendar ();
308 DateTime[] dts = new DateTime [10];
309 dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
310 dts[1] = new DateTime (2001, 02, 03); // only date
311 dts[2] = new DateTime (2002, 03, 04); // only date, different
312 dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
313 dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
314 dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
315 dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
316 dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
317 dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
318 dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
320 for (int i = 0; i < dts.Length; i++)
322 for (int j = 0; j < dts.Length; j++)
324 myMonthCal.RemoveAllMonthlyBoldedDates ();
325 myMonthCal.AddMonthlyBoldedDate (dts [j]);
326 myMonthCal.RemoveMonthlyBoldedDate (dts [i]);
327 if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day)
328 Assert.AreEqual (0, myMonthCal.MonthlyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
330 Assert.AreEqual (1, myMonthCal.MonthlyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
334 for (int i = 0; i < dts.Length; i++)
336 myMonthCal.MonthlyBoldedDates = dts;
337 myMonthCal.RemoveMonthlyBoldedDate (dts [i]);
338 Assert.AreEqual (9, myMonthCal.MonthlyBoldedDates.Length, "#remove1" + i.ToString ());
343 public void RemoveBoldedDateTest ()
345 MonthCalendar myMonthCal = new MonthCalendar ();
347 DateTime[] dts = new DateTime [10];
348 dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
349 dts[1] = new DateTime (2001, 02, 03); // only date
350 dts[2] = new DateTime (2002, 03, 04); // only date, different
351 dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
352 dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
353 dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
354 dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
355 dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
356 dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
357 dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
359 for (int i = 0; i < dts.Length; i++)
361 for (int j = 0; j < dts.Length; j++)
363 myMonthCal.RemoveAllBoldedDates ();
364 myMonthCal.AddBoldedDate (dts [j]);
365 myMonthCal.RemoveBoldedDate (dts [i]);
366 if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day && dts[j].Year == dts[i].Year)
367 Assert.AreEqual (0, myMonthCal.BoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
369 Assert.AreEqual (1, myMonthCal.BoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
373 for (int i = 0; i < dts.Length; i++)
375 myMonthCal.BoldedDates = dts;
376 myMonthCal.RemoveBoldedDate (dts [i]);
377 Assert.AreEqual (9, myMonthCal.BoldedDates.Length, "#remove1" + i.ToString ());
382 public void AddBoldedDateTest ()
384 Form myForm = new Form ();
385 myForm.ShowInTaskbar = false;
386 MonthCalendar myMonthCal = new MonthCalendar ();
387 myMonthCal.AddBoldedDate (new DateTime (2005, 09, 02));
388 myForm.Controls.Add (myMonthCal);
389 Assert.AreEqual (new DateTime (2005, 09, 02), myMonthCal.BoldedDates.GetValue (0), "#add2");
394 public void AddMonthlyBoldedDateTest ()
396 Form myForm = new Form ();
397 myForm.ShowInTaskbar = false;
398 MonthCalendar myMonthCal = new MonthCalendar ();
399 myMonthCal.AddMonthlyBoldedDate (new DateTime (2005, 09, 03));
400 myForm.Controls.Add (myMonthCal);
401 Assert.AreEqual (new DateTime (2005, 09, 03), myMonthCal.MonthlyBoldedDates.GetValue (0), "#add2");
406 public void GetDisplayRangeTest ()
408 Form myForm = new Form ();
409 myForm.ShowInTaskbar = false;
410 MonthCalendar myMonthCal = new MonthCalendar ();
411 myForm.Controls.Add (myMonthCal);
412 SelectionRange mySelRange = new SelectionRange ();
413 mySelRange.Start = new DateTime (DateTime.Now.Year, DateTime.Now.Month, 1);
414 mySelRange.End = mySelRange.Start.AddMonths (1).AddDays (-1);
415 Assert.AreEqual (mySelRange.Start, myMonthCal.GetDisplayRange (true).Start, "#Get1");
416 Assert.AreEqual (mySelRange.End, myMonthCal.GetDisplayRange (true).End, "#Get22");
421 public void HitTest ()
423 Form myForm = new Form ();
424 myForm.ShowInTaskbar = false;
425 MonthCalendar myMonthCal = new MonthCalendar ();
426 myForm.Controls.Add (myMonthCal);
427 MonthCalendar.HitTestInfo hitTest = myMonthCal.HitTest (10, 10);
428 Assert.AreEqual (MonthCalendar.HitArea.PrevMonthButton, hitTest.HitArea, "#Hit1");
429 Assert.AreEqual (new DateTime (01, 01, 01), hitTest.Time, "#Hit2");
433 public void DateChangedEventTest ()
435 MonthCalendar myCalendar = new MonthCalendar ();
437 myCalendar.Tag = false;
438 myCalendar.DateChanged += new DateRangeEventHandler (DateChangedEventHandler);
439 myCalendar.SetDate (DateTime.Today.AddDays (72));
440 Assert.AreEqual (true, (bool) myCalendar.Tag, "#01");
443 void DateChangedEventHandler (object sender, DateRangeEventArgs e)
445 ((Control) sender).Tag = true;