MonthCalendarTest.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. //
  2. // MonthCalendarTest.cs: Test case for MonthCalendar
  3. //
  4. // Authors:
  5. // Ritvik Mayank ([email protected])
  6. //
  7. // (C) 2005 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.Drawing;
  11. using System.Reflection;
  12. using System.Windows.Forms;
  13. using NUnit.Framework;
  14. namespace MonoTests.System.Windows.Forms
  15. {
  16. [TestFixture]
  17. public class MonthCalendarPropertiesTest : MonthCalendar
  18. {
  19. private bool clickRaised;
  20. private bool doubleClickRaised;
  21. [SetUp]
  22. public void SetUp ()
  23. {
  24. clickRaised = false;
  25. doubleClickRaised = false;
  26. }
  27. [Test]
  28. public void ClickEventTest ()
  29. {
  30. Click += new EventHandler (OnClickHandler);
  31. DoubleClick += new EventHandler (OnDoubleClickHandler);
  32. OnClick (EventArgs.Empty);
  33. OnDoubleClick (EventArgs.Empty);
  34. Assert.IsTrue (clickRaised, "Click event not raised");
  35. Assert.IsTrue (doubleClickRaised, "DoubleClick event not raised");
  36. }
  37. void OnDoubleClickHandler (object sender, EventArgs e)
  38. {
  39. doubleClickRaised = true;
  40. }
  41. void OnClickHandler (object sender, EventArgs e)
  42. {
  43. clickRaised = true;
  44. }
  45. #if NET_2_0
  46. [Test]
  47. public void DefaultMarginTest ()
  48. {
  49. Assert.AreEqual (DefaultMargin.All, 9, "#01");
  50. }
  51. #endif
  52. }
  53. [TestFixture]
  54. public class MonthCalendarTest
  55. {
  56. [Test]
  57. public void MonthCalendarPropertyTest ()
  58. {
  59. Form myfrm = new Form ();
  60. myfrm.ShowInTaskbar = false;
  61. MonthCalendar myMonthCal1 = new MonthCalendar ();
  62. //MonthCalendar myMonthCal2 = new MonthCalendar ();
  63. myMonthCal1.Name = "MonthCendar";
  64. myMonthCal1.TabIndex = 1;
  65. //DateTime myDateTime = new DateTime ();
  66. // A
  67. Assert.IsNotNull (myMonthCal1.AnnuallyBoldedDates, "#A-1");
  68. myMonthCal1.AddAnnuallyBoldedDate (new DateTime (2005, 09, 01));
  69. Assert.IsNotNull (myMonthCal1.AnnuallyBoldedDates, "#A0");
  70. Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal1.AnnuallyBoldedDates.GetValue (0), "#A1");
  71. // B
  72. Assert.AreEqual ("Window", myMonthCal1.BackColor.Name, "#B1");
  73. myMonthCal1.AddBoldedDate (new DateTime (2005, 09, 01));
  74. Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal1.BoldedDates.GetValue (0), "#B2");
  75. // C
  76. Assert.AreEqual (1, myMonthCal1.CalendarDimensions.Height, "#C1");
  77. Assert.AreEqual (1, myMonthCal1.CalendarDimensions.Width, "#C2");
  78. Assert.AreEqual (false, myMonthCal1.CalendarDimensions.IsEmpty, "#C3");
  79. // F
  80. Assert.AreEqual (Day.Default, myMonthCal1.FirstDayOfWeek, "#F1");
  81. myMonthCal1.FirstDayOfWeek = Day.Sunday;
  82. Assert.AreEqual (Day.Sunday, myMonthCal1.FirstDayOfWeek, "#F2");
  83. Assert.AreEqual ("WindowText", myMonthCal1.ForeColor.Name, "#F3");
  84. // M
  85. Assert.AreEqual (new DateTime (9998,12,31), myMonthCal1.MaxDate, "#M1");
  86. Assert.AreEqual (7, myMonthCal1.MaxSelectionCount, "#M2");
  87. Assert.AreEqual (new DateTime (1753,1,1), myMonthCal1.MinDate, "#M3");
  88. myMonthCal1.AddMonthlyBoldedDate (new DateTime (2005, 09, 01));
  89. Assert.AreEqual (new DateTime(2005, 09, 01), myMonthCal1.MonthlyBoldedDates.GetValue (0), "#M4");
  90. // S
  91. Assert.AreEqual (0, myMonthCal1.ScrollChange, "#S1");
  92. myMonthCal1.SelectionStart = new DateTime (2005,09,02);
  93. myMonthCal1.SelectionEnd = new DateTime (2005,09,03);
  94. Assert.AreEqual (new DateTime (2005,09,03), myMonthCal1.SelectionEnd, "#S2");
  95. //Assert.AreEqual (new SelectionRange (new DateTime(2005,09,02), new DateTime(2005,09,03)), myMonthCal1.SelectionRange, "#S3");
  96. Assert.AreEqual (new DateTime (2005,09,02), myMonthCal1.SelectionStart, "#S4");
  97. Assert.AreEqual (true, myMonthCal1.ShowToday, "#S5");
  98. Assert.AreEqual (true, myMonthCal1.ShowTodayCircle, "#S6");
  99. Assert.AreEqual (false, myMonthCal1.ShowWeekNumbers, "#S7");
  100. // Font dependent. // Assert.AreEqual (153, myMonthCal1.SingleMonthSize.Height, "#S8a");
  101. // Font dependent. // Assert.AreEqual (176, myMonthCal1.SingleMonthSize.Width, "#S8b");
  102. Assert.AreEqual (null, myMonthCal1.Site, "#S9");
  103. // T
  104. Assert.AreEqual ("ActiveCaption", myMonthCal1.TitleBackColor.Name, "#T1");
  105. Assert.AreEqual ("ActiveCaptionText", myMonthCal1.TitleForeColor.Name, "#T2");
  106. Assert.AreEqual (DateTime.Today, myMonthCal1.TodayDate, "#T3");
  107. Assert.AreEqual (false, myMonthCal1.TodayDateSet, "#T4");
  108. Assert.AreEqual ("GrayText", myMonthCal1.TrailingForeColor.Name, "#T5");
  109. myfrm.Dispose ();
  110. }
  111. [Test]
  112. public void MonthCalMaxSelectionCountException ()
  113. {
  114. MonthCalendar myMonthCal1 = new MonthCalendar ();
  115. try {
  116. myMonthCal1.MaxSelectionCount = 0; // value is less than 1
  117. Assert.Fail ("#A1");
  118. #if NET_2_0
  119. } catch (ArgumentOutOfRangeException ex) {
  120. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  121. Assert.IsNotNull (ex.Message, "#A3");
  122. Assert.IsNotNull (ex.ParamName, "#A4");
  123. Assert.AreEqual ("MaxSelectionCount", ex.ParamName, "#A5");
  124. Assert.IsNull (ex.InnerException, "#A6");
  125. }
  126. #else
  127. } catch (ArgumentException ex) {
  128. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  129. Assert.IsNotNull (ex.Message, "#A3");
  130. Assert.IsNull (ex.ParamName, "#A4");
  131. Assert.IsNull (ex.InnerException, "#A5");
  132. }
  133. #endif
  134. }
  135. [Test]
  136. public void MonthCalMaxDateException ()
  137. {
  138. MonthCalendar myMonthCal1 = new MonthCalendar ();
  139. try {
  140. myMonthCal1.MaxDate = new DateTime (1752, 1, 1, 0, 0, 0, 0); // value is less than min date (01/01/1753)
  141. Assert.Fail ("#A1");
  142. #if NET_2_0
  143. } catch (ArgumentOutOfRangeException ex) {
  144. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  145. Assert.IsNotNull (ex.Message, "#A3");
  146. Assert.IsNotNull (ex.ParamName, "#A4");
  147. Assert.AreEqual ("MaxDate", ex.ParamName, "#A5");
  148. Assert.IsNull (ex.InnerException, "#A6");
  149. }
  150. #else
  151. } catch (ArgumentException ex) {
  152. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  153. Assert.IsNotNull (ex.Message, "#A3");
  154. Assert.IsNull (ex.ParamName, "#A4");
  155. Assert.IsNull (ex.InnerException, "#A5");
  156. }
  157. #endif
  158. }
  159. [Test]
  160. public void MonthCalMinDateException ()
  161. {
  162. MonthCalendar myMonthCal1 = new MonthCalendar ();
  163. try {
  164. myMonthCal1.MinDate = new DateTime (1752, 1, 1, 0, 0, 0, 0); // Date earlier than 01/01/1753
  165. Assert.Fail ("#A1");
  166. #if NET_2_0
  167. } catch (ArgumentOutOfRangeException ex) {
  168. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
  169. Assert.IsNotNull (ex.Message, "#A3");
  170. Assert.IsNotNull (ex.ParamName, "#A4");
  171. Assert.AreEqual ("MinDate", ex.ParamName, "#A5");
  172. Assert.IsNull (ex.InnerException, "#A6");
  173. }
  174. #else
  175. } catch (ArgumentException ex) {
  176. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  177. Assert.IsNotNull (ex.Message, "#A3");
  178. Assert.IsNull (ex.ParamName, "#A4");
  179. Assert.IsNull (ex.InnerException, "#A5");
  180. }
  181. #endif
  182. try {
  183. myMonthCal1.MinDate = new DateTime (9999, 12, 31, 0, 0, 0, 0); // Date greater than max date
  184. Assert.Fail ("#B1");
  185. #if NET_2_0
  186. } catch (ArgumentOutOfRangeException ex) {
  187. Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
  188. Assert.IsNotNull (ex.Message, "#B3");
  189. Assert.IsNotNull (ex.ParamName, "#B4");
  190. Assert.AreEqual ("MinDate", ex.ParamName, "#B5");
  191. Assert.IsNull (ex.InnerException, "#B6");
  192. }
  193. #else
  194. } catch (ArgumentException ex) {
  195. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
  196. Assert.IsNotNull (ex.Message, "#B3");
  197. Assert.IsNull (ex.ParamName, "#B4");
  198. Assert.IsNull (ex.InnerException, "#B5");
  199. }
  200. #endif
  201. }
  202. [Test]
  203. [ExpectedException (typeof (ArgumentException))]
  204. public void MonthCalSelectRangeException ()
  205. {
  206. MonthCalendar myMonthCal1 = new MonthCalendar ();
  207. myMonthCal1.SelectionRange = new SelectionRange (new DateTime (1752, 01, 01), new DateTime (1752, 01, 02));
  208. }
  209. [Test]
  210. [ExpectedException (typeof (ArgumentException))]
  211. public void MonthCalSelectRangeException2 ()
  212. {
  213. MonthCalendar myMonthCal1 = new MonthCalendar ();
  214. myMonthCal1.SelectionRange = new SelectionRange (new DateTime (9999, 12, 30), new DateTime (9999, 12, 31));
  215. }
  216. [Test]
  217. public void AddAnnuallyBoldedDateTest ()
  218. {
  219. Form myForm = new Form ();
  220. myForm.ShowInTaskbar = false;
  221. MonthCalendar myMonthCal = new MonthCalendar ();
  222. myMonthCal.AddAnnuallyBoldedDate (new DateTime (2005, 09, 01));
  223. myForm.Controls.Add (myMonthCal);
  224. Assert.AreEqual (new DateTime (2005, 09, 01), myMonthCal.AnnuallyBoldedDates.GetValue (0), "#add1");
  225. DateTime dt = new DateTime (2006, 02, 03, 04, 05, 06, 07);
  226. DateTime dt2 = new DateTime (2006, 02, 03);
  227. myMonthCal.RemoveAllAnnuallyBoldedDates ();
  228. myMonthCal.AddAnnuallyBoldedDate (dt);
  229. Assert.AreEqual (dt, myMonthCal.AnnuallyBoldedDates [0], "#add2");
  230. myMonthCal.AddAnnuallyBoldedDate (dt2);
  231. Assert.AreEqual (dt2, myMonthCal.AnnuallyBoldedDates [1], "#add3");
  232. myForm.Dispose ();
  233. }
  234. [Test]
  235. public void RemoveAnnuallyBoldedDateTest ()
  236. {
  237. MonthCalendar myMonthCal = new MonthCalendar ();
  238. DateTime[] dts = new DateTime [10];
  239. dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
  240. dts[1] = new DateTime (2001, 02, 03); // only date
  241. dts[2] = new DateTime (2002, 03, 04); // only date, different
  242. dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
  243. dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
  244. dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
  245. dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
  246. dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
  247. dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
  248. dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
  249. for (int i = 0; i < dts.Length; i++) {
  250. for (int j = 0; j < dts.Length; j++) {
  251. myMonthCal.RemoveAllAnnuallyBoldedDates ();
  252. myMonthCal.AddAnnuallyBoldedDate (dts [j]);
  253. myMonthCal.RemoveAnnuallyBoldedDate (dts [i]);
  254. if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day)
  255. Assert.AreEqual (0, myMonthCal.AnnuallyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
  256. else
  257. Assert.AreEqual (1, myMonthCal.AnnuallyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
  258. }
  259. }
  260. for (int i = 0; i < dts.Length; i++)
  261. {
  262. myMonthCal.AnnuallyBoldedDates = dts;
  263. myMonthCal.RemoveAnnuallyBoldedDate (dts [i]);
  264. Assert.AreEqual (9, myMonthCal.AnnuallyBoldedDates.Length, "#remove1" + i.ToString ());
  265. }
  266. }
  267. [Test]
  268. public void RemoveMonthlyBoldedDateTest ()
  269. {
  270. 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);
  282. for (int i = 0; i < dts.Length; i++)
  283. {
  284. for (int j = 0; j < dts.Length; j++)
  285. {
  286. myMonthCal.RemoveAllMonthlyBoldedDates ();
  287. myMonthCal.AddMonthlyBoldedDate (dts [j]);
  288. myMonthCal.RemoveMonthlyBoldedDate (dts [i]);
  289. if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day)
  290. Assert.AreEqual (0, myMonthCal.MonthlyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
  291. else
  292. Assert.AreEqual (1, myMonthCal.MonthlyBoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
  293. }
  294. }
  295. for (int i = 0; i < dts.Length; i++)
  296. {
  297. myMonthCal.MonthlyBoldedDates = dts;
  298. myMonthCal.RemoveMonthlyBoldedDate (dts [i]);
  299. Assert.AreEqual (9, myMonthCal.MonthlyBoldedDates.Length, "#remove1" + i.ToString ());
  300. }
  301. }
  302. [Test]
  303. public void RemoveBoldedDateTest ()
  304. {
  305. MonthCalendar myMonthCal = new MonthCalendar ();
  306. DateTime[] dts = new DateTime [10];
  307. dts[0] = new DateTime (2001, 02, 03, 04, 05, 06, 07); // base datetime
  308. dts[1] = new DateTime (2001, 02, 03); // only date
  309. dts[2] = new DateTime (2002, 03, 04); // only date, different
  310. dts[3] = new DateTime (2002, 02, 03, 04, 05, 06, 07); // different year
  311. dts[4] = new DateTime (2001, 03, 03, 04, 05, 06, 07); // different month
  312. dts[5] = new DateTime (2001, 02, 04, 04, 05, 06, 07); // etc...
  313. dts[6] = new DateTime (2001, 02, 03, 05, 05, 06, 07);
  314. dts[7] = new DateTime (2001, 02, 03, 04, 06, 06, 07);
  315. dts[8] = new DateTime (2001, 02, 03, 04, 05, 07, 07);
  316. dts[9] = new DateTime (2001, 02, 03, 04, 05, 06, 08);
  317. for (int i = 0; i < dts.Length; i++)
  318. {
  319. for (int j = 0; j < dts.Length; j++)
  320. {
  321. myMonthCal.RemoveAllBoldedDates ();
  322. myMonthCal.AddBoldedDate (dts [j]);
  323. myMonthCal.RemoveBoldedDate (dts [i]);
  324. if (dts [j].Month == dts [i].Month && dts [j].Day == dts [i].Day && dts[j].Year == dts[i].Year)
  325. Assert.AreEqual (0, myMonthCal.BoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
  326. else
  327. Assert.AreEqual (1, myMonthCal.BoldedDates.Length, "#remove0" + i.ToString () + ", " + j.ToString ());
  328. }
  329. }
  330. for (int i = 0; i < dts.Length; i++)
  331. {
  332. myMonthCal.BoldedDates = dts;
  333. myMonthCal.RemoveBoldedDate (dts [i]);
  334. Assert.AreEqual (9, myMonthCal.BoldedDates.Length, "#remove1" + i.ToString ());
  335. }
  336. }
  337. [Test]
  338. public void AddBoldedDateTest ()
  339. {
  340. Form myForm = new Form ();
  341. myForm.ShowInTaskbar = false;
  342. MonthCalendar myMonthCal = new MonthCalendar ();
  343. myMonthCal.AddBoldedDate (new DateTime (2005, 09, 02));
  344. myForm.Controls.Add (myMonthCal);
  345. Assert.AreEqual (new DateTime (2005, 09, 02), myMonthCal.BoldedDates.GetValue (0), "#add2");
  346. myForm.Dispose ();
  347. }
  348. [Test]
  349. public void AddMonthlyBoldedDateTest ()
  350. {
  351. Form myForm = new Form ();
  352. myForm.ShowInTaskbar = false;
  353. MonthCalendar myMonthCal = new MonthCalendar ();
  354. myMonthCal.AddMonthlyBoldedDate (new DateTime (2005, 09, 03));
  355. myForm.Controls.Add (myMonthCal);
  356. Assert.AreEqual (new DateTime (2005, 09, 03), myMonthCal.MonthlyBoldedDates.GetValue (0), "#add2");
  357. myForm.Dispose ();
  358. }
  359. [Test]
  360. public void GetDisplayRangeTest ()
  361. {
  362. Form myForm = new Form ();
  363. myForm.ShowInTaskbar = false;
  364. MonthCalendar myMonthCal = new MonthCalendar ();
  365. myForm.Controls.Add (myMonthCal);
  366. SelectionRange mySelRange = new SelectionRange ();
  367. mySelRange.Start = new DateTime (DateTime.Now.Year, DateTime.Now.Month, 1);
  368. mySelRange.End = mySelRange.Start.AddMonths (1).AddDays (-1);
  369. Assert.AreEqual (mySelRange.Start, myMonthCal.GetDisplayRange (true).Start, "#Get1");
  370. Assert.AreEqual (mySelRange.End, myMonthCal.GetDisplayRange (true).End, "#Get22");
  371. myForm.Dispose ();
  372. }
  373. [Test]
  374. public void HitTest ()
  375. {
  376. Form myForm = new Form ();
  377. myForm.ShowInTaskbar = false;
  378. MonthCalendar myMonthCal = new MonthCalendar ();
  379. myForm.Controls.Add (myMonthCal);
  380. MonthCalendar.HitTestInfo hitTest = myMonthCal.HitTest (10, 10);
  381. Assert.AreEqual (MonthCalendar.HitArea.PrevMonthButton, hitTest.HitArea, "#Hit1");
  382. Assert.AreEqual (new DateTime (01, 01, 01), hitTest.Time, "#Hit2");
  383. }
  384. [Test]
  385. public void DateChangedEventTest ()
  386. {
  387. MonthCalendar myCalendar = new MonthCalendar ();
  388. myCalendar.Tag = false;
  389. myCalendar.DateChanged += new DateRangeEventHandler (DateChangedEventHandler);
  390. myCalendar.SetDate (DateTime.Today.AddDays (72));
  391. Assert.AreEqual (true, (bool) myCalendar.Tag, "#01");
  392. }
  393. void DateChangedEventHandler (object sender, DateRangeEventArgs e)
  394. {
  395. ((Control) sender).Tag = true;
  396. }
  397. }
  398. }