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;
26 protected void SetUp () {
28 doubleClickRaised = false;
32 public void ClickEventTest ()
34 Click += new EventHandler (OnClickHandler);
35 DoubleClick += new EventHandler (OnDoubleClickHandler);
36 OnClick (EventArgs.Empty);
37 OnDoubleClick (EventArgs.Empty);
39 Assert.IsTrue (clickRaised, "Click event not raised");
40 Assert.IsTrue (doubleClickRaised, "DoubleClick event not raised");
43 void OnDoubleClickHandler (object sender, EventArgs e)
45 doubleClickRaised = true;
48 void OnClickHandler (object sender, EventArgs e)
55 public void DefaultMarginTest ()
57 Assert.AreEqual (DefaultMargin.All, 9, "#01");
63 public class MonthCalendarTest : TestHelper
66 public void MonthCalendarPropertyTest ()
68 Form myfrm = new Form ();
69 myfrm.ShowInTaskbar = false;
70 MonthCalendar myMonthCal1 = new MonthCalendar ();
71 //MonthCalendar myMonthCal2 = new MonthCalendar ();
72 myMonthCal1.Name = "MonthCendar";
73 myMonthCal1.TabIndex = 1;
74 //DateTime myDateTime = new DateTime ();
77 Assert.IsNotNull (myMonthCal1.AnnuallyBoldedDates, "#A-1");
78 myMonthCal1.AddAnnuallyBoldedDate (new DateTime (2005, 09, 01));
79 Assert.IsNotNull (myMonthCal1.AnnuallyBoldedDates, "#A0");
80 Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal1.AnnuallyBoldedDates.GetValue (0), "#A1");
83 Assert.AreEqual ("Window", myMonthCal1.BackColor.Name, "#B1");
84 myMonthCal1.AddBoldedDate (new DateTime (2005, 09, 01));
85 Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal1.BoldedDates.GetValue (0), "#B2");
88 Assert.AreEqual (1, myMonthCal1.CalendarDimensions.Height, "#C1");
89 Assert.AreEqual (1, myMonthCal1.CalendarDimensions.Width, "#C2");
90 Assert.AreEqual (false, myMonthCal1.CalendarDimensions.IsEmpty, "#C3");
93 Assert.AreEqual (Day.Default, myMonthCal1.FirstDayOfWeek, "#F1");
94 myMonthCal1.FirstDayOfWeek = Day.Sunday;
95 Assert.AreEqual (Day.Sunday, myMonthCal1.FirstDayOfWeek, "#F2");
96 Assert.AreEqual ("WindowText", myMonthCal1.ForeColor.Name, "#F3");
99 Assert.AreEqual (new DateTime (9998,12,31), myMonthCal1.MaxDate, "#M1");
100 Assert.AreEqual (7, myMonthCal1.MaxSelectionCount, "#M2");
101 Assert.AreEqual (new DateTime (1753,1,1), myMonthCal1.MinDate, "#M3");
102 myMonthCal1.AddMonthlyBoldedDate (new DateTime (2005, 09, 01));
103 Assert.AreEqual (new DateTime(2005, 09, 01), myMonthCal1.MonthlyBoldedDates.GetValue (0), "#M4");
106 Assert.AreEqual (0, myMonthCal1.ScrollChange, "#S1");
107 myMonthCal1.SelectionStart = new DateTime (2005,09,02);
108 myMonthCal1.SelectionEnd = new DateTime (2005,09,03);
109 Assert.AreEqual (new DateTime (2005,09,03), myMonthCal1.SelectionEnd, "#S2");
110 //Assert.AreEqual (new SelectionRange (new DateTime(2005,09,02), new DateTime(2005,09,03)), myMonthCal1.SelectionRange, "#S3");
111 Assert.AreEqual (new DateTime (2005,09,02), myMonthCal1.SelectionStart, "#S4");
112 Assert.AreEqual (true, myMonthCal1.ShowToday, "#S5");
113 Assert.AreEqual (true, myMonthCal1.ShowTodayCircle, "#S6");
114 Assert.AreEqual (false, myMonthCal1.ShowWeekNumbers, "#S7");
115 // Font dependent. // Assert.AreEqual (153, myMonthCal1.SingleMonthSize.Height, "#S8a");
116 // Font dependent. // Assert.AreEqual (176, myMonthCal1.SingleMonthSize.Width, "#S8b");
117 Assert.AreEqual (null, myMonthCal1.Site, "#S9");
119 Assert.AreEqual ("ActiveCaption", myMonthCal1.TitleBackColor.Name, "#T1");
120 Assert.AreEqual ("ActiveCaptionText", myMonthCal1.TitleForeColor.Name, "#T2");
121 Assert.AreEqual (DateTime.Today, myMonthCal1.TodayDate, "#T3");
122 Assert.AreEqual (false, myMonthCal1.TodayDateSet, "#T4");
123 Assert.AreEqual ("GrayText", myMonthCal1.TrailingForeColor.Name, "#T5");
129 public void InitialSizeTest ()
131 MonthCalendar cal = new MonthCalendar ();
132 Assert.IsTrue (cal.Size != Size.Empty, "#01");
136 public void MonthCalMaxSelectionCountException ()
138 MonthCalendar myMonthCal1 = new MonthCalendar ();
141 myMonthCal1.MaxSelectionCount = 0; // value is less than 1
144 } catch (ArgumentOutOfRangeException ex) {
145 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
146 Assert.IsNotNull (ex.Message, "#A3");
147 Assert.IsNotNull (ex.ParamName, "#A4");
148 Assert.AreEqual ("MaxSelectionCount", ex.ParamName, "#A5");
149 Assert.IsNull (ex.InnerException, "#A6");
152 } catch (ArgumentException ex) {
153 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
154 Assert.IsNotNull (ex.Message, "#A3");
155 Assert.IsNull (ex.ParamName, "#A4");
156 Assert.IsNull (ex.InnerException, "#A5");
162 public void MonthCalMaxDateException ()
164 MonthCalendar myMonthCal1 = new MonthCalendar ();
167 myMonthCal1.MaxDate = new DateTime (1752, 1, 1, 0, 0, 0, 0); // value is less than min date (01/01/1753)
170 } catch (ArgumentOutOfRangeException ex) {
171 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
172 Assert.IsNotNull (ex.Message, "#A3");
173 Assert.IsNotNull (ex.ParamName, "#A4");
174 Assert.AreEqual ("MaxDate", ex.ParamName, "#A5");
175 Assert.IsNull (ex.InnerException, "#A6");
178 } catch (ArgumentException ex) {
179 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
180 Assert.IsNotNull (ex.Message, "#A3");
181 Assert.IsNull (ex.ParamName, "#A4");
182 Assert.IsNull (ex.InnerException, "#A5");
188 public void MonthCalMinDateException ()
190 MonthCalendar myMonthCal1 = new MonthCalendar ();
193 myMonthCal1.MinDate = new DateTime (1752, 1, 1, 0, 0, 0, 0); // Date earlier than 01/01/1753
196 } catch (ArgumentOutOfRangeException ex) {
197 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
198 Assert.IsNotNull (ex.Message, "#A3");
199 Assert.IsNotNull (ex.ParamName, "#A4");
200 Assert.AreEqual ("MinDate", ex.ParamName, "#A5");
201 Assert.IsNull (ex.InnerException, "#A6");
204 } catch (ArgumentException ex) {
205 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
206 Assert.IsNotNull (ex.Message, "#A3");
207 Assert.IsNull (ex.ParamName, "#A4");
208 Assert.IsNull (ex.InnerException, "#A5");
213 myMonthCal1.MinDate = new DateTime (9999, 12, 31, 0, 0, 0, 0); // Date greater than max date
216 } catch (ArgumentOutOfRangeException ex) {
217 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
218 Assert.IsNotNull (ex.Message, "#B3");
219 Assert.IsNotNull (ex.ParamName, "#B4");
220 Assert.AreEqual ("MinDate", ex.ParamName, "#B5");
221 Assert.IsNull (ex.InnerException, "#B6");
224 } catch (ArgumentException ex) {
225 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
226 Assert.IsNotNull (ex.Message, "#B3");
227 Assert.IsNull (ex.ParamName, "#B4");
228 Assert.IsNull (ex.InnerException, "#B5");
234 [ExpectedException (typeof (ArgumentException))]
235 public void MonthCalSelectRangeException ()
237 MonthCalendar myMonthCal1 = new MonthCalendar ();
238 myMonthCal1.SelectionRange = new SelectionRange (new DateTime (1752, 01, 01), new DateTime (1752, 01, 02));
242 [ExpectedException (typeof (ArgumentException))]
243 public void MonthCalSelectRangeException2 ()
245 MonthCalendar myMonthCal1 = new MonthCalendar ();
246 myMonthCal1.SelectionRange = new SelectionRange (new DateTime (9999, 12, 30), new DateTime (9999, 12, 31));
250 public void AddAnnuallyBoldedDateTest ()
252 Form myForm = new Form ();
253 myForm.ShowInTaskbar = false;
254 MonthCalendar myMonthCal = new MonthCalendar ();
255 myMonthCal.AddAnnuallyBoldedDate (new DateTime (2005, 09, 01));
256 myForm.Controls.Add (myMonthCal);
257 Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal.AnnuallyBoldedDates.GetValue (0), "#add1");
259 DateTime dt = new DateTime (2006, 02, 03, 04, 05, 06, 07);
260 DateTime dt2 = new DateTime (2006, 02, 03);
262 myMonthCal.RemoveAllAnnuallyBoldedDates ();
263 myMonthCal.AddAnnuallyBoldedDate (dt);
264 Assert.AreEqual (dt, myMonthCal.AnnuallyBoldedDates [0], "#add2");
266 myMonthCal.AddAnnuallyBoldedDate (dt2);
267 Assert.AreEqual (dt2, myMonthCal.AnnuallyBoldedDates [1], "#add3");
273 public void RemoveAnnuallyBoldedDateTest ()
275 MonthCalendar myMonthCal = new MonthCalendar ();
277 DateTime[] dts = new DateTime [10];
278 dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
279 dts[1] = new DateTime (2001, 02, 03); // only date
280 dts[2] = new DateTime (2002, 03, 04); // only date, different
281 dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
282 dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
283 dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
284 dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
285 dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
286 dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
287 dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
289 for (int i = 0; i < dts.Length; i++) {
290 for (int j = 0; j < dts.Length; j++) {
291 myMonthCal.RemoveAllAnnuallyBoldedDates ();
292 myMonthCal.AddAnnuallyBoldedDate (dts [j]);
293 myMonthCal.RemoveAnnuallyBoldedDate (dts [i]);
294 if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day)
295 Assert.AreEqual (0, myMonthCal.AnnuallyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
297 Assert.AreEqual (1, myMonthCal.AnnuallyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
301 for (int i = 0; i < dts.Length; i++)
303 myMonthCal.AnnuallyBoldedDates = dts;
304 myMonthCal.RemoveAnnuallyBoldedDate (dts [i]);
305 Assert.AreEqual (9, myMonthCal.AnnuallyBoldedDates.Length, "#remove1" + i.ToString ());
310 public void RemoveMonthlyBoldedDateTest ()
312 MonthCalendar myMonthCal = new MonthCalendar ();
314 DateTime[] dts = new DateTime [10];
315 dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
316 dts[1] = new DateTime (2001, 02, 03); // only date
317 dts[2] = new DateTime (2002, 03, 04); // only date, different
318 dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
319 dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
320 dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
321 dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
322 dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
323 dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
324 dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
326 for (int i = 0; i < dts.Length; i++)
328 for (int j = 0; j < dts.Length; j++)
330 myMonthCal.RemoveAllMonthlyBoldedDates ();
331 myMonthCal.AddMonthlyBoldedDate (dts [j]);
332 myMonthCal.RemoveMonthlyBoldedDate (dts [i]);
333 if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day)
334 Assert.AreEqual (0, myMonthCal.MonthlyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
336 Assert.AreEqual (1, myMonthCal.MonthlyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
340 for (int i = 0; i < dts.Length; i++)
342 myMonthCal.MonthlyBoldedDates = dts;
343 myMonthCal.RemoveMonthlyBoldedDate (dts [i]);
344 Assert.AreEqual (9, myMonthCal.MonthlyBoldedDates.Length, "#remove1" + i.ToString ());
349 public void RemoveBoldedDateTest ()
351 MonthCalendar myMonthCal = new MonthCalendar ();
353 DateTime[] dts = new DateTime [10];
354 dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
355 dts[1] = new DateTime (2001, 02, 03); // only date
356 dts[2] = new DateTime (2002, 03, 04); // only date, different
357 dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
358 dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
359 dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
360 dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
361 dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
362 dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
363 dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
365 for (int i = 0; i < dts.Length; i++)
367 for (int j = 0; j < dts.Length; j++)
369 myMonthCal.RemoveAllBoldedDates ();
370 myMonthCal.AddBoldedDate (dts [j]);
371 myMonthCal.RemoveBoldedDate (dts [i]);
372 if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day && dts[j].Year == dts[i].Year)
373 Assert.AreEqual (0, myMonthCal.BoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
375 Assert.AreEqual (1, myMonthCal.BoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
379 for (int i = 0; i < dts.Length; i++)
381 myMonthCal.BoldedDates = dts;
382 myMonthCal.RemoveBoldedDate (dts [i]);
383 Assert.AreEqual (9, myMonthCal.BoldedDates.Length, "#remove1" + i.ToString ());
388 public void AddBoldedDateTest ()
390 Form myForm = new Form ();
391 myForm.ShowInTaskbar = false;
392 MonthCalendar myMonthCal = new MonthCalendar ();
393 myMonthCal.AddBoldedDate (new DateTime (2005, 09, 02));
394 myForm.Controls.Add (myMonthCal);
395 Assert.AreEqual (new DateTime (2005, 09, 02), myMonthCal.BoldedDates.GetValue (0), "#add2");
400 public void AddMonthlyBoldedDateTest ()
402 Form myForm = new Form ();
403 myForm.ShowInTaskbar = false;
404 MonthCalendar myMonthCal = new MonthCalendar ();
405 myMonthCal.AddMonthlyBoldedDate (new DateTime (2005, 09, 03));
406 myForm.Controls.Add (myMonthCal);
407 Assert.AreEqual (new DateTime (2005, 09, 03), myMonthCal.MonthlyBoldedDates.GetValue (0), "#add2");
412 public void GetDisplayRangeTest ()
414 Form myForm = new Form ();
415 myForm.ShowInTaskbar = false;
416 MonthCalendar myMonthCal = new MonthCalendar ();
417 myForm.Controls.Add (myMonthCal);
418 SelectionRange mySelRange = new SelectionRange ();
419 mySelRange.Start = new DateTime (DateTime.Now.Year, DateTime.Now.Month, 1);
420 mySelRange.End = mySelRange.Start.AddMonths (1).AddDays (-1);
421 Assert.AreEqual (mySelRange.Start, myMonthCal.GetDisplayRange (true).Start, "#Get1");
422 Assert.AreEqual (mySelRange.End, myMonthCal.GetDisplayRange (true).End, "#Get22");
427 public void HitTest ()
429 Form myForm = new Form ();
430 myForm.ShowInTaskbar = false;
431 MonthCalendar myMonthCal = new MonthCalendar ();
432 myForm.Controls.Add (myMonthCal);
433 MonthCalendar.HitTestInfo hitTest = myMonthCal.HitTest (10, 10);
434 Assert.AreEqual (MonthCalendar.HitArea.PrevMonthButton, hitTest.HitArea, "#Hit1");
435 Assert.AreEqual (new DateTime (01, 01, 01), hitTest.Time, "#Hit2");
439 public void DateChangedEventTest ()
441 MonthCalendar myCalendar = new MonthCalendar ();
443 myCalendar.Tag = false;
444 myCalendar.DateChanged += new DateRangeEventHandler (DateChangedEventHandler);
445 myCalendar.SetDate (DateTime.Today.AddDays (72));
446 Assert.AreEqual (true, (bool) myCalendar.Tag, "#01");
449 void DateChangedEventHandler (object sender, DateRangeEventArgs e)
451 ((Control) sender).Tag = true;