ListViewTest.cs 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323
  1. //
  2. // System.Web.UI.WebControls.ListView
  3. //
  4. // Authors:
  5. // Marek Habersack ([email protected])
  6. //
  7. // (C) 2008-2010 Novell, Inc
  8. //
  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.Collections.Generic;
  31. using System.Collections.Specialized;
  32. using System.Diagnostics;
  33. using System.Drawing;
  34. using System.Reflection;
  35. using System.Web.UI;
  36. using System.Web.UI.HtmlControls;
  37. using System.Web.UI.WebControls;
  38. using NUnit.Framework;
  39. using MonoTests.SystemWeb.Framework;
  40. using MonoTests.stand_alone.WebHarness;
  41. namespace MonoTests.System.Web.UI.WebControls
  42. {
  43. public sealed class ListViewPoker : ListView
  44. {
  45. EventRecorder recorder;
  46. public StateBag StateBag {
  47. get { return base.ViewState; }
  48. }
  49. void RecordEvent (string suffix)
  50. {
  51. if (recorder == null)
  52. return;
  53. recorder.Record (suffix);
  54. }
  55. public ListViewPoker ()
  56. : base ()
  57. {
  58. }
  59. public ListViewPoker (EventRecorder recorder)
  60. {
  61. this.recorder = recorder;
  62. }
  63. internal void SetEventRecorder (EventRecorder recorder)
  64. {
  65. this.recorder = recorder;
  66. }
  67. public override void ExtractItemValues (IOrderedDictionary itemValues, ListViewItem item, bool includePrimaryKey)
  68. {
  69. RecordEvent ("Enter");
  70. base.ExtractItemValues (itemValues, item, includePrimaryKey);
  71. RecordEvent ("Leave");
  72. }
  73. protected override void OnItemCanceling (ListViewCancelEventArgs e)
  74. {
  75. RecordEvent ("Enter");
  76. base.OnItemCanceling (e);
  77. RecordEvent ("Leave");
  78. }
  79. protected override void OnItemCommand (ListViewCommandEventArgs e)
  80. {
  81. RecordEvent ("Enter");
  82. base.OnItemCommand (e);
  83. RecordEvent ("Leave");
  84. }
  85. protected override void OnItemCreated (ListViewItemEventArgs e)
  86. {
  87. RecordEvent ("Enter");
  88. base.OnItemCreated (e);
  89. RecordEvent ("Leave");
  90. }
  91. protected override void OnItemDataBound (ListViewItemEventArgs e)
  92. {
  93. RecordEvent ("Enter");
  94. base.OnItemDataBound (e);
  95. RecordEvent ("Leave");
  96. }
  97. protected override void OnItemDeleted (ListViewDeletedEventArgs e)
  98. {
  99. RecordEvent ("Enter");
  100. base.OnItemDeleted (e);
  101. RecordEvent ("Leave");
  102. }
  103. protected override void OnItemDeleting (ListViewDeleteEventArgs e)
  104. {
  105. RecordEvent ("Enter");
  106. base.OnItemDeleting (e);
  107. RecordEvent ("Leave");
  108. }
  109. protected override void OnItemEditing (ListViewEditEventArgs e)
  110. {
  111. RecordEvent ("Enter");
  112. base.OnItemEditing (e);
  113. RecordEvent ("Leave");
  114. }
  115. protected override void OnItemInserted (ListViewInsertedEventArgs e)
  116. {
  117. RecordEvent ("Enter");
  118. base.OnItemInserted (e);
  119. RecordEvent ("Leave");
  120. }
  121. protected override void OnItemInserting (ListViewInsertEventArgs e)
  122. {
  123. RecordEvent ("Enter");
  124. base.OnItemInserting (e);
  125. RecordEvent ("Leave");
  126. }
  127. protected override void OnItemUpdated (ListViewUpdatedEventArgs e)
  128. {
  129. RecordEvent ("Enter");
  130. base.OnItemUpdated (e);
  131. RecordEvent ("Leave");
  132. }
  133. protected override void OnItemUpdating (ListViewUpdateEventArgs e)
  134. {
  135. RecordEvent ("Enter");
  136. base.OnItemUpdating (e);
  137. RecordEvent ("Leave");
  138. }
  139. protected override void OnLayoutCreated (EventArgs e)
  140. {
  141. RecordEvent ("Enter");
  142. base.OnLayoutCreated (e);
  143. RecordEvent ("Leave");
  144. }
  145. protected override void OnPagePropertiesChanged (EventArgs e)
  146. {
  147. RecordEvent ("Enter");
  148. base.OnPagePropertiesChanged (e);
  149. RecordEvent ("Leave");
  150. }
  151. protected override void OnPagePropertiesChanging (PagePropertiesChangingEventArgs e)
  152. {
  153. RecordEvent ("Enter");
  154. base.OnPagePropertiesChanging (e);
  155. RecordEvent ("Leave");
  156. }
  157. protected override void OnSelectedIndexChanged (EventArgs e)
  158. {
  159. RecordEvent ("Enter");
  160. base.OnSelectedIndexChanged (e);
  161. RecordEvent ("Leave");
  162. }
  163. protected override void OnSelectedIndexChanging (ListViewSelectEventArgs e)
  164. {
  165. RecordEvent ("Enter");
  166. base.OnSelectedIndexChanging (e);
  167. RecordEvent ("Leave");
  168. }
  169. protected override void OnSorted (EventArgs e)
  170. {
  171. RecordEvent ("Enter");
  172. base.OnSorted (e);
  173. RecordEvent ("Leave");
  174. }
  175. protected override void OnSorting (ListViewSortEventArgs e)
  176. {
  177. RecordEvent ("Enter");
  178. base.OnSorting (e);
  179. RecordEvent ("Leave");
  180. }
  181. protected override void OnTotalRowCountAvailable (PageEventArgs e)
  182. {
  183. RecordEvent ("Enter");
  184. base.OnTotalRowCountAvailable (e);
  185. RecordEvent ("Leave");
  186. }
  187. public void DoSetPageProperties (int startRowIndex, int maximumRows, bool databind)
  188. {
  189. SetPageProperties (startRowIndex, maximumRows, databind);
  190. }
  191. public bool GetRequiresDataBinding ()
  192. {
  193. return RequiresDataBinding;
  194. }
  195. public int GetMaximumRowsProperty ()
  196. {
  197. return MaximumRows;
  198. }
  199. public int GetStartRowIndexProperty ()
  200. {
  201. return StartRowIndex;
  202. }
  203. public void DoAddControlToContainer (Control control, Control container, int addLocation)
  204. {
  205. AddControlToContainer (control, container, addLocation);
  206. }
  207. public void DoCreateControlStyle ()
  208. {
  209. CreateControlStyle ();
  210. }
  211. public ListViewDataItem DoCreateDataItem (int dataItemIndex, int displayIndex)
  212. {
  213. return CreateDataItem (dataItemIndex, displayIndex);
  214. }
  215. public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
  216. {
  217. return CreateDataSourceSelectArguments ();
  218. }
  219. public void DoCreateEmptyDataItem ()
  220. {
  221. CreateEmptyDataItem ();
  222. }
  223. public ListViewItem DoCreateEmptyItem ()
  224. {
  225. return CreateEmptyItem ();
  226. }
  227. public ListViewItem DoCreateInsertItem ()
  228. {
  229. return CreateInsertItem ();
  230. }
  231. public ListViewItem DoCreateItem (ListViewItemType type)
  232. {
  233. return CreateItem (type);
  234. }
  235. public void DoCreateLayoutTemplate ()
  236. {
  237. CreateLayoutTemplate ();
  238. }
  239. public void DoEnsureLayoutTemplate ()
  240. {
  241. EnsureLayoutTemplate ();
  242. }
  243. public Control DoFindPlaceholder (string containerID, Control container)
  244. {
  245. return FindPlaceholder (containerID, container);
  246. }
  247. public void DoInstantiateEmptyDataTemplate (Control container)
  248. {
  249. InstantiateEmptyDataTemplate (container);
  250. }
  251. public void DoInstantiateEmptyItemTemplate (Control container)
  252. {
  253. InstantiateEmptyItemTemplate (container);
  254. }
  255. public void DoInstantiateGroupSeparatorTemplate (Control container)
  256. {
  257. InstantiateGroupSeparatorTemplate (container);
  258. }
  259. public void DoInstantiateGroupTemplate (Control container)
  260. {
  261. InstantiateGroupTemplate (container);
  262. }
  263. public void DoInstantiateInsertItemTemplate (Control container)
  264. {
  265. InstantiateInsertItemTemplate (container);
  266. }
  267. public void DoInstantiateItemSeparatorTemplate (Control container)
  268. {
  269. InstantiateItemSeparatorTemplate (container);
  270. }
  271. public void DoInstantiateItemTemplate (Control container, int displayIndex)
  272. {
  273. InstantiateItemTemplate (container, displayIndex);
  274. }
  275. }
  276. class TestTemplate : ITemplate
  277. {
  278. public void InstantiateIn (Control container)
  279. {
  280. Control control = new Control ();
  281. control.ID = "TestTemplateControl";
  282. container.Controls.Add (control);
  283. }
  284. }
  285. class DeepTestTemplate : ITemplate
  286. {
  287. public void InstantiateIn (Control container)
  288. {
  289. Control top = new Control (), control;
  290. top.Controls.Add (new Control ());
  291. control = new Control ();
  292. control.ID = "DeepTestTemplateControl";
  293. top.Controls [0].Controls.Add (control);
  294. container.Controls.Add (top);
  295. }
  296. }
  297. [TestFixture]
  298. public class ListViewTest
  299. {
  300. enum ListViewItemTemplate
  301. {
  302. EmptyData,
  303. EmptyItem,
  304. GroupSeparator,
  305. Group,
  306. InsertItem,
  307. ItemSeparator,
  308. Item,
  309. EditItem,
  310. AlternatingItem,
  311. SelectedItem
  312. }
  313. [TestFixtureSetUp]
  314. public void ListView_Init ()
  315. {
  316. #if VISUAL_STUDIO
  317. WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTest.aspx", "ListViewTest.aspx");
  318. WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTotalRowCount_Bug535701_1.aspx", "ListViewTotalRowCount_Bug535701_1.aspx");
  319. WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTotalRowCount_Bug535701_2.aspx", "ListViewTotalRowCount_Bug535701_2.aspx");
  320. WebTest.CopyResource (GetType (), "MonoTests.System.Web.Extensions.resources.ListViewTotalRowCount_Bug604053.aspx", "ListViewTotalRowCount_Bug604053.aspx");
  321. #else
  322. WebTest.CopyResource (GetType (), "ListViewTest.aspx", "ListViewTest.aspx");
  323. WebTest.CopyResource (GetType (), "ListViewTotalRowCount_Bug535701_1.aspx", "ListViewTotalRowCount_Bug535701_1.aspx");
  324. WebTest.CopyResource (GetType (), "ListViewTotalRowCount_Bug535701_2.aspx", "ListViewTotalRowCount_Bug535701_2.aspx");
  325. WebTest.CopyResource (GetType (), "ListViewTotalRowCount_Bug604053.aspx", "ListViewTotalRowCount_Bug604053.aspx");
  326. #endif
  327. }
  328. [Test]
  329. public void ListView_InitialValues ()
  330. {
  331. ListViewPoker lvp = new ListViewPoker (null);
  332. Assert.AreEqual (0, lvp.StateBag.Count, "ViewState.Count");
  333. Assert.AreEqual (true, lvp.ConvertEmptyStringToNull, "ConvertEmptyStringToNull");
  334. Assert.AreEqual (0, lvp.DataKeyNames.Length, "DataKeyNames.Length");
  335. Assert.AreEqual (-1, lvp.EditIndex, "EditIndex");
  336. Assert.AreEqual (null, lvp.EditItem, "EditItem");
  337. Assert.AreEqual (null, lvp.EditItemTemplate, "EditItemTemplate");
  338. Assert.AreEqual (null, lvp.EmptyDataTemplate, "EmptyDataTemplate");
  339. Assert.AreEqual (null, lvp.EmptyItemTemplate, "EmptyItemTemplate");
  340. Assert.AreEqual (false, lvp.EnableModelValidation, "EnableModelValidation");
  341. Assert.AreEqual (1, lvp.GroupItemCount, "GroupItemCount");
  342. Assert.AreEqual ("groupPlaceholder", lvp.GroupPlaceholderID, "GroupPlaceholderID");
  343. Assert.AreEqual (null, lvp.GroupSeparatorTemplate, "GroupSeparatorTemplate");
  344. Assert.AreEqual (null, lvp.GroupTemplate, "GroupTemplate");
  345. Assert.AreEqual (null, lvp.InsertItem, "InsertItem");
  346. Assert.AreEqual (InsertItemPosition.None, lvp.InsertItemPosition, "InsertItemPosition");
  347. Assert.AreEqual (null, lvp.InsertItemTemplate, "InsertItemTemplate");
  348. Assert.AreEqual ("itemPlaceholder", lvp.ItemPlaceholderID, "ItemPlaceholderID");
  349. Assert.AreEqual (0, lvp.Items.Count, "Items.Length");
  350. Assert.AreEqual (null, lvp.ItemSeparatorTemplate, "ItemSeparatorTemplate");
  351. Assert.AreEqual (null, lvp.ItemTemplate, "ItemTemplate");
  352. Assert.AreEqual (null, lvp.LayoutTemplate, "LayoutTemplate");
  353. Assert.AreEqual (-1, lvp.GetMaximumRowsProperty (), "MaximumRows");
  354. Assert.AreEqual (null, lvp.SelectedPersistedDataKey, "SelectedPersistedDataKey");
  355. Assert.AreEqual (-1, lvp.SelectedIndex, "SelectedIndex");
  356. Assert.AreEqual (null, lvp.SelectedItemTemplate, "SelectedItemTemplate");
  357. Assert.AreEqual (SortDirection.Ascending, lvp.SortDirection, "SortDirection");
  358. Assert.AreEqual (String.Empty, lvp.SortExpression, "SortExpression");
  359. Assert.AreEqual (0, lvp.GetStartRowIndexProperty (), "StartRowIndex");
  360. }
  361. [Test]
  362. [ExpectedException (typeof (InvalidOperationException))]
  363. public void ListView_InitialValues_SelectedValue ()
  364. {
  365. var lvp = new ListViewPoker (null);
  366. Assert.AreEqual (null, lvp.SelectedValue, "SelectedValue");
  367. }
  368. [Test]
  369. public void ListView_SetPageProperties_Events ()
  370. {
  371. var events = new EventRecorder ();
  372. var lvp = new ListViewPoker (events);
  373. // No events expected: databind is false
  374. events.Clear ();
  375. lvp.DoSetPageProperties (0, 1, false);
  376. // No events expected: startRowIndex and maximumRows don't change values
  377. events.Clear ();
  378. lvp.DoSetPageProperties (0, 1, true);
  379. Assert.AreEqual (0, events.Count, "#A1");
  380. // No events expected: startRowIndex changes, but databind is false
  381. events.Clear();
  382. lvp.DoSetPageProperties(1, 1, false);
  383. Assert.AreEqual (0, events.Count, "#A2");
  384. // No events expected: maximumRows changes, but databind is false
  385. events.Clear();
  386. lvp.DoSetPageProperties(1, 2, false);
  387. Assert.AreEqual (0, events.Count, "#A3");
  388. // No events expected: maximumRows and startRowIndex change but databind is
  389. // false
  390. events.Clear();
  391. lvp.DoSetPageProperties(3, 4, false);
  392. Assert.AreEqual (0, events.Count, "#A4");
  393. // Events expected: maximumRows and startRowIndex change and databind is
  394. // true
  395. events.Clear();
  396. lvp.DoSetPageProperties(5, 6, true);
  397. Assert.AreEqual (4, events.Count, "#A5");
  398. Assert.AreEqual ("OnPagePropertiesChanging:Enter", events [0], "#A6");
  399. Assert.AreEqual ("OnPagePropertiesChanging:Leave", events [1], "#A7");
  400. Assert.AreEqual ("OnPagePropertiesChanged:Enter", events [2], "#A8");
  401. Assert.AreEqual ("OnPagePropertiesChanged:Leave", events [3], "#A9");
  402. // Events expected: maximumRows changes and databind is true
  403. events.Clear();
  404. lvp.DoSetPageProperties(5, 7, true);
  405. Assert.AreEqual (4, events.Count, "#A10");
  406. Assert.AreEqual ("OnPagePropertiesChanging:Enter", events [0], "#A11");
  407. Assert.AreEqual ("OnPagePropertiesChanging:Leave", events [1], "#A12");
  408. Assert.AreEqual ("OnPagePropertiesChanged:Enter", events [2], "#A13");
  409. Assert.AreEqual ("OnPagePropertiesChanged:Leave", events [3], "#A14");
  410. // Events expected: startRowIndex changes and databind is true
  411. events.Clear();
  412. lvp.DoSetPageProperties(6, 7, true);
  413. Assert.AreEqual (4, events.Count, "#A15");
  414. Assert.AreEqual ("OnPagePropertiesChanging:Enter", events [0], "#A16");
  415. Assert.AreEqual ("OnPagePropertiesChanging:Leave", events [1], "#A17");
  416. Assert.AreEqual ("OnPagePropertiesChanged:Enter", events [2], "#A18");
  417. Assert.AreEqual ("OnPagePropertiesChanged:Leave", events [3], "#A19");
  418. }
  419. [Test]
  420. [ExpectedException (typeof (ArgumentNullException))]
  421. public void ListView_AddControlToContainer_NullControl ()
  422. {
  423. var lvp = new ListViewPoker ();
  424. Control container = new Control ();
  425. Control control = new Control ();
  426. control.ID = "TestControl";
  427. lvp.DoAddControlToContainer (null, container, 0);
  428. Assert.AreEqual (0, container.Controls.Count, "#A1");
  429. }
  430. [Test]
  431. [ExpectedException (typeof (NullReferenceException))]
  432. public void ListView_AddControlToContainer_NullContainer ()
  433. {
  434. var lvp = new ListViewPoker ();
  435. Control container = new Control ();
  436. Control control = new Control ();
  437. control.ID = "TestControl";
  438. lvp.DoAddControlToContainer (control, null, 0);
  439. Assert.AreEqual (0, container.Controls.Count, "#A2");
  440. }
  441. [Test]
  442. public void ListView_AddControlToContainer ()
  443. {
  444. var lvp = new ListViewPoker ();
  445. Control container = new Control ();
  446. Control control = new Control ();
  447. control.ID = "TestControl";
  448. lvp.DoAddControlToContainer (control, container, 0);
  449. Assert.AreEqual (typeof (Control), container.Controls [0].GetType (), "#A1");
  450. Assert.AreEqual ("TestControl", container.Controls [0].ID, "#A2");
  451. container = new HtmlTable ();
  452. lvp.DoAddControlToContainer (control, container, 0);
  453. Assert.AreEqual ("System.Web.UI.WebControls.ListViewTableRow", container.Controls [0].GetType ().ToString (), "#B1");
  454. Assert.AreEqual ("TestControl", container.Controls [0].Controls [0].ID, "#B2");
  455. container = new HtmlTableRow ();
  456. lvp.DoAddControlToContainer (control, container, 0);
  457. Assert.AreEqual ("System.Web.UI.WebControls.ListViewTableCell", container.Controls [0].GetType ().ToString (), "#C1");
  458. Assert.AreEqual ("TestControl", container.Controls [0].Controls [0].ID, "#C2");
  459. container = new Control ();
  460. lvp.DoAddControlToContainer (control, container, -1);
  461. }
  462. [Test]
  463. [ExpectedException (typeof (NotSupportedException))]
  464. public void ListView_CreateControlStyle ()
  465. {
  466. var lvp = new ListViewPoker ();
  467. lvp.DoCreateControlStyle ();
  468. }
  469. [Test]
  470. public void ListView_CreateDataItem ()
  471. {
  472. var lvp = new ListViewPoker ();
  473. ListViewDataItem lvdi = lvp.DoCreateDataItem (0, 0);
  474. Assert.IsTrue (lvdi != null, "#A1");
  475. Assert.AreEqual (null, lvdi.DataItem, "#A2");
  476. Assert.AreEqual (0, lvdi.DataItemIndex, "#A3");
  477. Assert.AreEqual (0, lvdi.DisplayIndex, "#A4");
  478. Assert.AreEqual (ListViewItemType.DataItem, lvdi.ItemType, "#A5");
  479. lvdi = lvp.DoCreateDataItem (-1, -1);
  480. Assert.AreEqual (-1, lvdi.DataItemIndex, "#A6");
  481. Assert.AreEqual (-1, lvdi.DisplayIndex, "#A7");
  482. }
  483. [Test]
  484. public void ListView_CreateDataSourceSelectArguments ()
  485. {
  486. var lvp = new ListViewPoker ();
  487. DataSourceSelectArguments args = lvp.DoCreateDataSourceSelectArguments ();
  488. Assert.IsTrue (args != null, "#A1");
  489. }
  490. [Test]
  491. public void ListView_CreateEmptyDataItem ()
  492. {
  493. var events = new EventRecorder ();
  494. var lvp = new ListViewPoker (events);
  495. lvp.DoCreateEmptyDataItem ();
  496. Assert.AreEqual (0, events.Count, "#A1");
  497. lvp.EmptyDataTemplate = new TestTemplate ();
  498. lvp.DoCreateEmptyDataItem ();
  499. Assert.AreEqual (1, lvp.Controls.Count, "#B1");
  500. Assert.AreEqual (typeof (ListViewItem), lvp.Controls [0].GetType (), "#B2");
  501. Assert.AreEqual ("TestTemplateControl", lvp.Controls [0].Controls [0].ID, "#B3");
  502. Assert.AreEqual ("OnItemCreated:Enter", events [0], "#B4");
  503. Assert.AreEqual ("OnItemCreated:Leave", events [1], "#B5");
  504. }
  505. [Test]
  506. public void ListView_CreateEmptyItem ()
  507. {
  508. var events = new EventRecorder ();
  509. var lvp = new ListViewPoker (events);
  510. ListViewItem item = lvp.DoCreateEmptyItem ();
  511. Assert.AreEqual (0, events.Count, "#A1");
  512. Assert.AreEqual (null, item, "#A2");
  513. lvp.EmptyItemTemplate = new TestTemplate ();
  514. item = lvp.DoCreateEmptyItem ();
  515. Assert.AreEqual (0, lvp.Controls.Count, "#B1");
  516. Assert.AreEqual (typeof (Control), item.Controls [0].GetType (), "#B2");
  517. Assert.AreEqual ("TestTemplateControl", item.Controls [0].ID, "#B3");
  518. Assert.AreEqual ("OnItemCreated:Enter", events [0], "#B4");
  519. Assert.AreEqual ("OnItemCreated:Leave", events [1], "#B5");
  520. }
  521. [Test]
  522. [ExpectedException (typeof (InvalidOperationException))]
  523. public void ListView_CreateInsertItem_NoInsertItemTemplate ()
  524. {
  525. var lvp = new ListViewPoker ();
  526. ListViewItem item = lvp.DoCreateInsertItem ();
  527. }
  528. [Test]
  529. public void ListView_CreateInsertItem ()
  530. {
  531. var events = new EventRecorder ();
  532. var lvp = new ListViewPoker (events);
  533. lvp.InsertItemTemplate = new TestTemplate ();
  534. ListViewItem item = lvp.DoCreateInsertItem ();
  535. Assert.AreEqual (0, lvp.Controls.Count, "#A1");
  536. Assert.AreEqual (typeof (ListViewItem), item.GetType (), "#A2");
  537. Assert.AreEqual (typeof (Control), item.Controls [0].GetType (), "#A3");
  538. Assert.AreEqual (2, events.Count, "#A4");
  539. Assert.AreEqual ("TestTemplateControl", item.Controls [0].ID, "#A5");
  540. Assert.AreEqual ("OnItemCreated:Enter", events [0], "#A6");
  541. Assert.AreEqual ("OnItemCreated:Leave", events [1], "#A7");
  542. Assert.AreEqual (ListViewItemType.InsertItem, item.ItemType, "#A7");
  543. Assert.IsTrue (item.Equals (lvp.InsertItem), "#A8");
  544. }
  545. [Test]
  546. public void ListView_CreateItem ()
  547. {
  548. var events = new EventRecorder ();
  549. var lvp = new ListViewPoker (events);
  550. ListViewItem item;
  551. item = lvp.DoCreateItem (ListViewItemType.DataItem);
  552. Assert.IsFalse (item == null, "#A1");
  553. Assert.AreEqual (ListViewItemType.DataItem, item.ItemType, "#A2");
  554. Assert.AreEqual (typeof (ListViewItem), item.GetType (), "#A3");
  555. Assert.AreEqual (0, events.Count, "#B1");
  556. item = lvp.DoCreateItem (ListViewItemType.InsertItem);
  557. Assert.IsFalse (item == null, "#C1");
  558. Assert.AreEqual (ListViewItemType.InsertItem, item.ItemType, "#C2");
  559. Assert.AreEqual (typeof (ListViewItem), item.GetType (), "#C3");
  560. item = lvp.DoCreateItem (ListViewItemType.EmptyItem);
  561. Assert.IsFalse (item == null, "#D1");
  562. Assert.AreEqual (ListViewItemType.EmptyItem, item.ItemType, "#D2");
  563. Assert.AreEqual (typeof (ListViewItem), item.GetType (), "#D3");
  564. }
  565. [Test]
  566. public void ListView_CreateLayoutTemplate ()
  567. {
  568. var events = new EventRecorder ();
  569. var lvp = new ListViewPoker (events);
  570. lvp.DoCreateLayoutTemplate ();
  571. Assert.AreEqual (2, events.Count, "#A1");
  572. Assert.AreEqual ("OnLayoutCreated:Enter", events [0], "#A2");
  573. Assert.AreEqual ("OnLayoutCreated:Leave", events [1], "#A3");
  574. Assert.AreEqual (0, lvp.Controls.Count, "#A4");
  575. events.Clear ();
  576. lvp.LayoutTemplate = new TestTemplate ();
  577. lvp.DoCreateLayoutTemplate ();
  578. Assert.AreEqual (2, events.Count, "#B1");
  579. Assert.AreEqual ("OnLayoutCreated:Enter", events [0], "#B2");
  580. Assert.AreEqual ("OnLayoutCreated:Leave", events [1], "#B3");
  581. Assert.AreEqual (1, lvp.Controls.Count, "#B4");
  582. Assert.AreEqual (typeof (Control), lvp.Controls [0].GetType (), "#B5");
  583. Assert.AreEqual ("TestTemplateControl", lvp.Controls [0].Controls [0].ID, "#B6");
  584. }
  585. [Test]
  586. public void ListView_EnsureLayoutTemplate ()
  587. {
  588. var events = new EventRecorder ();
  589. var lvp = new ListViewPoker (events);
  590. lvp.DoEnsureLayoutTemplate ();
  591. Assert.AreEqual (2, events.Count, "#A1");
  592. Assert.AreEqual ("OnLayoutCreated:Enter", events [0], "#A2");
  593. Assert.AreEqual ("OnLayoutCreated:Leave", events [1], "#A3");
  594. Assert.AreEqual (0, lvp.Controls.Count, "#A4");
  595. events.Clear ();
  596. lvp.LayoutTemplate = new TestTemplate ();
  597. lvp.DoEnsureLayoutTemplate ();
  598. Assert.AreEqual (2, events.Count, "#B1");
  599. Assert.AreEqual ("OnLayoutCreated:Enter", events [0], "#B2");
  600. Assert.AreEqual ("OnLayoutCreated:Leave", events [1], "#B3");
  601. Assert.AreEqual (1, lvp.Controls.Count, "#B4");
  602. Assert.AreEqual (typeof (Control), lvp.Controls [0].GetType (), "#B5");
  603. Assert.AreEqual ("TestTemplateControl", lvp.Controls [0].Controls [0].ID, "#B6");
  604. events.Clear ();
  605. lvp.DoEnsureLayoutTemplate ();
  606. Assert.AreEqual (0, events.Count, "#C1");
  607. Assert.AreEqual (1, lvp.Controls.Count, "#C2");
  608. Assert.AreEqual (typeof (Control), lvp.Controls [0].GetType (), "#C3");
  609. Assert.AreEqual ("TestTemplateControl", lvp.Controls [0].Controls [0].ID, "#C4");
  610. }
  611. [Test]
  612. public void ListView_FindPlaceholder ()
  613. {
  614. var lvp = new ListViewPoker ();
  615. Control control;
  616. control = lvp.DoFindPlaceholder ("somePlaceholder", lvp);
  617. Assert.IsTrue (control == null, "#A1");
  618. control = lvp.DoFindPlaceholder (null, lvp);
  619. Assert.IsTrue (control == null, "#A2");
  620. control = lvp.DoFindPlaceholder (String.Empty, lvp);
  621. Assert.IsTrue (control == null, "#A3");
  622. lvp.LayoutTemplate = new TestTemplate ();
  623. lvp.DoEnsureLayoutTemplate ();
  624. control = lvp.DoFindPlaceholder ("TestTemplateControl", lvp);
  625. Assert.IsFalse (control == null, "#B1");
  626. Assert.AreEqual ("TestTemplateControl", control.ID, "#B2");
  627. control = lvp.DoFindPlaceholder ("DoesNotExist", lvp);
  628. Assert.IsTrue (control == null, "#B3");
  629. lvp = new ListViewPoker ();
  630. lvp.LayoutTemplate = new DeepTestTemplate ();
  631. lvp.DoEnsureLayoutTemplate ();
  632. control = lvp.DoFindPlaceholder ("DeepTestTemplateControl", lvp);
  633. Assert.IsFalse (control == null, "#C1");
  634. Assert.AreEqual ("DeepTestTemplateControl", control.ID, "#C2");
  635. control = lvp.DoFindPlaceholder ("DoesNotExist", lvp);
  636. Assert.IsTrue (control == null, "#C3");
  637. }
  638. void DoInstantiateCall (ListViewItemTemplate whichTemplate)
  639. {
  640. var events = new EventRecorder ();
  641. var lvp = new ListViewPoker (events);
  642. var container = new Control ();
  643. var template = new TestTemplate ();
  644. switch (whichTemplate) {
  645. case ListViewItemTemplate.EmptyData:
  646. lvp.DoInstantiateEmptyDataTemplate (null);
  647. lvp.EmptyDataTemplate = template;
  648. lvp.DoInstantiateEmptyDataTemplate (container);
  649. break;
  650. case ListViewItemTemplate.EmptyItem:
  651. lvp.DoInstantiateEmptyItemTemplate (null);
  652. lvp.EmptyItemTemplate = template;
  653. lvp.DoInstantiateEmptyItemTemplate (container);
  654. break;
  655. case ListViewItemTemplate.GroupSeparator:
  656. lvp.DoInstantiateGroupSeparatorTemplate (null);
  657. lvp.GroupSeparatorTemplate = template;
  658. lvp.DoInstantiateGroupSeparatorTemplate (container);
  659. break;
  660. case ListViewItemTemplate.Group:
  661. lvp.DoInstantiateGroupTemplate (null);
  662. lvp.GroupTemplate = template;
  663. lvp.DoInstantiateGroupTemplate (container);
  664. break;
  665. case ListViewItemTemplate.InsertItem:
  666. lvp.DoInstantiateInsertItemTemplate (null);
  667. lvp.InsertItemTemplate = template;
  668. lvp.DoInstantiateInsertItemTemplate (container);
  669. break;
  670. case ListViewItemTemplate.ItemSeparator:
  671. lvp.DoInstantiateItemSeparatorTemplate (null);
  672. lvp.ItemSeparatorTemplate = template;
  673. lvp.DoInstantiateItemSeparatorTemplate (container);
  674. break;
  675. case ListViewItemTemplate.Item:
  676. lvp.ItemTemplate = template;
  677. lvp.DoInstantiateItemTemplate (container, 0);
  678. break;
  679. case ListViewItemTemplate.EditItem:
  680. lvp.EditIndex = 0;
  681. lvp.ItemTemplate = template;
  682. lvp.EditItemTemplate = template;
  683. lvp.DoInstantiateItemTemplate (container, 0);
  684. break;
  685. case ListViewItemTemplate.AlternatingItem:
  686. lvp.ItemTemplate = template;
  687. lvp.AlternatingItemTemplate = template;
  688. lvp.DoInstantiateItemTemplate (container, 1);
  689. break;
  690. case ListViewItemTemplate.SelectedItem:
  691. lvp.ItemTemplate = template;
  692. lvp.SelectedIndex = 0;
  693. lvp.SelectedItemTemplate = template;
  694. lvp.DoInstantiateItemTemplate (container, 0);
  695. break;
  696. default:
  697. throw new NotSupportedException ("Unsupported ListView item type.");
  698. }
  699. Assert.AreEqual (0, events.Count, "#A1");
  700. Assert.AreEqual (typeof (Control), container.Controls [0].GetType (), "#A2");
  701. Assert.AreEqual ("TestTemplateControl", container.Controls [0].ID, "#A3");
  702. }
  703. void DoInstantiateContainerNullCall (ListViewItemTemplate whichTemplate)
  704. {
  705. var lvp = new ListViewPoker ();
  706. var template = new TestTemplate ();
  707. switch (whichTemplate) {
  708. case ListViewItemTemplate.EmptyData:
  709. lvp.EmptyDataTemplate = template;
  710. lvp.DoInstantiateEmptyDataTemplate (null);
  711. break;
  712. case ListViewItemTemplate.EmptyItem:
  713. lvp.EmptyItemTemplate = template;
  714. lvp.DoInstantiateEmptyItemTemplate (null);
  715. break;
  716. case ListViewItemTemplate.GroupSeparator:
  717. lvp.GroupSeparatorTemplate = template;
  718. lvp.DoInstantiateGroupSeparatorTemplate (null);
  719. break;
  720. case ListViewItemTemplate.Group:
  721. lvp.GroupTemplate = template;
  722. lvp.DoInstantiateGroupTemplate (null);
  723. break;
  724. case ListViewItemTemplate.InsertItem:
  725. lvp.InsertItemTemplate = template;
  726. lvp.DoInstantiateInsertItemTemplate (null);
  727. break;
  728. case ListViewItemTemplate.ItemSeparator:
  729. lvp.ItemSeparatorTemplate = template;
  730. lvp.DoInstantiateItemSeparatorTemplate (null);
  731. break;
  732. case ListViewItemTemplate.Item:
  733. lvp.ItemTemplate = template;
  734. lvp.DoInstantiateItemTemplate (null, 0);
  735. break;
  736. case ListViewItemTemplate.EditItem:
  737. lvp.EditItemTemplate = template;
  738. lvp.ItemTemplate = template;
  739. lvp.DoInstantiateItemTemplate (null, 0);
  740. break;
  741. case ListViewItemTemplate.AlternatingItem:
  742. lvp.AlternatingItemTemplate = template;
  743. lvp.ItemTemplate = template;
  744. lvp.DoInstantiateItemTemplate (null, 0);
  745. break;
  746. case ListViewItemTemplate.SelectedItem:
  747. lvp.SelectedItemTemplate = template;
  748. lvp.ItemTemplate = template;
  749. lvp.DoInstantiateItemTemplate (null, 0);
  750. break;
  751. default:
  752. throw new NotSupportedException ("Unsupported ListView item type.");
  753. }
  754. }
  755. [Test]
  756. [ExpectedException (typeof (InvalidOperationException))]
  757. public void ListView_InstantiateItemTemplate_NoItemTemplate ()
  758. {
  759. var lvp = new ListViewPoker ();
  760. lvp.DoInstantiateItemTemplate (new Control (), 0);
  761. }
  762. [Test]
  763. public void ListView_InstantiateEmptyDataTemplate ()
  764. {
  765. DoInstantiateCall (ListViewItemTemplate.EmptyData);
  766. }
  767. [Test]
  768. [ExpectedException (typeof (NullReferenceException))]
  769. public void ListView_InstantiateEmptyDataTemplate_NullContainer ()
  770. {
  771. DoInstantiateContainerNullCall (ListViewItemTemplate.EmptyData);
  772. }
  773. [Test]
  774. public void ListView_InstantiateEmptyItemTemplate ()
  775. {
  776. DoInstantiateCall (ListViewItemTemplate.EmptyItem);
  777. }
  778. [Test]
  779. [ExpectedException (typeof (NullReferenceException))]
  780. public void ListView_InstantiateEmptyItemTemplate_NullContainer ()
  781. {
  782. DoInstantiateContainerNullCall (ListViewItemTemplate.EmptyItem);
  783. }
  784. [Test]
  785. public void ListView_InstantiateGroupSeparatorTemplate ()
  786. {
  787. DoInstantiateCall (ListViewItemTemplate.GroupSeparator);
  788. }
  789. [Test]
  790. [ExpectedException (typeof (NullReferenceException))]
  791. public void ListView_InstantiateGroupSeparatorTemplate_NullContainer ()
  792. {
  793. DoInstantiateContainerNullCall (ListViewItemTemplate.GroupSeparator);
  794. }
  795. [Test]
  796. public void ListView_InstantiateGroupTemplate ()
  797. {
  798. DoInstantiateCall (ListViewItemTemplate.Group);
  799. }
  800. [Test]
  801. [ExpectedException (typeof (NullReferenceException))]
  802. public void ListView_InstantiateGroupTemplate_NullContainer ()
  803. {
  804. DoInstantiateContainerNullCall (ListViewItemTemplate.Group);
  805. }
  806. [Test]
  807. public void ListView_InstantiateInsertItemTemplate ()
  808. {
  809. DoInstantiateCall (ListViewItemTemplate.InsertItem);
  810. }
  811. [Test]
  812. [ExpectedException (typeof (NullReferenceException))]
  813. public void ListView_InstantiateInsertItemTemplate_NullContainer ()
  814. {
  815. DoInstantiateContainerNullCall (ListViewItemTemplate.InsertItem);
  816. }
  817. [Test]
  818. public void ListView_InstantiateItemSeparatorTemplate ()
  819. {
  820. DoInstantiateCall (ListViewItemTemplate.ItemSeparator);
  821. }
  822. [Test]
  823. [ExpectedException (typeof (NullReferenceException))]
  824. public void ListView_InstantiateItemSeparatorTemplate_NullContainer ()
  825. {
  826. DoInstantiateContainerNullCall (ListViewItemTemplate.ItemSeparator);
  827. }
  828. [Test]
  829. public void ListView_InstantiateItemTemplate ()
  830. {
  831. DoInstantiateCall (ListViewItemTemplate.Item);
  832. }
  833. [Test]
  834. [ExpectedException (typeof (NullReferenceException))]
  835. public void ListView_InstantiateItemTemplate_NullContainer ()
  836. {
  837. DoInstantiateContainerNullCall (ListViewItemTemplate.Item);
  838. }
  839. [Test]
  840. public void ListView_InstantiateEditItemTemplate ()
  841. {
  842. DoInstantiateCall (ListViewItemTemplate.EditItem);
  843. }
  844. [Test]
  845. [ExpectedException (typeof (NullReferenceException))]
  846. public void ListView_InstantiateEditItemTemplate_NullContainer ()
  847. {
  848. DoInstantiateContainerNullCall (ListViewItemTemplate.EditItem);
  849. }
  850. [Test]
  851. public void ListView_InstantiateAlternatingItemTemplate ()
  852. {
  853. DoInstantiateCall (ListViewItemTemplate.AlternatingItem);
  854. }
  855. [Test]
  856. [ExpectedException (typeof (NullReferenceException))]
  857. public void ListView_InstantiateAlternatingItemTemplate_NullContainer ()
  858. {
  859. DoInstantiateContainerNullCall (ListViewItemTemplate.AlternatingItem);
  860. }
  861. [Test]
  862. public void ListView_InstantiateSelectedItemTemplate ()
  863. {
  864. DoInstantiateCall (ListViewItemTemplate.SelectedItem);
  865. }
  866. [Test]
  867. [ExpectedException (typeof (NullReferenceException))]
  868. public void ListView_InstantiateSelectedItemTemplate_NullContainer ()
  869. {
  870. DoInstantiateContainerNullCall (ListViewItemTemplate.SelectedItem);
  871. }
  872. [Test]
  873. [ExpectedException (typeof (NullReferenceException))]
  874. public void ListView_FindPlaceholder_NullContainer ()
  875. {
  876. var lvp = new ListViewPoker ();
  877. Control control;
  878. control = lvp.DoFindPlaceholder ("somePlaceholder", null);
  879. }
  880. [Test]
  881. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  882. public void ListView_SetPageProperties_Parameters1 ()
  883. {
  884. var lvp = new ListViewPoker ();
  885. lvp.DoSetPageProperties (-1, 1, false);
  886. }
  887. [Test]
  888. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  889. public void ListView_SetPageProperties_Parameters2 ()
  890. {
  891. var lvp = new ListViewPoker ();
  892. lvp.DoSetPageProperties (0, 0, false);
  893. }
  894. [Test]
  895. [ExpectedException (typeof (NotSupportedException))]
  896. public void ListView_AccessKey ()
  897. {
  898. var lvp = new ListViewPoker ();
  899. lvp.AccessKey = String.Empty;
  900. }
  901. [Test]
  902. [ExpectedException (typeof (NotSupportedException))]
  903. public void ListView_BackColor ()
  904. {
  905. var lvp = new ListViewPoker ();
  906. lvp.BackColor = Color.White;
  907. }
  908. [Test]
  909. [ExpectedException (typeof (NotSupportedException))]
  910. public void ListView_BorderColor ()
  911. {
  912. var lvp = new ListViewPoker ();
  913. lvp.BorderColor = Color.White;
  914. }
  915. [Test]
  916. [ExpectedException (typeof (NotSupportedException))]
  917. public void ListView_BorderStyle ()
  918. {
  919. var lvp = new ListViewPoker ();
  920. lvp.BorderStyle = BorderStyle.NotSet;
  921. }
  922. [Test]
  923. [ExpectedException (typeof (NotSupportedException))]
  924. public void ListView_BorderWidth ()
  925. {
  926. var lvp = new ListViewPoker ();
  927. lvp.BorderWidth = Unit.Empty;
  928. }
  929. [Test]
  930. [ExpectedException (typeof (NotSupportedException))]
  931. public void ListView_CssClass ()
  932. {
  933. var lvp = new ListViewPoker ();
  934. lvp.CssClass = String.Empty;
  935. }
  936. [Test]
  937. [ExpectedException (typeof (NotSupportedException))]
  938. public void ListView_Font ()
  939. {
  940. var lvp = new ListViewPoker ();
  941. lvp.Font.Bold = true;
  942. }
  943. [Test]
  944. [ExpectedException (typeof (NotSupportedException))]
  945. public void ListView_ForeColor ()
  946. {
  947. var lvp = new ListViewPoker ();
  948. lvp.ForeColor = Color.White;
  949. }
  950. [Test]
  951. [ExpectedException (typeof (NotSupportedException))]
  952. public void ListView_Height ()
  953. {
  954. var lvp = new ListViewPoker ();
  955. lvp.Height = Unit.Empty;
  956. }
  957. [Test]
  958. [ExpectedException (typeof (NotSupportedException))]
  959. public void ListView_ToolTip ()
  960. {
  961. var lvp = new ListViewPoker ();
  962. lvp.ToolTip = String.Empty;
  963. }
  964. [Test]
  965. [ExpectedException (typeof (NotSupportedException))]
  966. public void ListView_Width ()
  967. {
  968. var lvp = new ListViewPoker ();
  969. lvp.Width = Unit.Empty;
  970. }
  971. [Test]
  972. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  973. public void ListView_EditIndex_SetInvalid ()
  974. {
  975. var lvp = new ListViewPoker ();
  976. lvp.EditIndex = -2;
  977. }
  978. [Test]
  979. public void ListView_EditIndex_Set ()
  980. {
  981. var lvp = new ListViewPoker ();
  982. lvp.EditIndex = 0;
  983. Assert.AreEqual (0, lvp.EditIndex, "#A1");
  984. }
  985. [Test]
  986. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  987. public void ListView_SelectedIndex_SetInvalid ()
  988. {
  989. var lvp = new ListViewPoker ();
  990. lvp.SelectedIndex = -2;
  991. }
  992. [Test]
  993. public void ListView_SelectedIndex_Set ()
  994. {
  995. var lvp = new ListViewPoker ();
  996. lvp.SelectedIndex = 0;
  997. Assert.AreEqual (0, lvp.SelectedIndex, "#A1");
  998. }
  999. [Test]
  1000. public void ListView_Edit ()
  1001. {
  1002. WebTest t = new WebTest ("ListViewTest.aspx");
  1003. t.Invoker = PageInvoker.CreateOnInit (ListView_Edit_OnInit);
  1004. t.Run ();
  1005. FormRequest fr = new FormRequest(t.Response, "form1");
  1006. #if DOT_NET
  1007. fr.Controls.Add ("ListView1$ctrl0$ctl03$EditButton");
  1008. fr.Controls.Add ("ListView1$ctrl6$ctrl7$CapitalTextBox");
  1009. fr.Controls.Add ("ListView1$ctrl6$ctrl7$IDTextBox");
  1010. fr.Controls.Add ("ListView1$ctrl6$ctrl7$NameTextBox");
  1011. fr.Controls.Add ("ListView1$ctrl6$ctrl7$PopulationTextBox");
  1012. fr.Controls ["ListView1$ctrl0$ctl03$EditButton"].Value = "Edit";
  1013. #else
  1014. fr.Controls.Add ("ListView1$ctl13$EditButton");
  1015. fr.Controls.Add ("ListView1$ctl51$CapitalTextBox");
  1016. fr.Controls.Add ("ListView1$ctl51$IDTextBox");
  1017. fr.Controls.Add ("ListView1$ctl51$NameTextBox");
  1018. fr.Controls.Add ("ListView1$ctl51$PopulationTextBox");
  1019. fr.Controls ["ListView1$ctl13$EditButton"].Value = "Edit";
  1020. #endif
  1021. t.Request = fr;
  1022. EventRecorder events = new EventRecorder();
  1023. t.UserData = events;
  1024. t.Run ();
  1025. }
  1026. public static void ListView_Edit_OnInit (Page p)
  1027. {
  1028. ListViewPoker poker = p.FindControl ("ListView1") as ListViewPoker;
  1029. poker.SetEventRecorder (WebTest.CurrentTest.UserData as EventRecorder);
  1030. }
  1031. [Test (Description="Bug #535701, test 1")]
  1032. public void Bug_535701_1 ()
  1033. {
  1034. #if NET_4_0
  1035. string originalHtml_1 = @"<span id=""ListViewTest"">
  1036. 0 1 2 3 4 5 6 7 8 9
  1037. </span>
  1038. <span id=""DataPager1""><a class=""aspNetDisabled"">First</a>&nbsp;<a class=""aspNetDisabled"">Previous</a>&nbsp;<span>1</span>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl01$ctl01&#39;,&#39;&#39;)"">2</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl02$ctl00&#39;,&#39;&#39;)"">Next</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl02$ctl01&#39;,&#39;&#39;)"">Last</a>&nbsp;</span>";
  1039. string originalHtml_2 = @"<span id=""ListViewTest"">
  1040. 10 11 12
  1041. </span>
  1042. <span id=""DataPager1""><a href=""javascript:__doPostBack(&#39;DataPager1$ctl00$ctl00&#39;,&#39;&#39;)"">First</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl00$ctl01&#39;,&#39;&#39;)"">Previous</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl01$ctl00&#39;,&#39;&#39;)"">1</a>&nbsp;<span>2</span>&nbsp;<a class=""aspNetDisabled"">Next</a>&nbsp;<a class=""aspNetDisabled"">Last</a>&nbsp;</span>";
  1043. #else
  1044. string originalHtml_1 = @"<span id=""ListViewTest"">
  1045. 0 1 2 3 4 5 6 7 8 9
  1046. </span>
  1047. <span id=""DataPager1""><a disabled=""disabled"">First</a>&nbsp;<a disabled=""disabled"">Previous</a>&nbsp;<span>1</span>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl01$ctl01','')"">2</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl02$ctl00','')"">Next</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl02$ctl01','')"">Last</a>&nbsp;</span>";
  1048. string originalHtml_2 = @"<span id=""ListViewTest"">
  1049. 10 11 12
  1050. </span>
  1051. <span id=""DataPager1""><a href=""javascript:__doPostBack('DataPager1$ctl00$ctl00','')"">First</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl00$ctl01','')"">Previous</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl01$ctl00','')"">1</a>&nbsp;<span>2</span>&nbsp;<a disabled=""disabled"">Next</a>&nbsp;<a disabled=""disabled"">Last</a>&nbsp;</span>";
  1052. #endif
  1053. WebTest t = new WebTest ("ListViewTotalRowCount_Bug535701_1.aspx");
  1054. string pageHtml = t.Run ();
  1055. string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
  1056. Assert.AreEqual (originalHtml_1, renderedHtml, "#A1");
  1057. FormRequest fr = new FormRequest (t.Response, "form1");
  1058. fr.Controls.Add ("__EVENTTARGET");
  1059. fr.Controls ["__EVENTTARGET"].Value = "DataPager1$ctl01$ctl01";
  1060. t.Request = fr;
  1061. pageHtml = t.Run ();
  1062. renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
  1063. Assert.AreEqual (originalHtml_2, renderedHtml, "#A2");
  1064. }
  1065. [Test (Description="Bug #535701, test 2")]
  1066. public void Bug_535701_2 ()
  1067. {
  1068. #if NET_4_0
  1069. string originalHtml_1 = @"<span id=""ListViewTest2"">
  1070. 12345678910
  1071. </span>
  1072. <span id=""DataPager1""><a class=""aspNetDisabled"">First</a>&nbsp;<a class=""aspNetDisabled"">Previous</a>&nbsp;<span>1</span>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl01$ctl01&#39;,&#39;&#39;)"">2</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl02$ctl00&#39;,&#39;&#39;)"">Next</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl02$ctl01&#39;,&#39;&#39;)"">Last</a>&nbsp;</span>
  1073. <br /><div>
  1074. DataPager.TotalRowCount = 14<br />
  1075. Actual TotalRowCount = 14</div>";
  1076. string originalHtml_2 = @"<span id=""ListViewTest2"">
  1077. 11121314
  1078. </span>
  1079. <span id=""DataPager1""><a href=""javascript:__doPostBack(&#39;DataPager1$ctl00$ctl00&#39;,&#39;&#39;)"">First</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl00$ctl01&#39;,&#39;&#39;)"">Previous</a>&nbsp;<a href=""javascript:__doPostBack(&#39;DataPager1$ctl01$ctl00&#39;,&#39;&#39;)"">1</a>&nbsp;<span>2</span>&nbsp;<a class=""aspNetDisabled"">Next</a>&nbsp;<a class=""aspNetDisabled"">Last</a>&nbsp;</span>
  1080. <br /><div>
  1081. DataPager.TotalRowCount = 14<br />
  1082. Actual TotalRowCount = 14</div>";
  1083. #else
  1084. string originalHtml_1 = @"<span id=""ListViewTest2"">
  1085. 12345678910
  1086. </span>
  1087. <span id=""DataPager1""><a disabled=""disabled"">First</a>&nbsp;<a disabled=""disabled"">Previous</a>&nbsp;<span>1</span>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl01$ctl01','')"">2</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl02$ctl00','')"">Next</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl02$ctl01','')"">Last</a>&nbsp;</span>
  1088. <br /><div>
  1089. DataPager.TotalRowCount = 14<br />
  1090. Actual TotalRowCount = 14</div>";
  1091. string originalHtml_2 = @"<span id=""ListViewTest2"">
  1092. 11121314
  1093. </span>
  1094. <span id=""DataPager1""><a href=""javascript:__doPostBack('DataPager1$ctl00$ctl00','')"">First</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl00$ctl01','')"">Previous</a>&nbsp;<a href=""javascript:__doPostBack('DataPager1$ctl01$ctl00','')"">1</a>&nbsp;<span>2</span>&nbsp;<a disabled=""disabled"">Next</a>&nbsp;<a disabled=""disabled"">Last</a>&nbsp;</span>
  1095. <br /><div>
  1096. DataPager.TotalRowCount = 14<br />
  1097. Actual TotalRowCount = 14</div>";
  1098. #endif
  1099. WebTest t = new WebTest ("ListViewTotalRowCount_Bug535701_2.aspx");
  1100. string pageHtml = t.Run ();
  1101. string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
  1102. Assert.AreEqual (originalHtml_1, renderedHtml, "#A1");
  1103. FormRequest fr = new FormRequest (t.Response, "form1");
  1104. fr.Controls.Add ("__EVENTTARGET");
  1105. fr.Controls ["__EVENTTARGET"].Value = "DataPager1$ctl01$ctl01";
  1106. t.Request = fr;
  1107. pageHtml = t.Run ();
  1108. renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
  1109. Assert.AreEqual (originalHtml_2, renderedHtml, "#A2");
  1110. }
  1111. [Test (Description="Bug #604053")]
  1112. public void Bug_604053 ()
  1113. {
  1114. #if NET_4_0
  1115. string originalHtml = "<span id=\"Bug604053ListView1\"><table id=\"Bug604053ListView1_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M1Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M2Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M1Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M2Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" />&nbsp;<span>1</span>&nbsp;<a href=\"javascript:__doPostBack(&#39;Bug604053ListView1$DataPager1$ctl01$ctl01&#39;,&#39;&#39;)\">2</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;Bug604053ListView1$DataPager1$ctl01$ctl02&#39;,&#39;&#39;)\">3</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;Bug604053ListView1$DataPager1$ctl01$ctl03&#39;,&#39;&#39;)\">4</a>&nbsp;<a href=\"javascript:__doPostBack(&#39;Bug604053ListView1$DataPager1$ctl01$ctl04&#39;,&#39;&#39;)\">5</a>&nbsp;<input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl02$ctl00\" value=\"Last\" />&nbsp;</span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>\n\t\t\t<span id=\"Bug604053ListView2\"><table id=\"Bug604053ListView2_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M1Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M2Label_0\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M1Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M2Label_1\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" />&nbsp;<input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl01\" value=\"Previous\" disabled=\"disabled\" />&nbsp;<input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl02\" value=\"Next\" />&nbsp;<input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl03\" value=\"Last\" />&nbsp;</span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>";
  1116. #else
  1117. string originalHtml = "<span id=\"Bug604053ListView1\"><table id=\"Bug604053ListView1_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M1Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl10_M2Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M1Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_ctl12_M2Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView1_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" />&nbsp;<span>1</span>&nbsp;<a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl01','')\">2</a>&nbsp;<a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl02','')\">3</a>&nbsp;<a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl03','')\">4</a>&nbsp;<a href=\"javascript:__doPostBack('Bug604053ListView1$DataPager1$ctl01$ctl04','')\">5</a>&nbsp;<input type=\"submit\" name=\"Bug604053ListView1$DataPager1$ctl02$ctl00\" value=\"Last\" />&nbsp;</span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>\n\t\t\t<span id=\"Bug604053ListView2\"><table id=\"Bug604053ListView2_itemPlaceholderContainer\" border=\"0\" style=\"\"><tr style=\"\"><th>\n\t\t\t\t\t\t\t\t\t\t\tM1</th><th>\n\t\t\t\t\t\t\t\t\t\t\tM2</th>\r\n\t</tr>\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M1Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl10_M2Label\">0</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\t\t\n\t\t\t\t\t<tr style=\"\">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M1Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_ctl12_M2Label\">1</span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\r\n\r\n\r\n</table>\r\n\n\t\t\t\t\t<table><tr><td>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t</td>\r\n\t</tr><tr><td style=\"\">\n\t\t\t\t\t\t\t\t<span id=\"Bug604053ListView2_DataPager1\"><input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl00\" value=\"First\" disabled=\"disabled\" />&nbsp;<input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl01\" value=\"Previous\" disabled=\"disabled\" />&nbsp;<input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl02\" value=\"Next\" />&nbsp;<input type=\"submit\" name=\"Bug604053ListView2$DataPager1$ctl00$ctl03\" value=\"Last\" />&nbsp;</span>\n\t\t\t\t\t\t\t</td>\r\n\t</tr>\r\n\r\n</table>\r\n\n\t\t\t\t</span>";
  1118. #endif
  1119. WebTest t = new WebTest ("ListViewTotalRowCount_Bug604053.aspx");
  1120. string pageHtml = t.Run ();
  1121. string renderedHtml = HtmlDiff.GetControlFromPageHtml (pageHtml);
  1122. Assert.AreEqual (originalHtml, renderedHtml, "#A1");
  1123. }
  1124. }
  1125. }