CalendarTest.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. //
  2. // Tests for System.Web.UI.WebControls.Calendar.cs
  3. //
  4. // Author:
  5. // Jordi Mas i Hernandez ([email protected])
  6. //
  7. //
  8. // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
  9. //
  10. // Permission is hereby granted, free of charge, to any person obtaining
  11. // a copy of this software and associated documentation files (the
  12. // "Software"), to deal in the Software without restriction, including
  13. // without limitation the rights to use, copy, modify, merge, publish,
  14. // distribute, sublicense, and/or sell copies of the Software, and to
  15. // permit persons to whom the Software is furnished to do so, subject to
  16. // the following conditions:
  17. //
  18. // The above copyright notice and this permission notice shall be
  19. // included in all copies or substantial portions of the Software.
  20. //
  21. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  25. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  26. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  27. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  28. //
  29. using System;
  30. using System.Drawing;
  31. using System.Globalization;
  32. using System.IO;
  33. using System.Threading;
  34. using System.Web;
  35. using System.Web.UI;
  36. using System.Web.UI.WebControls;
  37. using NUnit.Framework;
  38. class PokerCalendar : System.Web.UI.WebControls.Calendar
  39. {
  40. public PokerCalendar ()
  41. {
  42. TrackViewState ();
  43. }
  44. public object SaveState ()
  45. {
  46. return SaveViewState ();
  47. }
  48. public void LoadState (object o)
  49. {
  50. LoadViewState (o);
  51. }
  52. public string Render ()
  53. {
  54. StringWriter sw = new StringWriter ();
  55. sw.NewLine = "\n";
  56. HtmlTextWriter writer = new HtmlTextWriter (sw);
  57. base.Render (writer);
  58. return writer.InnerWriter.ToString ();
  59. }
  60. bool cs_called;
  61. public bool CS_Called {
  62. get { return cs_called; }
  63. set { cs_called = value; }
  64. }
  65. protected override Style CreateControlStyle ()
  66. {
  67. cs_called = true;
  68. return base.CreateControlStyle ();
  69. }
  70. }
  71. namespace MonoTests.System.Web.UI.WebControls
  72. {
  73. [TestFixture]
  74. public class CalendarTest
  75. {
  76. [Test]
  77. public void Calendar_DefaultValues ()
  78. {
  79. PokerCalendar c = new PokerCalendar ();
  80. Assert.AreEqual (2, c.CellPadding, "CellPadding");
  81. Assert.AreEqual (0, c.CellSpacing, "CellSpacing");
  82. Assert.AreEqual (DayNameFormat.Short, c.DayNameFormat, "DayNameFormat");
  83. Assert.AreEqual (FirstDayOfWeek.Default, c.FirstDayOfWeek, "FirstDayOfWeek");
  84. Assert.AreEqual (">",c.NextMonthText, "NextMonthText");
  85. Assert.AreEqual (NextPrevFormat.CustomText, c.NextPrevFormat, "NextPrevFormat");
  86. Assert.AreEqual ("<", c.PrevMonthText, "PrevMonthText");
  87. Assert.AreEqual (CalendarSelectionMode.Day, c.SelectionMode, "SelectionMode");
  88. Assert.AreEqual (">>", c.SelectMonthText, "SelectMonthText");
  89. Assert.AreEqual (">", c.SelectWeekText, "SelectWeekText");
  90. Assert.AreEqual (true, c.ShowDayHeader, "ShowDayHeader");
  91. Assert.AreEqual (false, c.ShowGridLines, "ShowGridLines");
  92. Assert.AreEqual (true, c.ShowNextPrevMonth , "ShowNextPrevMonth");
  93. Assert.AreEqual (true, c.ShowTitle, "ShowTitle");
  94. Assert.AreEqual (TitleFormat.MonthYear, c.TitleFormat, "TitleFormat");
  95. Assert.AreEqual (DateTime.Today, c.TodaysDate , "TodaysDate");
  96. Assert.AreEqual (DateTime.MinValue, c.VisibleDate, "VisibleDate");
  97. }
  98. //
  99. // Properties
  100. //
  101. [Test]
  102. public void NextMonthTextProperty ()
  103. {
  104. PokerCalendar c = new PokerCalendar ();
  105. StringWriter sw = new StringWriter ();
  106. HtmlTextWriter tw = new HtmlTextWriter (sw);
  107. c.NextMonthText = "NextMonthText";
  108. c.RenderControl (tw);
  109. Assert.AreEqual (true, sw.ToString().IndexOf (c.NextMonthText) != -1, "NextMonthText");
  110. }
  111. [Test]
  112. public void NextPrevFormatProperty ()
  113. {
  114. DateTimeFormatInfo dateInfo = DateTimeFormatInfo.CurrentInfo;
  115. PokerCalendar c = new PokerCalendar ();
  116. StringWriter sw = new StringWriter ();
  117. HtmlTextWriter tw = new HtmlTextWriter (sw);
  118. DateTime prevMonth = dateInfo.Calendar.AddMonths (DateTime.Today, -1);
  119. DateTime nextMonth = dateInfo.Calendar.AddMonths (DateTime.Today, 1);
  120. c.NextMonthText = "NextMonthText"; // CustomText
  121. c.PrevMonthText = "PrevMonthText";
  122. c.RenderControl (tw);
  123. Assert.AreEqual (true, sw.ToString().IndexOf (c.NextMonthText) != -1, "NextPrevFormat1");
  124. Assert.AreEqual (true, sw.ToString().IndexOf (c.PrevMonthText) != -1, "NextPrevFormat2");
  125. sw = new StringWriter ();
  126. tw = new HtmlTextWriter (sw);
  127. c.NextPrevFormat = NextPrevFormat.FullMonth; // FullMonth
  128. c.RenderControl (tw);
  129. Assert.AreEqual (true, sw.ToString ().IndexOf (dateInfo.GetMonthName (dateInfo.Calendar.GetMonth (prevMonth))) != -1, "NextPrevFormat3:" + sw.ToString () + "|||" + dateInfo.GetMonthName (DateTimeFormatInfo.CurrentInfo.Calendar.GetMonth (prevMonth)));
  130. Assert.AreEqual (true, sw.ToString ().IndexOf (dateInfo.GetMonthName (dateInfo.Calendar.GetMonth (nextMonth))) != -1, "NextPrevFormat4");
  131. sw = new StringWriter ();
  132. tw = new HtmlTextWriter (sw);
  133. c.NextPrevFormat = NextPrevFormat.ShortMonth; // ShortMonth
  134. c.RenderControl (tw);
  135. Assert.AreEqual (true, sw.ToString ().IndexOf (dateInfo.GetAbbreviatedMonthName (dateInfo.Calendar.GetMonth (prevMonth))) != -1, "NextPrevFormat5");
  136. Assert.AreEqual (true, sw.ToString ().IndexOf (dateInfo.GetAbbreviatedMonthName (dateInfo.Calendar.GetMonth (nextMonth))) != -1, "NextPrevFormat6");
  137. }
  138. [Test]
  139. public void DayHeaderStyleProperty ()
  140. {
  141. PokerCalendar c = new PokerCalendar ();
  142. StringWriter sw = new StringWriter ();
  143. HtmlTextWriter tw = new HtmlTextWriter (sw);
  144. c.DayHeaderStyle.BackColor = Color.Green;
  145. c.RenderControl (tw);
  146. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "DayHeaderStyleProperty");
  147. }
  148. [Test]
  149. public void NextPrevStyleProperty ()
  150. {
  151. PokerCalendar c = new PokerCalendar ();
  152. StringWriter sw = new StringWriter ();
  153. HtmlTextWriter tw = new HtmlTextWriter (sw);
  154. c.NextPrevStyle.BackColor = Color.Green;
  155. c.RenderControl (tw);
  156. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "NextPrevStyleProperty");
  157. }
  158. [Test]
  159. public void SelectorStyleProperty ()
  160. {
  161. PokerCalendar c = new PokerCalendar ();
  162. StringWriter sw = new StringWriter ();
  163. HtmlTextWriter tw = new HtmlTextWriter (sw);
  164. c.SelectorStyle.BackColor = Color.Green;
  165. c.SelectionMode = CalendarSelectionMode.DayWeek;
  166. c.RenderControl (tw);
  167. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "SelectorStyleProperty");
  168. }
  169. //[Test]
  170. public void TitleStyleProperty ()
  171. {
  172. PokerCalendar c = new PokerCalendar ();
  173. StringWriter sw = new StringWriter ();
  174. HtmlTextWriter tw = new HtmlTextWriter (sw);
  175. c.SelectorStyle.BackColor = Color.Green;
  176. c.RenderControl (tw);
  177. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "TitleStyleProperty");
  178. }
  179. [Test]
  180. public void OtherMonthDayStyleProperty ()
  181. {
  182. PokerCalendar c = new PokerCalendar ();
  183. StringWriter sw = new StringWriter ();
  184. HtmlTextWriter tw = new HtmlTextWriter (sw);
  185. c.OtherMonthDayStyle.BackColor = Color.Green;
  186. c.RenderControl (tw);
  187. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "OtherMonthDayStyle");
  188. }
  189. [Test]
  190. public void SelectedDayStyleProperty ()
  191. {
  192. PokerCalendar c = new PokerCalendar ();
  193. StringWriter sw = new StringWriter ();
  194. HtmlTextWriter tw = new HtmlTextWriter (sw);
  195. c.SelectedDayStyle.BackColor = Color.Green;
  196. c.TodaysDate = new DateTime (2000, 1,1);
  197. ((IPostBackEventHandler)c).RaisePostBackEvent ("0001");
  198. c.RenderControl (tw);
  199. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "SelectedDayStyle");
  200. }
  201. [Test]
  202. public void TodayDayStyleProperty ()
  203. {
  204. PokerCalendar c = new PokerCalendar ();
  205. StringWriter sw = new StringWriter ();
  206. HtmlTextWriter tw = new HtmlTextWriter (sw);
  207. c.TodayDayStyle.BackColor = Color.Green;
  208. c.RenderControl (tw);
  209. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "TodayDayStyle");
  210. }
  211. [Test]
  212. public void WeekendDayStyleProperty ()
  213. {
  214. PokerCalendar c = new PokerCalendar ();
  215. StringWriter sw = new StringWriter ();
  216. HtmlTextWriter tw = new HtmlTextWriter (sw);
  217. c.WeekendDayStyle.BackColor = Color.Green;
  218. c.RenderControl (tw);
  219. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "WeekendDayStyle");
  220. }
  221. [Test]
  222. [Category ("NotWorking")]
  223. public void SelectDateProperty ()
  224. {
  225. PokerCalendar c = new PokerCalendar ();
  226. DateTime now = DateTime.Now;
  227. DateTime today = now.Date;
  228. c.SelectedDate = today;
  229. Assert.AreEqual (today, c.SelectedDate, "SelectDateProperty #1");
  230. c.SelectedDate = now;
  231. Assert.AreEqual (today, c.SelectedDate, "SelectDateProperty #2");
  232. }
  233. [Test]
  234. public void PrevMonthTextProperty ()
  235. {
  236. PokerCalendar c = new PokerCalendar ();
  237. StringWriter sw = new StringWriter ();
  238. HtmlTextWriter tw = new HtmlTextWriter (sw);
  239. c.PrevMonthText = "PrevMonthText";
  240. c.RenderControl (tw);
  241. Assert.AreEqual (true, sw.ToString().IndexOf (c.PrevMonthText) != -1, "PrevMonthText");
  242. }
  243. [Test]
  244. public void ShowNextPrevMonthProperty ()
  245. {
  246. PokerCalendar c = new PokerCalendar ();
  247. StringWriter sw = new StringWriter ();
  248. HtmlTextWriter tw = new HtmlTextWriter (sw);
  249. c.NextMonthText = "NextMonthText";
  250. c.PrevMonthText = "PrevMonthText";
  251. c.RenderControl (tw);
  252. Assert.AreEqual (true, sw.ToString().IndexOf (c.PrevMonthText) != -1, "ShowNextPrevMonth1");
  253. Assert.AreEqual (true, sw.ToString().IndexOf (c.NextMonthText) != -1, "ShowNextPrevMonth2");
  254. c.ShowNextPrevMonth = false;
  255. sw = new StringWriter ();
  256. tw = new HtmlTextWriter (sw);
  257. c.RenderControl (tw);
  258. Assert.AreEqual (true, sw.ToString().IndexOf (c.PrevMonthText) == -1, "ShowNextPrevMonth3");
  259. Assert.AreEqual (true, sw.ToString().IndexOf (c.NextMonthText) == -1, "ShowNextPrevMonth4");
  260. }
  261. [Test]
  262. public void ShowTitleProperty ()
  263. {
  264. String monthName;
  265. DateTimeFormatInfo dateInfo = DateTimeFormatInfo.CurrentInfo;
  266. PokerCalendar c = new PokerCalendar ();
  267. StringWriter sw = new StringWriter ();
  268. HtmlTextWriter tw = new HtmlTextWriter (sw);
  269. c.NextMonthText = "NextMonthText";
  270. c.PrevMonthText = "PrevMonthText";
  271. c.RenderControl (tw);
  272. monthName = dateInfo.GetMonthName (dateInfo.Calendar.GetMonth (DateTime.Today));
  273. Assert.AreEqual (true, sw.ToString().IndexOf (c.PrevMonthText) != -1, "ShowTitle1");
  274. Assert.AreEqual (true, sw.ToString().IndexOf (c.NextMonthText) != -1, "ShowTitle2");
  275. Assert.AreEqual (true, sw.ToString().IndexOf (monthName) != -1, "ShowTitle3");
  276. c.ShowTitle = false;
  277. sw = new StringWriter ();
  278. tw = new HtmlTextWriter (sw);
  279. c.RenderControl (tw);
  280. Assert.AreEqual (true, sw.ToString().IndexOf (c.PrevMonthText) == -1, "ShowTitle4");
  281. Assert.AreEqual (true, sw.ToString().IndexOf (c.NextMonthText) == -1, "ShowTitle5");
  282. Assert.AreEqual (true, sw.ToString().IndexOf (monthName) == -1, "ShowTitle6");
  283. }
  284. //
  285. // Properties exceptions
  286. //
  287. [Test]
  288. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  289. public void CellPaddingException ()
  290. {
  291. PokerCalendar p = new PokerCalendar ();
  292. p.CellPadding = -2;
  293. }
  294. [Test]
  295. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  296. public void CellSpacingException ()
  297. {
  298. PokerCalendar c = new PokerCalendar ();
  299. c.CellSpacing = -2;
  300. }
  301. [Test]
  302. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  303. public void DayNameFormatException ()
  304. {
  305. PokerCalendar c = new PokerCalendar ();
  306. c.DayNameFormat = (DayNameFormat) 10;
  307. }
  308. [Test]
  309. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  310. public void FirstDayOfWeekException ()
  311. {
  312. PokerCalendar c = new PokerCalendar ();
  313. c.FirstDayOfWeek = (FirstDayOfWeek) 15;
  314. }
  315. [Test]
  316. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  317. public void NextPrevFormatException ()
  318. {
  319. PokerCalendar c = new PokerCalendar ();
  320. c.NextPrevFormat = (NextPrevFormat) 15;
  321. }
  322. [Test]
  323. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  324. public void SelectionModeException ()
  325. {
  326. PokerCalendar c = new PokerCalendar ();
  327. c.SelectionMode = (CalendarSelectionMode) 15;
  328. }
  329. [Test]
  330. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  331. public void TitleFormatException ()
  332. {
  333. PokerCalendar c = new PokerCalendar ();
  334. c.TitleFormat = (TitleFormat) 15;
  335. }
  336. //
  337. // Events
  338. //
  339. private bool eventFired;
  340. private void SelectionChangedHandler (object sender, EventArgs e)
  341. {
  342. eventFired = true;
  343. }
  344. private void VisibleMonthChangedHandler (object sender, MonthChangedEventArgs e)
  345. {
  346. eventFired = true;
  347. }
  348. int days;
  349. private void DayRenderEventHandler (object sender, DayRenderEventArgs e)
  350. {
  351. days++;
  352. e.Cell.BackColor = Color.Yellow;
  353. }
  354. [Test]
  355. public void SelectionChanged ()
  356. {
  357. PokerCalendar c = new PokerCalendar ();
  358. c.SelectionChanged += new EventHandler (SelectionChangedHandler);
  359. eventFired = false;
  360. ((IPostBackEventHandler)c).RaisePostBackEvent ("0001");
  361. Assert.AreEqual (true, eventFired, "SelectionChanged event");
  362. }
  363. [Test]
  364. public void VisibleMonthChanged ()
  365. {
  366. PokerCalendar c = new PokerCalendar ();
  367. c.VisibleMonthChanged += new MonthChangedEventHandler (VisibleMonthChangedHandler);
  368. eventFired = false;
  369. ((IPostBackEventHandler)c).RaisePostBackEvent ("V0001");
  370. Assert.AreEqual (true, eventFired, "VisibleMonthChanged event");
  371. }
  372. [Test]
  373. public void DayRender ()
  374. {
  375. PokerCalendar c = new PokerCalendar ();
  376. c.DayRender += new DayRenderEventHandler (DayRenderEventHandler);
  377. days = 0;
  378. StringWriter sw = new StringWriter ();
  379. HtmlTextWriter tw = new HtmlTextWriter (sw);
  380. c.RenderControl (tw);
  381. Assert.AreEqual (6 * 7, days, "DayRender event");
  382. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("yellow") != -1, "DayRender event change");
  383. }
  384. // ViewState
  385. [Test]
  386. public void Calendar_ViewState ()
  387. {
  388. PokerCalendar p = new PokerCalendar ();
  389. p.CellPadding = 10;
  390. p.CellSpacing = 20;
  391. p.DayNameFormat = DayNameFormat.Short;
  392. p.FirstDayOfWeek = FirstDayOfWeek.Friday;
  393. p.NextMonthText = "NextMonth";
  394. p.NextPrevFormat = NextPrevFormat.ShortMonth;
  395. p.PrevMonthText = "PrevMonth";
  396. p.SelectionMode = CalendarSelectionMode.DayWeek;
  397. p.SelectMonthText = "SelectMonth";
  398. p.SelectWeekText = "SelectWeek";
  399. p.ShowDayHeader = false;
  400. p.ShowGridLines = true;
  401. p.ShowNextPrevMonth = false;
  402. p.ShowTitle = false;
  403. p.TitleFormat = TitleFormat.Month;
  404. p.TodaysDate = new DateTime (1999,1,1);
  405. p.VisibleDate = new DateTime (1998,1,1);
  406. #if NET_2_0
  407. p.Caption = "This is a Caption";
  408. p.CaptionAlign = TableCaptionAlign.Right;
  409. #endif
  410. p.DayHeaderStyle.BackColor = Color.Blue;
  411. p.DayStyle.BackColor = Color.Yellow;
  412. p.NextPrevStyle.BackColor = Color.Red;
  413. p.OtherMonthDayStyle.BackColor = Color.Green;
  414. p.SelectedDayStyle.BackColor = Color.Silver;
  415. p.SelectorStyle.BackColor = Color.Pink;
  416. p.TodayDayStyle.BackColor = Color.White;
  417. p.WeekendDayStyle.BackColor = Color.Brown;
  418. object state = p.SaveState ();
  419. PokerCalendar copy = new PokerCalendar ();
  420. copy.LoadState (state);
  421. Assert.AreEqual (10, copy.CellPadding, "CellPadding");
  422. Assert.AreEqual (20, copy.CellSpacing, "CellSpacing");
  423. Assert.AreEqual (DayNameFormat.Short, copy.DayNameFormat, "DayNameFormat");
  424. Assert.AreEqual (FirstDayOfWeek.Friday, copy.FirstDayOfWeek, "FirstDayOfWeek");
  425. Assert.AreEqual ("NextMonth", copy.NextMonthText, "NextMonthText");
  426. Assert.AreEqual (NextPrevFormat.ShortMonth, copy.NextPrevFormat, "NextPrevFormat");
  427. Assert.AreEqual ("PrevMonth", copy.PrevMonthText, "PrevMonthText");
  428. Assert.AreEqual (CalendarSelectionMode.DayWeek, copy.SelectionMode, "SelectionMode");
  429. Assert.AreEqual ("SelectMonth", copy.SelectMonthText, "SelectMonthText");
  430. Assert.AreEqual ("SelectWeek", copy.SelectWeekText, "SelectWeekText");
  431. Assert.AreEqual (false, copy.ShowDayHeader, "ShowDayHeader");
  432. Assert.AreEqual (true, copy.ShowGridLines, "ShowGridLines");
  433. Assert.AreEqual (false, copy.ShowNextPrevMonth, "ShowNextPrevMonth");
  434. Assert.AreEqual (false, copy.ShowTitle, "ShowTitle");
  435. Assert.AreEqual (TitleFormat.Month, copy.TitleFormat, "TitleFormat");
  436. Assert.AreEqual (new DateTime (1999,1,1), copy.TodaysDate, "TodaysDate");
  437. Assert.AreEqual (new DateTime (1998,1,1), copy.VisibleDate, "VisibleDate");
  438. #if NET_2_0
  439. Assert.AreEqual ("This is a Caption", copy.Caption, "Caption");
  440. Assert.AreEqual (TableCaptionAlign.Right, copy.CaptionAlign, "CaptionAlign");
  441. #endif
  442. copy.ShowDayHeader = true;
  443. copy.ShowNextPrevMonth = true;
  444. copy.ShowTitle = true;
  445. copy.TodaysDate = copy.VisibleDate;
  446. {
  447. StringWriter sw = new StringWriter ();
  448. HtmlTextWriter tw = new HtmlTextWriter (sw);
  449. copy.RenderControl (tw);
  450. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("blue") != -1, "DayHeaderStyle");
  451. }
  452. {
  453. StringWriter sw = new StringWriter ();
  454. HtmlTextWriter tw = new HtmlTextWriter (sw);
  455. copy.RenderControl (tw);
  456. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("yellow") != -1, "BackColor");
  457. }
  458. {
  459. StringWriter sw = new StringWriter ();
  460. HtmlTextWriter tw = new HtmlTextWriter (sw);
  461. copy.RenderControl (tw);
  462. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("red") != -1, "NextPrevStyle");
  463. }
  464. {
  465. StringWriter sw = new StringWriter ();
  466. HtmlTextWriter tw = new HtmlTextWriter (sw);
  467. copy.RenderControl (tw);
  468. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "OtherMonthDayStyle");
  469. }
  470. {
  471. StringWriter sw = new StringWriter ();
  472. HtmlTextWriter tw = new HtmlTextWriter (sw);
  473. copy.RenderControl (tw);
  474. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("silver") != -1, "SelectedDayStyle");
  475. }
  476. {
  477. StringWriter sw = new StringWriter ();
  478. HtmlTextWriter tw = new HtmlTextWriter (sw);
  479. copy.RenderControl (tw);
  480. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("green") != -1, "OtherMonthDayStyle");
  481. }
  482. {
  483. StringWriter sw = new StringWriter ();
  484. HtmlTextWriter tw = new HtmlTextWriter (sw);
  485. copy.RenderControl (tw);
  486. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("pink") != -1, "SelectorStyle");
  487. }
  488. {
  489. StringWriter sw = new StringWriter ();
  490. HtmlTextWriter tw = new HtmlTextWriter (sw);
  491. copy.RenderControl (tw);
  492. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("white") != -1, "TodayDayStyle");
  493. }
  494. {
  495. StringWriter sw = new StringWriter ();
  496. HtmlTextWriter tw = new HtmlTextWriter (sw);
  497. copy.RenderControl (tw);
  498. Assert.AreEqual (true, sw.ToString().ToLower().IndexOf ("brown") != -1, "WeekendDayStyle");
  499. }
  500. }
  501. string tofind = "";
  502. public void Event_TestDayRenderCellAdd_DayRender(object sender, DayRenderEventArgs e) {
  503. if (e.Day.Date.Day == 1)
  504. e.Cell.Controls.Add (new LiteralControl (tofind));
  505. }
  506. [Test]
  507. public void TestDayRenderCellAdd ()
  508. {
  509. PokerCalendar p = new PokerCalendar ();
  510. tofind = Guid.NewGuid ().ToString ();
  511. p.DayRender += new DayRenderEventHandler(Event_TestDayRenderCellAdd_DayRender);
  512. Assert.IsTrue (p.Render ().IndexOf (tofind) != -1, "control added");
  513. }
  514. //
  515. // Here we test rendering May 2005
  516. // April 2005 May 2005 June 2005
  517. // Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
  518. // 1 2 1 2 3 4 5 6 7 1 2 3 4
  519. // 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
  520. // 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
  521. // 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
  522. // 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
  523. //
  524. // Microsoft renders months like this (where Blah 1st falls on Sunday) by rendering
  525. // the last week of the other month.
  526. //
  527. bool first = true;
  528. public void Event_TestRenderMonthStartsOnSunday_DayRender(object sender, DayRenderEventArgs e) {
  529. if (first) {
  530. Assert.IsTrue (e.Day.IsOtherMonth);
  531. Assert.AreEqual (new DateTime (2005, 4, 24), e.Day.Date);
  532. first = false;
  533. }
  534. }
  535. [Test]
  536. public void TestRenderMonthStartsOnSunday ()
  537. {
  538. Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US", false);
  539. PokerCalendar p = new PokerCalendar ();
  540. p.TodaysDate = new DateTime (2005, 5, 14);
  541. first = true;
  542. p.DayRender += new DayRenderEventHandler(Event_TestRenderMonthStartsOnSunday_DayRender);
  543. p.Render ();
  544. }
  545. [Test]
  546. public void TestSelectedColorDefault ()
  547. {
  548. PokerCalendar p = new PokerCalendar ();
  549. p.TodaysDate = new DateTime (2005, 8, 4);
  550. p.SelectedDate = p.TodaysDate;
  551. string s = p.Render();
  552. Assert.IsTrue (s.IndexOf ("color:White") != 1 && s.IndexOf ("background-color:Silver") != -1, "A1");
  553. }
  554. [Test]
  555. public void HaveID ()
  556. {
  557. PokerCalendar p = new PokerCalendar ();
  558. p.ID = "hola";
  559. p.TodaysDate = new DateTime (2005, 8, 4);
  560. p.SelectedDate = p.TodaysDate;
  561. string s = p.Render();
  562. Assert.IsTrue (s.IndexOf ("id=\"hola\"") != -1, "#01");
  563. }
  564. /*
  565. * Not meant to be run. Just to get a stack trace.
  566. [Test]
  567. public void NoCreateStyleCollection ()
  568. {
  569. PokerCalendar p = new PokerCalendar ();
  570. p.ID = "hola";
  571. p.TodaysDate = new DateTime (2005, 8, 4);
  572. p.SelectedDate = p.TodaysDate;
  573. string s = p.Render();
  574. Assert.IsTrue (p.CS_Called == false, "#01");
  575. }
  576. */
  577. [Test]
  578. [Category ("NotWorking")]
  579. public void HaveBaseAttributes ()
  580. {
  581. PokerCalendar p = new PokerCalendar ();
  582. p.ID = "hola";
  583. p.ToolTip = "adios";
  584. p.TodaysDate = new DateTime (2005, 8, 4);
  585. p.SelectedDate = p.TodaysDate;
  586. string s = p.Render();
  587. Assert.IsTrue (s.IndexOf ("adios") != -1, "#01");
  588. Assert.IsTrue (p.CS_Called == true, "#02");
  589. }
  590. }
  591. }