FormViewTest.cs 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726
  1. //
  2. // Tests for System.Web.UI.WebControls.FormView.cs
  3. //
  4. // Author:
  5. // Chris Toshok ([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. #if NET_2_0
  30. using NUnit.Framework;
  31. using System;
  32. using System.Data;
  33. using System.IO;
  34. using System.Drawing;
  35. using System.Collections;
  36. using System.Collections.Generic;
  37. using System.Collections.Specialized;
  38. using System.Globalization;
  39. using System.Web;
  40. using System.Web.UI;
  41. using System.Web.UI.HtmlControls;
  42. using System.Web.UI.WebControls;
  43. using MonoTests.SystemWeb.Framework;
  44. using MonoTests.stand_alone.WebHarness;
  45. using System.Text.RegularExpressions;
  46. using System.Reflection;
  47. using System.Threading;
  48. namespace MonoTests.System.Web.UI.WebControls
  49. {
  50. [TestFixture]
  51. public class FormViewTest {
  52. public class Poker : FormView {
  53. public bool isInitializePager=false;
  54. public bool ensureDataBound=false;
  55. public bool controlHierarchy=false;
  56. bool _onPageIndexChangingCalled = false;
  57. bool _onPageIndexChangedCalled = false;
  58. public Poker () {
  59. TrackViewState ();
  60. }
  61. public object SaveState () {
  62. return SaveViewState ();
  63. }
  64. public void LoadState (object state) {
  65. LoadViewState (state);
  66. }
  67. public HtmlTextWriterTag PokerTagKey
  68. {
  69. get { return base.TagKey; }
  70. }
  71. public int DoCreateChildControls (IEnumerable source,bool dataBind)
  72. {
  73. return CreateChildControls (source, dataBind);
  74. }
  75. public Style DoCreateControlStyle ()
  76. {
  77. return base.CreateControlStyle ();
  78. }
  79. public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()
  80. {
  81. return CreateDataSourceSelectArguments ();
  82. }
  83. public FormViewRow DoCreateRow (int itemIndex,DataControlRowType rowType,DataControlRowState rowState)
  84. {
  85. return CreateRow( itemIndex, rowType,rowState);
  86. }
  87. public Table DoCreateTable ()
  88. {
  89. return CreateTable ();
  90. }
  91. protected override void EnsureDataBound ()
  92. {
  93. base.EnsureDataBound ();
  94. ensureDataBound = true;
  95. }
  96. public void DoExtractRowValues (IOrderedDictionary filedValues, bool includeKeys)
  97. {
  98. base.ExtractRowValues (filedValues, includeKeys);
  99. }
  100. protected override void InitializePager (FormViewRow row, PagedDataSource pageData)
  101. {
  102. base.InitializePager (row, pageData);
  103. isInitializePager = true;
  104. }
  105. public void DoInitializeRow (FormViewRow row)
  106. {
  107. InitializeRow (row);
  108. }
  109. public void DoLoadControlState (object savedState)
  110. {
  111. LoadControlState (savedState);
  112. }
  113. public void DoLoadViewState (object savedState)
  114. {
  115. LoadViewState (savedState);
  116. }
  117. public bool DoOnBubbleEvent (object source, EventArgs e)
  118. {
  119. return OnBubbleEvent (source, e);
  120. }
  121. public void DoOnInit (EventArgs e)
  122. {
  123. OnInit (e);
  124. }
  125. public void DoOnItemCommand (FormViewCommandEventArgs e)
  126. {
  127. OnItemCommand (e);
  128. }
  129. public void DoOnItemCreated (EventArgs e)
  130. {
  131. OnItemCreated (e);
  132. }
  133. public void DoOnItemDeleted (FormViewDeletedEventArgs e)
  134. {
  135. OnItemDeleted (e);
  136. }
  137. public void DoOnItemDeleting (FormViewDeleteEventArgs e)
  138. {
  139. OnItemDeleting (e);
  140. }
  141. public void DoOnItemInserted (FormViewInsertedEventArgs e)
  142. {
  143. OnItemInserted (e);
  144. }
  145. public void DoOnItemInserting (FormViewInsertEventArgs e)
  146. {
  147. OnItemInserting (e);
  148. }
  149. public void DoOnItemUpdated (FormViewUpdatedEventArgs e)
  150. {
  151. OnItemUpdated (e);
  152. }
  153. public void DoOnItemUpdating (FormViewUpdateEventArgs e)
  154. {
  155. OnItemUpdating (e);
  156. }
  157. public void DoOnModeChanged (EventArgs e )
  158. {
  159. OnModeChanged (e);
  160. }
  161. public void DoOnModeChanging (FormViewModeEventArgs e)
  162. {
  163. OnModeChanging (e);
  164. }
  165. public void DoOnPageIndexChanged (EventArgs e)
  166. {
  167. OnPageIndexChanged (e);
  168. }
  169. public void DoOnPageIndexChanging (FormViewPageEventArgs e)
  170. {
  171. OnPageIndexChanging (e);
  172. }
  173. public void DoPerformDataBinding (IEnumerable data)
  174. {
  175. PerformDataBinding (data);
  176. }
  177. protected override void PrepareControlHierarchy ()
  178. {
  179. base.PrepareControlHierarchy ();
  180. controlHierarchy = true;
  181. }
  182. public void DoRaisePostBackEvent (string eventArgument)
  183. {
  184. RaisePostBackEvent (eventArgument);
  185. }
  186. public string Render ()
  187. {
  188. StringWriter sw = new StringWriter ();
  189. HtmlTextWriter tw = new HtmlTextWriter (sw);
  190. Render (tw);
  191. return sw.ToString ();
  192. }
  193. public object DoSaveControlState ()
  194. {
  195. return SaveControlState ();
  196. }
  197. public void DoConfirmInitState ()
  198. {
  199. base.ConfirmInitState ();
  200. }
  201. public void DoOnPreRender (EventArgs e)
  202. {
  203. base.OnPreRender (e);
  204. }
  205. public void DoOnDataBinding (EventArgs e)
  206. {
  207. base.OnDataBinding (e);
  208. }
  209. public void DoOnDataBound (EventArgs e)
  210. {
  211. base.OnDataBound (e);
  212. }
  213. public bool OnPageIndexChangingCalled {
  214. set { _onPageIndexChangingCalled = value; }
  215. get { return _onPageIndexChangingCalled; }
  216. }
  217. public bool OnPageIndexChangedCalled {
  218. set { _onPageIndexChangedCalled = value; }
  219. get { return _onPageIndexChangedCalled; }
  220. }
  221. protected override void OnPageIndexChanging (FormViewPageEventArgs e) {
  222. OnPageIndexChangingCalled = true;
  223. base.OnPageIndexChanging (e);
  224. }
  225. protected override void OnPageIndexChanged (EventArgs e) {
  226. OnPageIndexChangedCalled = true;
  227. base.OnPageIndexChanged (e);
  228. }
  229. }
  230. class Template : ITemplate
  231. {
  232. bool _instantiated;
  233. public bool Instantiated {
  234. get { return _instantiated; }
  235. }
  236. #region ITemplate Members
  237. public void InstantiateIn (Control container) {
  238. _instantiated = true;
  239. }
  240. #endregion
  241. }
  242. ArrayList myds = new ArrayList ();
  243. [TestFixtureSetUp]
  244. public void setup ()
  245. {
  246. myds.Add ("Item1");
  247. myds.Add ("Item2");
  248. myds.Add ("Item3");
  249. myds.Add ("Item4");
  250. myds.Add ("Item5");
  251. myds.Add ("Item6");
  252. #if VISUAL_STUDIO
  253. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormView.aspx",
  254. "FormView.aspx");
  255. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewTest1.aspx",
  256. "FormViewTest1.aspx");
  257. WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewInsertEditDelete.aspx",
  258. "FormViewInsertEditDelete.aspx");
  259. #else
  260. WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");
  261. WebTest.CopyResource (GetType (), "FormViewTest1.aspx", "FormViewTest1.aspx");
  262. WebTest.CopyResource (GetType (), "FormViewInsertEditDelete.aspx", "FormViewInsertEditDelete.aspx");
  263. #endif
  264. }
  265. [Test]
  266. public void Defaults ()
  267. {
  268. Poker p = new Poker ();
  269. Assert.IsFalse (p.AllowPaging, "A1");
  270. Assert.AreEqual ("", p.BackImageUrl, "A2");
  271. Assert.IsNull (p.BottomPagerRow, "A3");
  272. Assert.AreEqual ("", p.Caption, "A4");
  273. Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A5");
  274. Assert.AreEqual (-1, p.CellPadding, "A6");
  275. Assert.AreEqual (0, p.CellSpacing, "A7");
  276. Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A8");
  277. Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A9");
  278. Assert.IsNotNull (p.DataKeyNames, "A10");
  279. Assert.AreEqual (0, p.DataKeyNames.Length, "A10.1");
  280. Assert.IsNotNull (p.DataKey, "A11");
  281. Assert.AreEqual (0, p.DataKey.Values.Count, "A11.1");
  282. Assert.IsNull (p.EditItemTemplate, "A12");
  283. Assert.IsNotNull (p.EditRowStyle, "A13");
  284. Assert.IsNotNull (p.EmptyDataRowStyle, "A14");
  285. Assert.IsNull (p.EmptyDataTemplate, "A15");
  286. Assert.AreEqual ("", p.EmptyDataText, "A16");
  287. Assert.IsNull (p.FooterRow, "A17");
  288. Assert.IsNull (p.FooterTemplate, "A18");
  289. Assert.AreEqual ("", p.FooterText, "A19");
  290. Assert.IsNotNull (p.FooterStyle, "A20");
  291. Assert.AreEqual (GridLines.None, p.GridLines, "A21");
  292. Assert.IsNull (p.HeaderRow, "A22");
  293. Assert.IsNotNull (p.HeaderStyle, "A23");
  294. Assert.IsNull (p.HeaderTemplate, "A24");
  295. Assert.AreEqual ("", p.HeaderText, "A25");
  296. Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A26");
  297. Assert.IsNull (p.InsertItemTemplate, "A27");
  298. Assert.IsNotNull (p.InsertRowStyle, "A28");
  299. Assert.IsNull (p.ItemTemplate, "A29");
  300. Assert.AreEqual (0, p.PageCount, "A30");
  301. Assert.AreEqual (0, p.PageIndex, "A31");
  302. Assert.IsNull (p.PagerTemplate, "A32");
  303. Assert.IsNull (p.Row, "A33");
  304. Assert.IsNotNull (p.RowStyle, "A34");
  305. Assert.IsNull (p.SelectedValue, "A35");
  306. Assert.IsNull (p.TopPagerRow, "A36");
  307. Assert.IsNull (p.DataItem, "A37");
  308. Assert.AreEqual (0, p.DataItemCount, "A38");
  309. Assert.AreEqual (0, p.DataItemIndex, "A39");
  310. }
  311. [Test]
  312. public void FormView_AssignToDefaultProperties ()
  313. {
  314. Poker p = new Poker ();
  315. MyTemplate customTemplate = new MyTemplate ();
  316. TableItemStyle tableStyle = new TableItemStyle ();
  317. p.AllowPaging = true;
  318. Assert.AreEqual (true, p.AllowPaging, "A40");
  319. p.BackImageUrl = "image.jpg";
  320. Assert.AreEqual ("image.jpg", p.BackImageUrl, "A41");
  321. // ToDo: p.BottomPagerRow
  322. p.Caption = "Employee Details";
  323. Assert.AreEqual ("Employee Details", p.Caption, "A42");
  324. p.CaptionAlign = TableCaptionAlign.Bottom;
  325. Assert.AreEqual (TableCaptionAlign.Bottom, p.CaptionAlign, "A43");
  326. p.CaptionAlign = TableCaptionAlign.Left;
  327. Assert.AreEqual (TableCaptionAlign.Left, p.CaptionAlign, "A44");
  328. p.CaptionAlign = TableCaptionAlign.NotSet;
  329. Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A45");
  330. p.CaptionAlign = TableCaptionAlign.Right;
  331. Assert.AreEqual (TableCaptionAlign.Right, p.CaptionAlign, "A46");
  332. p.CaptionAlign = TableCaptionAlign.Top;
  333. Assert.AreEqual (TableCaptionAlign.Top, p.CaptionAlign, "A47");
  334. p.CellPadding = 10;
  335. Assert.AreEqual (10, p.CellPadding, "A48");
  336. p.CellSpacing = 20;
  337. Assert.AreEqual (20, p.CellSpacing, "A49");
  338. Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A52");
  339. p.DefaultMode = FormViewMode.Edit;
  340. Assert.AreEqual (FormViewMode.Edit, p.DefaultMode, "A53");
  341. p.DefaultMode = FormViewMode.Insert;
  342. Assert.AreEqual (FormViewMode.Insert, p.DefaultMode, "A54");
  343. p.DefaultMode = FormViewMode.ReadOnly;
  344. Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A55");
  345. p.EditRowStyle.BackColor = Color.Red;
  346. Assert.AreEqual (Color.Red, p.EditRowStyle.BackColor, "A56");
  347. p.EmptyDataRowStyle.ForeColor = Color.Purple;
  348. Assert.AreEqual (Color.Purple, p.EmptyDataRowStyle.ForeColor, "A57");
  349. p.EmptyDataTemplate = customTemplate;
  350. Assert.AreEqual (customTemplate, p.EmptyDataTemplate, "A58");
  351. p.EmptyDataText = "No data";
  352. Assert.AreEqual ("No data", p.EmptyDataText, "A59");
  353. p.EditItemTemplate = customTemplate;
  354. Assert.AreEqual (customTemplate, p.EditItemTemplate, "A60");
  355. p.FooterTemplate = customTemplate;
  356. Assert.AreEqual (customTemplate, p.FooterTemplate, "A61");
  357. p.FooterText = "Test Footer";
  358. Assert.AreEqual ("Test Footer", p.FooterText, "A62");
  359. p.FooterStyle.BorderStyle = BorderStyle.Double;
  360. Assert.AreEqual (BorderStyle.Double, p.FooterStyle.BorderStyle, "A63");
  361. p.GridLines = GridLines.Both;
  362. Assert.AreEqual (GridLines.Both, p.GridLines, "A64");
  363. p.GridLines = GridLines.Horizontal;
  364. Assert.AreEqual (GridLines.Horizontal, p.GridLines, "A65");
  365. p.GridLines = GridLines.None;
  366. Assert.AreEqual (GridLines.None, p.GridLines, "A66");
  367. p.GridLines = GridLines.Vertical;
  368. Assert.AreEqual (GridLines.Vertical, p.GridLines, "A67");
  369. p.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
  370. Assert.AreEqual (HorizontalAlign.Left, p.HeaderStyle.HorizontalAlign, "A68");
  371. p.HeaderTemplate = customTemplate;
  372. Assert.AreEqual (customTemplate, p.HeaderTemplate, "A69");
  373. p.HeaderText = "Test Header";
  374. Assert.AreEqual ("Test Header", p.HeaderText, "A70");
  375. p.HorizontalAlign = HorizontalAlign.Center;
  376. Assert.AreEqual (HorizontalAlign.Center, p.HorizontalAlign, "A71");
  377. p.HorizontalAlign = HorizontalAlign.Justify;
  378. Assert.AreEqual (HorizontalAlign.Justify, p.HorizontalAlign, "A72");
  379. p.HorizontalAlign = HorizontalAlign.Left;
  380. Assert.AreEqual (HorizontalAlign.Left, p.HorizontalAlign, "A73");
  381. p.HorizontalAlign = HorizontalAlign.NotSet;
  382. Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A74");
  383. p.HorizontalAlign = HorizontalAlign.Right;
  384. Assert.AreEqual (HorizontalAlign.Right, p.HorizontalAlign, "A75");
  385. p.InsertItemTemplate = customTemplate;
  386. Assert.AreEqual (customTemplate, p.InsertItemTemplate, "A76");
  387. p.InsertRowStyle.BorderStyle = BorderStyle.Outset;
  388. Assert.AreEqual (BorderStyle.Outset, p.InsertRowStyle.BorderStyle, "A77");
  389. p.ItemTemplate = customTemplate;
  390. Assert.AreEqual (customTemplate, p.ItemTemplate, "A78");
  391. p.PagerSettings.FirstPageText = "PagerSettings Test";
  392. Assert.AreEqual ("PagerSettings Test", p.PagerSettings.FirstPageText, "A79");
  393. p.PagerStyle.BorderStyle = BorderStyle.Groove;
  394. Assert.AreEqual (BorderStyle.Groove, p.PagerStyle.BorderStyle, "A80");
  395. p.PagerTemplate = customTemplate;
  396. Assert.AreEqual (customTemplate, p.PagerTemplate, "A81");
  397. p.RowStyle.ForeColor = Color.Plum;
  398. Assert.AreEqual (Color.Plum, p.RowStyle.ForeColor, "A82");
  399. }
  400. [Test]
  401. public void FormView_ItemsProperties ()
  402. {
  403. Poker p = new Poker ();
  404. p.Page = new Page ();
  405. p.AllowPaging = true;
  406. p.DataSource = myds;
  407. p.DataBind ();
  408. //Assert.AreEqual (typeof (FormViewPagerRow), (p.BottomPagerRow).GetType (), "BottomPagerRow1");
  409. Assert.AreEqual (0, p.BottomPagerRow.ItemIndex, "BottomPagerRow2");
  410. Assert.AreEqual (DataControlRowType.Pager, p.BottomPagerRow.RowType, "BottomPagerRow2");
  411. Assert.AreEqual ("Item1", p.DataItem, "DataItem");
  412. Assert.AreEqual (6, p.DataItemCount, "DataItemCount");
  413. Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");
  414. Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");
  415. string[] str = new string[] { "1", "2", "3", "4", "5", "6" };
  416. Assert.AreEqual (typeof (DataKey), p.DataKey.GetType (), "DataKey");
  417. p.DataKeyNames = str;
  418. Assert.AreEqual (str, p.DataKeyNames, "DataKeyNames");
  419. p.ChangeMode (FormViewMode.Edit);
  420. Assert.AreEqual (FormViewMode.Edit, p.CurrentMode, "CurrentModeEdit");
  421. p.ChangeMode (FormViewMode.Insert);
  422. Assert.AreEqual (FormViewMode.Insert, p.CurrentMode, "CurrentModeInsert");
  423. }
  424. [Test]
  425. public void FormView_DefaultProtectedProperties ()
  426. {
  427. Poker fv = new Poker ();
  428. Assert.AreEqual (HtmlTextWriterTag.Table, fv.PokerTagKey, "TagKey");
  429. }
  430. // Protected methods
  431. [Test]
  432. public void FormView_CreateChildControls ()
  433. {
  434. Poker fv = new Poker ();
  435. fv.DataSource = myds;
  436. fv.Page = new Page ();
  437. Assert.AreEqual (6, fv.DoCreateChildControls (myds, true), "CreateChildControlFromDS");
  438. myds.Add ("item7");
  439. Assert.AreEqual (7, fv.DoCreateChildControls (myds, false), "CreateChildControlFromViewState");
  440. myds.Remove ("item7");
  441. }
  442. [Test]
  443. public void FormView_CreateDataSourceSelectArguments ()
  444. {
  445. //Checks the default DataSourceSelectArgument object returned.
  446. Poker fv = new Poker ();
  447. DataSourceSelectArguments selectArgs = fv.DoCreateDataSourceSelectArguments ();
  448. Assert.AreEqual (0, selectArgs.MaximumRows, "CreateDataSourceSelectArguments1");
  449. Assert.AreEqual (false, selectArgs.RetrieveTotalRowCount, "CreateDataSourceSelectArguments2");
  450. }
  451. [Test]
  452. public void FormView_CreateControlStyle ()
  453. {
  454. Poker fv = new Poker ();
  455. Style s = fv.DoCreateControlStyle ();
  456. Assert.AreEqual (typeof (TableStyle), s.GetType (), "CreateControlStyle1");
  457. Assert.AreEqual (GridLines.None, ((TableStyle) s).GridLines, "CreateControlStyle2");
  458. Assert.AreEqual ("", ((TableStyle) s).BackImageUrl, "CreateControlStyle3");
  459. Assert.AreEqual (0, ((TableStyle) s).CellSpacing, "CreateControlStyle4");
  460. Assert.AreEqual (-1, ((TableStyle) s).CellPadding, "CreateControlStyle5");
  461. }
  462. [Test]
  463. public void FormView_InitializeRow ()
  464. {
  465. //not implemented
  466. }
  467. [Test]
  468. public void FormView_InitializePager ()
  469. {
  470. Poker fv = new Poker ();
  471. Page page = new Page ();
  472. page.Controls.Add (fv);
  473. fv.AllowPaging = true;
  474. fv.DataSource = myds;
  475. Assert.AreEqual (false, fv.isInitializePager, "BeforeInitializePager");
  476. Assert.AreEqual (0, fv.PageCount, "BeforeInitializePagerPageCount");
  477. fv.DataBind ();
  478. Assert.AreEqual (true, fv.isInitializePager, "AfterInitializePager");
  479. Assert.AreEqual (6, fv.PageCount, "AfterInitializePagerPageCount");
  480. }
  481. [Test]
  482. public void FormView_CreateRow ()
  483. {
  484. Poker fv = new Poker ();
  485. fv.AllowPaging =true;
  486. fv.DataSource = myds;
  487. fv.Page = new Page ();
  488. fv.DataBind ();
  489. FormViewRow row = fv.DoCreateRow (2,DataControlRowType.DataRow ,DataControlRowState.Normal );
  490. Assert.AreEqual (2, row.ItemIndex, "CreatedRowItemIndex1");
  491. Assert.AreEqual (DataControlRowState.Normal , row.RowState, "CreatedRowState1");
  492. Assert.AreEqual (DataControlRowType.DataRow , row.RowType, "CreatedRowType1");
  493. row = fv.DoCreateRow (4, DataControlRowType.Footer, DataControlRowState.Edit);
  494. Assert.AreEqual (4, row.ItemIndex, "CreatedRowItemIndex2");
  495. Assert.AreEqual (DataControlRowState.Edit , row.RowState, "CreatedRowState2");
  496. Assert.AreEqual (DataControlRowType.Footer , row.RowType, "CreatedRowType2");
  497. //FormViewPagerRow pagerRow = (FormViewPagerRow)fv.DoCreateRow (3, DataControlRowType.Pager , DataControlRowState.Insert);
  498. //Assert.AreEqual (3, pagerRow.ItemIndex, "CreatedPageRowItemIndex");
  499. //Assert.AreEqual (DataControlRowState.Insert, pagerRow.RowState, "CreatedPageRowState");
  500. //Assert.AreEqual (DataControlRowType.Pager, pagerRow.RowType, "CreatedPageRowType");
  501. }
  502. [Test]
  503. public void FormView_CreateTable ()
  504. {
  505. Poker fv = new Poker ();
  506. Table tb = fv.DoCreateTable ();
  507. fv.Page = new Page ();
  508. Assert.AreEqual ("", tb.BackImageUrl , "CreateTable1");
  509. Assert.AreEqual (0, tb.Rows.Count, "CreateTable2");
  510. fv.DataSource = myds;
  511. fv.DataBind ();
  512. fv.ID = "TestFormView";
  513. tb = fv.DoCreateTable ();
  514. Assert.AreEqual (-1, tb.CellPadding , "CreateTable3");
  515. }
  516. [Test]
  517. public void FormView_EnsureDataBound ()
  518. {
  519. Poker fv = new Poker ();
  520. fv.DataSource = myds;
  521. fv.DoOnPreRender (EventArgs.Empty);
  522. Assert.AreEqual (true, fv.ensureDataBound, "EnsureDataBound");
  523. }
  524. [Test]
  525. public void FormView_PerformDataBinding ()
  526. {
  527. Poker fv = new Poker ();
  528. fv.Page = new Page ();
  529. Assert.AreEqual (0,fv.DataItemCount, "BeforePerformDataBinding");
  530. fv.DoPerformDataBinding (myds);
  531. Assert.AreEqual (6, fv.DataItemCount, "AfterPerformDataBinding");
  532. }
  533. [Test]
  534. public void FormView_ExtractRowValues ()
  535. {
  536. Poker fv=new Poker ();
  537. fv.ItemTemplate = new MyTemplate ();
  538. fv.DataKeyNames = new string[] { "ID", "FName", "LName" };
  539. //IOrderedDictionary dict = (IOrderedDictionary) new OrderedDictionary (0x19);
  540. //fv.DoExtractRowValues (dict, true);
  541. //DataTable ds = CreateDataTable ();
  542. //fv.DataSource = ds;
  543. //fv.DataBind ();
  544. //OrderedDictionary fieldsValues = new OrderedDictionary ();
  545. //fv.DoExtractRowValues (fieldsValues, true);
  546. //Assert.AreEqual (3, fieldsValues.Count, "ExtractRowValues1");
  547. //Assert.AreEqual (3, fieldsValues.Keys.Count, "ExtractRowValues2");
  548. //Assert.AreEqual (3, fieldsValues.Values.Count, "ExtractRowValues3");
  549. //Assert.AreEqual (true, fieldsValues.Contains ("ID"), "ExtractRowValues4");
  550. //IDictionaryEnumerator enumerator = fieldsValues.GetEnumerator ();
  551. //enumerator.MoveNext ();
  552. //Assert.AreEqual ("ID", enumerator.Key, "FieldValue1");
  553. //Assert.AreEqual ("1001", enumerator.Value, "FieldValue2");
  554. //enumerator.MoveNext ();
  555. //Assert.AreEqual ("FName", enumerator.Key, "FieldValue3");
  556. //Assert.AreEqual ("Mahesh", enumerator.Value, "FieldValue4");
  557. //enumerator.MoveNext ();
  558. //Assert.AreEqual ("LName", enumerator.Key, "FieldValue5");
  559. //Assert.AreEqual ("Chand", enumerator.Value, "FieldValue6");
  560. }
  561. [Test]
  562. [Category ("NotWorking")]
  563. public void FormView_PrepareControlHierarcy ()
  564. {
  565. Poker fv = new Poker ();
  566. fv.Page = new Page ();
  567. fv.controlHierarchy = false;
  568. fv.Render ();
  569. Assert.AreEqual (0, fv.Controls.Count, "ControlHierarchy1");
  570. Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy2");
  571. fv.AllowPaging = true;
  572. fv.DataSource = myds;
  573. fv.DataBind ();
  574. fv.controlHierarchy = false;
  575. fv.Render ();
  576. Assert.AreEqual (1, fv.Controls.Count, "ControlHierarchy3");
  577. Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy4");
  578. }
  579. //Public Methods
  580. [Test]
  581. public void FormView_ChangeMode ()
  582. {
  583. Poker fv = new Poker ();
  584. Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeDefault");
  585. fv.ChangeMode (FormViewMode.Insert);
  586. Assert.AreEqual (FormViewMode.Insert, fv.CurrentMode, "ChangeModeInsert");
  587. fv.ChangeMode (FormViewMode.Edit);
  588. Assert.AreEqual (FormViewMode.Edit, fv.CurrentMode, "ChangeModeEdit");
  589. fv.ChangeMode (FormViewMode.ReadOnly);
  590. Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeReadOnly");
  591. }
  592. [Test]
  593. public void FormView_DataBind ()
  594. {
  595. Poker fv = new Poker ();
  596. fv.AllowPaging = true;
  597. fv.DataSource = myds;
  598. fv.Page = new Page ();
  599. Assert.AreEqual (0, fv.PageCount, "BeforeDataBind1");
  600. Assert.AreEqual (null, fv.DataItem, "BeforeDataBind2");
  601. fv.DataBind ();
  602. Assert.AreEqual (6, fv.PageCount, "AfterDataBind1");
  603. Assert.AreEqual (6, fv.DataItemCount, "AfterDataBind2");
  604. Assert.AreEqual ("Item1", fv.DataItem, "AfterDataBind3");
  605. }
  606. private bool isDeleted = false;
  607. [Test]
  608. public void FormView_DeleteItem ()
  609. {
  610. Poker fv = new Poker ();
  611. fv.Page = new Page ();
  612. fv.DataSource = myds;
  613. fv.DataBind ();
  614. Assert.AreEqual (false, isDeleted, "BeforeDeleteItem");
  615. fv.ItemDeleting += new FormViewDeleteEventHandler (fv_DeleteingHandler);
  616. fv.DeleteItem ();
  617. Assert.AreEqual (true, isDeleted, "BeforeDeleteItem");
  618. }
  619. public void fv_DeleteingHandler (Object sender, FormViewDeleteEventArgs e)
  620. {
  621. isDeleted = true;
  622. }
  623. private bool insertItem = false;
  624. [Test]
  625. public void FormView_InsertItem ()
  626. {
  627. Poker fv = new Poker ();
  628. fv.Page = new Page ();
  629. fv.ChangeMode (FormViewMode.Insert);
  630. fv.ItemInserting += new FormViewInsertEventHandler (insert_item);
  631. Assert.AreEqual (false, insertItem, "BeforeInsertItem");
  632. fv.InsertItem (false);
  633. Assert.AreEqual (true, insertItem, "AfterInsertItem");
  634. }
  635. public void insert_item (object sender, FormViewInsertEventArgs e)
  636. {
  637. insertItem = true;
  638. }
  639. private bool updateItem = false;
  640. [Test]
  641. public void FormView_UpdateItem ()
  642. {
  643. Poker fv = new Poker ();
  644. fv.Page = new Page ();
  645. fv.DataSource = myds;
  646. fv.DataBind ();
  647. fv.ChangeMode (FormViewMode.Edit);
  648. fv.ItemUpdating += new FormViewUpdateEventHandler (update_item);
  649. Assert.AreEqual (false, updateItem, "BeforeUpdateItem");
  650. fv.UpdateItem (false);
  651. Assert.AreEqual (true, updateItem, "AfterUpdateItem");
  652. }
  653. public void update_item (object sender, FormViewUpdateEventArgs e)
  654. {
  655. updateItem = true;
  656. }
  657. [Test]
  658. public void FormView_IsBindableType ()
  659. {
  660. bool isBindable = false;
  661. Poker fv = new Poker ();
  662. isBindable = fv.IsBindableType (typeof (Decimal));
  663. Assert.AreEqual (true, isBindable, "IsBindableTypeDecimal");
  664. isBindable = fv.IsBindableType (typeof (Int32));
  665. Assert.AreEqual (true, isBindable, "IsBindableTypeInt32");
  666. isBindable = fv.IsBindableType (typeof (String));
  667. Assert.AreEqual (true, isBindable, "IsBindableTypeString");
  668. isBindable = fv.IsBindableType (typeof (Boolean));
  669. Assert.AreEqual (true, isBindable, "IsBindableTypeBoolean");
  670. isBindable = fv.IsBindableType (typeof (DateTime));
  671. Assert.AreEqual (true, isBindable, "IsBindableTypeDateTime");
  672. isBindable = fv.IsBindableType (typeof (Byte));
  673. Assert.AreEqual (true, isBindable, "IsBindableTypeByte");
  674. isBindable = fv.IsBindableType (typeof (Guid));
  675. Assert.AreEqual (true, isBindable, "IsBindableTypeGuid");
  676. isBindable = fv.IsBindableType (typeof (MyTemplate));
  677. Assert.AreEqual (false, isBindable, "IsBindableTypeMyTemplate");
  678. }
  679. [Test]
  680. public void FormView_ControlState () {
  681. Poker fv = new Poker ();
  682. Poker copy = new Poker ();
  683. string[] keys = new String[2];
  684. keys[0] = "key1";
  685. keys[1] = "key2";
  686. fv.DataKeyNames = keys;
  687. fv.BackImageUrl = "photo.jpg";
  688. fv.DefaultMode = FormViewMode.Insert ;
  689. fv.ChangeMode (FormViewMode.Edit);
  690. object state = fv.DoSaveControlState ();
  691. copy.DoLoadControlState (state);
  692. Assert.AreEqual (2, copy.DataKeyNames.Length, "DataKeyNames.Length");
  693. Assert.AreEqual ("key1", copy.DataKeyNames[0], "ControlStateDataKeyValue");
  694. Assert.AreEqual ("key2", copy.DataKeyNames[1], "ControlStateDataKeyValue2");
  695. Assert.AreEqual (FormViewMode.Insert, copy.DefaultMode, "ControlStateDefaultMode");
  696. Assert.AreEqual (FormViewMode.Edit, copy.CurrentMode, "ControlStateCurrentMode");
  697. }
  698. //ViewState
  699. [Test]
  700. public void FormView_ViewState ()
  701. {
  702. Poker fv = new Poker ();
  703. Poker copy = new Poker ();
  704. fv.AllowPaging = true;
  705. fv.HeaderText = "Testing";
  706. fv.CssClass = "style.css";
  707. object state = fv.SaveState ();
  708. copy.LoadState (state);
  709. Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging");
  710. Assert.AreEqual ("Testing", copy.HeaderText, "ViewStateHeaderText");
  711. Assert.AreEqual ("style.css", copy.CssClass, "ViewStateCssClass");
  712. }
  713. //Events
  714. private bool init;
  715. private bool itemCommand;
  716. private bool itemCreated;
  717. private bool itemDeleted;
  718. private bool itemDeleting;
  719. private bool itemInserted;
  720. private bool itemInserting;
  721. private bool itemUpdated;
  722. private bool itemUpdating;
  723. private bool modeChanged;
  724. private bool modeChanging;
  725. private bool pageIndexChanged;
  726. private bool pageIndexChanging;
  727. private int newPageIndex;
  728. public void ResetEvents ()
  729. {
  730. init = false;
  731. itemCommand = false;
  732. itemCreated = false;
  733. itemDeleted = false;
  734. itemDeleting = false;
  735. itemInserted = false;
  736. itemInserting = false;
  737. itemUpdated = false;
  738. itemUpdating = false;
  739. modeChanged = false;
  740. modeChanging = false;
  741. pageIndexChanged = false;
  742. pageIndexChanging = false;
  743. }
  744. [Test]
  745. public void FormView_BubbleEvent ()
  746. {
  747. FormViewCommandEventArgs com;
  748. Poker fv = new Poker ();
  749. Page page = new Page ();
  750. Button bt = new Button ();
  751. fv.AllowPaging = true;
  752. fv.DataSource = myds;
  753. page.Controls.Add (fv);
  754. fv.DataBind ();
  755. ResetEvents ();
  756. fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);
  757. fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);
  758. //Delete
  759. fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);
  760. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Delete", null));
  761. Assert.AreEqual (false, itemDeleting, "BeforeDeleteCommandBubbleEvent");
  762. Assert.AreEqual (false, itemCommand, "BeforeDeleteBubbleEvent");
  763. fv.DoOnBubbleEvent (bt, com);
  764. Assert.AreEqual (true, itemDeleting, "AfterDeleteBubbleEvent");
  765. Assert.AreEqual (true, itemCommand, "AfterDeleteCommandBubbleEvent");
  766. //Insert
  767. itemCommand = false;
  768. fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);
  769. fv.ChangeMode (FormViewMode.Insert);
  770. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Insert", null));
  771. Assert.AreEqual (false, itemCommand, "BeforeInsertCommandBubbleEvent");
  772. Assert.AreEqual (false, itemInserting, "BeforeInsertBubbleEvent");
  773. fv.DoOnBubbleEvent (bt, com);
  774. Assert.AreEqual (true, itemCommand, "AfterInsertCommandBubbleEvent");
  775. Assert.AreEqual (true, itemInserting, "AfterInsertBubbleEvent");
  776. //Update
  777. itemCommand = false;
  778. fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);
  779. fv.ChangeMode (FormViewMode.Edit);
  780. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Update", null));
  781. Assert.AreEqual (false, itemUpdating, "BeforeUpdateEvent");
  782. Assert.AreEqual (false, itemCommand, "BeforeUpdateCommandEvent");
  783. fv.DoOnBubbleEvent (bt, com);
  784. Assert.AreEqual (true, itemCommand, "AfterUpdateCommandBubbleEvent");
  785. Assert.AreEqual (true, itemUpdating, "AfterUpdateBubbleEvent");
  786. //Cancel
  787. itemCommand = false;
  788. fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);
  789. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Cancel", null));
  790. Assert.AreEqual (false, itemCommand, "BeforeCancelCommandBubbleEvent");
  791. Assert.AreEqual (false, modeChanging, "BeforeCancelBubbleEvent");
  792. fv.DoOnBubbleEvent (bt, com);
  793. Assert.AreEqual (true, itemCommand, "AfterCancelCommandBubbleEvent");
  794. Assert.AreEqual (true, modeChanging, "AfterCancelBubbleEvent");
  795. //Edit
  796. itemCommand = false;
  797. modeChanging = false;
  798. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Edit", null));
  799. Assert.AreEqual (false, itemCommand, "BeforeEditCommandBubbleEvent");
  800. Assert.AreEqual (false, modeChanging, "BeforeEditBubbleEvent");
  801. fv.DoOnBubbleEvent (bt, com);
  802. Assert.AreEqual (true, itemCommand, "AfterEditCommandBubbleEvent");
  803. Assert.AreEqual (true, modeChanging, "AfterEditBubbleEvent");
  804. //New
  805. itemCommand = false;
  806. modeChanging = false;
  807. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("New", null));
  808. Assert.AreEqual (false, itemCommand, "BeforeNewCommandBubbleEvent");
  809. Assert.AreEqual (false, modeChanging, "BeforeNewBubbleEvent");
  810. fv.DoOnBubbleEvent (bt, com);
  811. Assert.AreEqual (true, itemCommand, "AfterNewCommandBubbleEvent");
  812. Assert.AreEqual (true, modeChanging, "AfterNewBubbleEvent");
  813. //Page Index default
  814. itemCommand = false;
  815. fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);
  816. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", null));
  817. Assert.AreEqual (false, itemCommand, "BeforePageCommandBubbleEvent");
  818. Assert.AreEqual (false, pageIndexChanging, "BeforePageBubbleEvent");
  819. fv.DoOnBubbleEvent (bt, com);
  820. Assert.AreEqual (true, itemCommand, "AfterPageCommandBubbleEvent");
  821. Assert.AreEqual (true, pageIndexChanging, "AfterPageBubbleEvent");
  822. Assert.AreEqual (-1, newPageIndex, "PageIndex");
  823. //Next Page
  824. itemCommand = false;
  825. pageIndexChanging = false;
  826. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Next"));
  827. Assert.AreEqual (false, itemCommand, "BeforeNextPageCommandBubbleEvent");
  828. Assert.AreEqual (false, pageIndexChanging, "BeforeNextPageBubbleEvent");
  829. fv.DoOnBubbleEvent (bt, com);
  830. Assert.AreEqual (true, itemCommand, "AfterNextPageCommandBubbleEvent");
  831. Assert.AreEqual (true, pageIndexChanging, "AfterNextPageBubbleEvent");
  832. Assert.AreEqual (1, newPageIndex, "NextPageIndex");
  833. //Prev Page
  834. itemCommand = false;
  835. pageIndexChanging = false;
  836. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Prev"));
  837. Assert.AreEqual (false, itemCommand, "BeforePrevPageCommandBubbleEvent");
  838. Assert.AreEqual (false, pageIndexChanging, "BeforePrevPageBubbleEvent");
  839. fv.DoOnBubbleEvent (bt, com);
  840. Assert.AreEqual (true, itemCommand, "AfterPrevPageCommandBubbleEvent");
  841. Assert.AreEqual (true, pageIndexChanging, "AfterPrevPageBubbleEvent");
  842. Assert.AreEqual (-1, newPageIndex, "PrevPageIndex");
  843. //First Page
  844. itemCommand = false;
  845. pageIndexChanging = false;
  846. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "First"));
  847. Assert.AreEqual (false, itemCommand, "BeforeFirstPageCommandBubbleEvent");
  848. Assert.AreEqual (false, pageIndexChanging, "BeforeFirstPageBubbleEvent");
  849. fv.DoOnBubbleEvent (bt, com);
  850. Assert.AreEqual (true, itemCommand, "AfterFirstPageCommandBubbleEvent");
  851. Assert.AreEqual (true, pageIndexChanging, "AfterFirstPageBubbleEvent");
  852. Assert.AreEqual (0, newPageIndex, "FirstPageIndex");
  853. //Last Page
  854. itemCommand = false;
  855. pageIndexChanging = false;
  856. com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Last"));
  857. Assert.AreEqual (false, itemCommand, "BeforeLastPageCommandBubbleEvent");
  858. Assert.AreEqual (false, pageIndexChanging, "BeforeLastPageBubbleEvent");
  859. fv.DoOnBubbleEvent (bt, com);
  860. Assert.AreEqual (true, itemCommand, "AfterLastPageCommandBubbleEvent");
  861. Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");
  862. Assert.AreEqual (5, newPageIndex, "FirstPageIndex");
  863. }
  864. [Test]
  865. public void FormView_Events ()
  866. {
  867. ResetEvents ();
  868. Poker fv = new Poker ();
  869. fv.Page = new Page ();
  870. fv.Init += new EventHandler (fv_Init);
  871. fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);
  872. fv.ItemCreated += new EventHandler (fv_ItemCreated);
  873. fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);
  874. fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);
  875. fv.ItemInserted += new FormViewInsertedEventHandler (fv_ItemInserted);
  876. fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);
  877. fv.ItemUpdated += new FormViewUpdatedEventHandler (fv_ItemUpdated);
  878. fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);
  879. fv.ModeChanged += new EventHandler (fv_ModeChanged);
  880. fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);
  881. fv.PageIndexChanged += new EventHandler (fv_PageIndexChanged);
  882. fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);
  883. Assert.AreEqual (false, init, "BeforeInit");
  884. fv.DoOnInit (new EventArgs ());
  885. Assert.AreEqual (true, init, "AfterInit");
  886. Assert.AreEqual (false, itemCommand, "BeforeItemCommandEvent");
  887. Button bt = new Button ();
  888. fv.DoOnItemCommand (new FormViewCommandEventArgs (bt, new CommandEventArgs ("", null)));
  889. Assert.AreEqual (true, itemCommand, "AfterItemCommandEvent");
  890. Assert.AreEqual (false, itemCreated, "BeforeItemCreatedEvent");
  891. fv.DoOnItemCreated (new EventArgs ());
  892. Assert.AreEqual (true, itemCreated, "AfterItemCreatedEvent");
  893. Assert.AreEqual (false, itemDeleted, "BeforeItemDeletedEvent");
  894. fv.DoOnItemDeleted (new FormViewDeletedEventArgs (3, new Exception ()));
  895. Assert.AreEqual (true, itemDeleted, "AfterItemDeletedEvent");
  896. Assert.AreEqual (false, itemDeleting, "BeforeItemDeletingEvent");
  897. fv.DoOnItemDeleting (new FormViewDeleteEventArgs (1));
  898. Assert.AreEqual (true, itemDeleting, "AfterItemDeletingEvent");
  899. Assert.AreEqual (false, itemInserted, "BeforeItemInsertedEvent");
  900. fv.DoOnItemInserted (new FormViewInsertedEventArgs (2, new Exception ()));
  901. Assert.AreEqual (true, itemInserted, "AfterItemInsetedEvent");
  902. Assert.AreEqual (false, itemInserting, "BeforeItemInsertingEvent");
  903. fv.DoOnItemInserting (new FormViewInsertEventArgs (bt));
  904. Assert.AreEqual (true, itemInserting, "AfterItemInsetingEvent");
  905. Assert.AreEqual (false, itemUpdated, "BeforeItemUpdatedEvent");
  906. fv.DoOnItemUpdated (new FormViewUpdatedEventArgs (1, new Exception ()));
  907. Assert.AreEqual (true, itemUpdated, "AfterItemUpdatedEvent");
  908. Assert.AreEqual (false, itemUpdating, "BeforeItemUpdatingEvent");
  909. fv.DoOnItemUpdating (new FormViewUpdateEventArgs (bt));
  910. Assert.AreEqual (true, itemUpdating, "AfterItemUpdatingEvent");
  911. Assert.AreEqual (false, modeChanged, "BeforeModeChangedEvent");
  912. fv.DoOnModeChanged (new EventArgs ());
  913. Assert.AreEqual (true, modeChanged, "AfterModeChangedEvent");
  914. Assert.AreEqual (false, modeChanging, "BeforeModeChangingEvent");
  915. fv.DoOnModeChanging (new FormViewModeEventArgs (FormViewMode.Edit, true));
  916. Assert.AreEqual (true, modeChanging, "AfterModeChangingEvent");
  917. Assert.AreEqual (false, pageIndexChanged, "BeforePageIndexChangedEvent");
  918. fv.DoOnPageIndexChanged (new EventArgs ());
  919. Assert.AreEqual (true, pageIndexChanged, "AfterPageIndexChangedEvent");
  920. Assert.AreEqual (false, pageIndexChanging, "BeforePageIndexChangingEvent");
  921. fv.DoOnPageIndexChanging (new FormViewPageEventArgs (1));
  922. Assert.AreEqual (true, pageIndexChanging, "AfterPageIndexChangingEvent");
  923. }
  924. private void fv_Init (object sender, EventArgs e)
  925. {
  926. init = true;
  927. }
  928. private void fv_ItemCommand (object sender, FormViewCommandEventArgs e)
  929. {
  930. itemCommand = true;
  931. }
  932. private void fv_ItemCreated (object sender, EventArgs e)
  933. {
  934. itemCreated = true;
  935. }
  936. private void fv_ItemDeleted (object sender, FormViewDeletedEventArgs e)
  937. {
  938. itemDeleted = true;
  939. }
  940. private void fv_ItemDeleting (object sender, FormViewDeleteEventArgs e)
  941. {
  942. itemDeleting = true;
  943. }
  944. private void fv_ItemInserted (object sender, FormViewInsertedEventArgs e)
  945. {
  946. itemInserted = true;
  947. }
  948. private void fv_ItemInserting (object sender, FormViewInsertEventArgs e)
  949. {
  950. itemInserting = true;
  951. }
  952. private void fv_ItemUpdated (object sender, FormViewUpdatedEventArgs e)
  953. {
  954. itemUpdated = true;
  955. }
  956. private void fv_ItemUpdating (object sender, FormViewUpdateEventArgs e)
  957. {
  958. itemUpdating = true;
  959. }
  960. private void fv_ModeChanged (object sender, EventArgs e)
  961. {
  962. modeChanged = true;
  963. }
  964. private void fv_ModeChanging (object sender, FormViewModeEventArgs e)
  965. {
  966. modeChanging = true;
  967. }
  968. private void fv_PageIndexChanged (object sender, EventArgs e)
  969. {
  970. pageIndexChanged = true;
  971. }
  972. private void fv_PageIndexChanging (object sender, FormViewPageEventArgs e)
  973. {
  974. pageIndexChanging = true;
  975. newPageIndex = e.NewPageIndex;
  976. e.NewPageIndex = -1;
  977. }
  978. //Exceptions
  979. [Test]
  980. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  981. public void CellPaddingException ()
  982. {
  983. Poker p = new Poker ();
  984. p.CellPadding = -2;
  985. }
  986. [Test]
  987. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  988. public void CellSpacingException ()
  989. {
  990. Poker p = new Poker ();
  991. p.CellSpacing = -5;
  992. }
  993. [Test]
  994. [Category ("NotWorking")]
  995. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  996. public void PageIndexException ()
  997. {
  998. Poker p = new Poker ();
  999. p.PageIndex = -5;
  1000. }
  1001. [Test]
  1002. [Category ("NotWorking")]
  1003. [ExpectedException (typeof (HttpException))]
  1004. public void InsertItemException ()
  1005. {
  1006. Poker p = new Poker ();
  1007. p.InsertItem (true);
  1008. }
  1009. [Test]
  1010. [Category ("NotWorking")]
  1011. [ExpectedException (typeof (HttpException))]
  1012. public void UpdateItemException ()
  1013. {
  1014. Poker p = new Poker ();
  1015. p.UpdateItem (true);
  1016. }
  1017. [Test]
  1018. public void PageIndex ()
  1019. {
  1020. ObjectDataSource ds = new ObjectDataSource ();
  1021. ds.ID = "ObjectDataSource1";
  1022. ds.TypeName = "System.Guid";
  1023. ds.SelectMethod = "ToByteArray";
  1024. Page p = new Page ();
  1025. Poker f = new Poker ();
  1026. f.Page = p;
  1027. ds.Page = p;
  1028. p.Controls.Add (f);
  1029. p.Controls.Add (ds);
  1030. f.DataSourceID = "ObjectDataSource1";
  1031. f.DoConfirmInitState ();
  1032. f.DoOnPreRender (EventArgs.Empty);
  1033. object cur = f.DataItem;
  1034. f.PageIndex = 1;
  1035. Assert.IsTrue (cur != f.DataItem, "#01");
  1036. CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");
  1037. FormViewCommandEventArgs fvargs = new FormViewCommandEventArgs (f, cargs);
  1038. f.DoOnBubbleEvent (f, fvargs);
  1039. Assert.IsTrue (f.OnPageIndexChangingCalled, "#02");
  1040. Assert.IsTrue (f.OnPageIndexChangedCalled, "#03");
  1041. f.OnPageIndexChangingCalled = false;
  1042. f.OnPageIndexChangedCalled = false;
  1043. f.DoOnBubbleEvent (f, fvargs);
  1044. Assert.IsTrue (f.OnPageIndexChangingCalled, "#04");
  1045. Assert.IsFalse (f.OnPageIndexChangedCalled, "#05");
  1046. f.OnPageIndexChangingCalled = false;
  1047. f.OnPageIndexChangedCalled = false;
  1048. f.PageIndex = f.PageCount - 1;
  1049. cargs = new CommandEventArgs ("Page", "Next");
  1050. fvargs = new FormViewCommandEventArgs (f, cargs);
  1051. f.DoOnBubbleEvent (f, fvargs);
  1052. Assert.IsTrue (f.OnPageIndexChangingCalled, "#06");
  1053. Assert.IsFalse (f.OnPageIndexChangedCalled, "#07");
  1054. f.OnPageIndexChangingCalled = false;
  1055. f.OnPageIndexChangedCalled = false;
  1056. }
  1057. [Test]
  1058. public void PageCount ()
  1059. {
  1060. ObjectDataSource ds = new ObjectDataSource ();
  1061. ds.ID = "ObjectDataSource1";
  1062. ds.TypeName = "System.Guid";
  1063. ds.SelectMethod = "ToByteArray";
  1064. Page p = new Page ();
  1065. Poker f = new Poker ();
  1066. f.Page = p;
  1067. ds.Page = p;
  1068. p.Controls.Add (f);
  1069. p.Controls.Add (ds);
  1070. f.DataSourceID = "ObjectDataSource1";
  1071. f.DoConfirmInitState ();
  1072. f.DoOnPreRender (EventArgs.Empty);
  1073. f.PageIndex = 1;
  1074. Assert.AreEqual (16, f.PageCount, "#01");
  1075. }
  1076. [Test]
  1077. public void InsertTemplate () {
  1078. ObjectDataSource ds = new ObjectDataSource ();
  1079. ds.ID = "ObjectDataSource1";
  1080. ds.TypeName = "System.Collections.ArrayList";
  1081. ds.SelectMethod = "ToArray";
  1082. Page p = new Page ();
  1083. Poker f = new Poker ();
  1084. Template itemTemplate = new Template ();
  1085. Template emptyTemplate = new Template ();
  1086. Template insertTemplate = new Template ();
  1087. f.ItemTemplate = itemTemplate;
  1088. f.EmptyDataTemplate = emptyTemplate;
  1089. f.InsertItemTemplate = insertTemplate;
  1090. f.DefaultMode = FormViewMode.Insert;
  1091. f.Page = p;
  1092. ds.Page = p;
  1093. p.Controls.Add (f);
  1094. p.Controls.Add (ds);
  1095. f.DataSourceID = "ObjectDataSource1";
  1096. f.DoConfirmInitState ();
  1097. f.DoOnPreRender (EventArgs.Empty);
  1098. f.AllowPaging = true;
  1099. Assert.IsFalse(itemTemplate.Instantiated, "#01");
  1100. Assert.IsFalse(emptyTemplate.Instantiated, "#02");
  1101. Assert.IsTrue(insertTemplate.Instantiated, "#03");
  1102. }
  1103. [TestFixtureTearDown]
  1104. public void TearDown ()
  1105. {
  1106. Thread.Sleep (100);
  1107. //WebTest.Unload ();
  1108. }
  1109. //[TestFixtureStartUp]
  1110. //public void StartUp ()
  1111. //{
  1112. // WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");
  1113. //}
  1114. [Test]
  1115. [Category("NunitWeb")]
  1116. public void FormViewCssClass ()
  1117. {
  1118. string res = new WebTest ("FormView.aspx").Run ();
  1119. Assert.IsTrue (Regex.IsMatch (
  1120. res, ".*<table[^>]*class=\"[^\"]*test1[^\"]*\"[^>]*>.*",
  1121. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  1122. "check that <table class=\"test1\"> is found. Actual: "+res);
  1123. Assert.IsFalse (Regex.IsMatch (
  1124. res, ".*<table[^>]*class=\"\"[^>]*>.*",
  1125. RegexOptions.IgnoreCase|RegexOptions.Singleline),
  1126. "check that <table class=\"\"> is not found. Actual: "+res);
  1127. }
  1128. [Test]
  1129. public void FormView_RenderSimpleTemplate()
  1130. {
  1131. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1132. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test1") + 5, RenderedPageHtml.IndexOf ("test2") - RenderedPageHtml.IndexOf ("test1") - 5);
  1133. string origHtmlValue = @" &nbsp;<table cellspacing=""2"" cellpadding=""3"" rules=""all"" border=""1"" id=""FormView1"" style=""background-color:#DEBA84;border-color:#DEBA84;border-width:1px;border-style:None;"">
  1134. <tr style=""color:#8C4510;background-color:#FFF7E7;"">
  1135. <td colspan=""2"">
  1136. <span id=""FormView1_Label1"">1</span>
  1137. </td>
  1138. </tr><tr align=""center"" style=""color:#8C4510;"">
  1139. <td colspan=""2""><table border=""0"">
  1140. <tr>
  1141. <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"" style=""color:#8C4510;"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"" style=""color:#8C4510;"">3</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$4')"" style=""color:#8C4510;"">4</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$5')"" style=""color:#8C4510;"">5</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$6')"" style=""color:#8C4510;"">6</a></td>
  1142. </tr>
  1143. </table></td>
  1144. </tr>
  1145. </table>";
  1146. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderSimpleTemplate");
  1147. }
  1148. [Test]
  1149. [Category ("NotWorking")]
  1150. public void FormView_RenderFooterAndPager()
  1151. {
  1152. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1153. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test2") + 5, RenderedPageHtml.IndexOf ("test3") - RenderedPageHtml.IndexOf ("test2") - 5);
  1154. string origHtmlValue = @" <table cellspacing=""0"" cellpadding=""4"" border=""0"" id=""FormView2"" style=""color:#333333;border-collapse:collapse;"">
  1155. <tr style=""color:#333333;background-color:#F7F6F3;"">
  1156. <td colspan=""2"">
  1157. <span id=""FormView2_Label2"">1</span>
  1158. </td>
  1159. </tr><tr style=""color:White;background-color:#5D7B9D;font-weight:bold;"">
  1160. <td colspan=""2"">
  1161. <span id=""FormView2_Label3"">Footer Template Test</span>
  1162. </td>
  1163. </tr><tr align=""center"" style=""color:White;background-color:#284775;"">
  1164. <td colspan=""2"">
  1165. <input type=""submit"" name=""FormView2$ctl01$Button1"" value=""Prev Item"" id=""FormView2_ctl01_Button1"" />
  1166. <input type=""submit"" name=""FormView2$ctl01$Button2"" value=""Next Item"" id=""FormView2_ctl01_Button2"" />
  1167. <input type=""submit"" name=""FormView2$ctl01$Button3"" value=""First Item"" id=""FormView2_ctl01_Button3"" />
  1168. <input type=""submit"" name=""FormView2$ctl01$Button4"" value=""Last Item"" id=""FormView2_ctl01_Button4"" />
  1169. </td>
  1170. </tr>
  1171. </table>
  1172. </div>";
  1173. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "FormView_RenderFooterAndPager");
  1174. }
  1175. [Test]
  1176. [Category ("NunitWeb")]
  1177. public void FormView_RenderWithHeader()
  1178. {
  1179. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1180. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test4") + 5, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("test4") - 5);
  1181. string origHtmlValue = @" <table cellspacing=""10"" cellpadding=""3"" align=""Right"" rules=""all"" border=""1"" id=""FormView4"" style=""background-color:White;border-color:#CCCCCC;border-width:1px;border-style:None;"">
  1182. <tr align=""left"" style=""color:White;background-color:#006699;font-weight:bold;"">
  1183. <td colspan=""2"">Using Header Text property</td>
  1184. </tr><tr align=""center"" style=""color:#000066;background-color:Maroon;"">
  1185. <td colspan=""2"">Using Footer Text property</td>
  1186. </tr><tr align=""left"" style=""color:#000066;background-color:LightGrey;"">
  1187. <td colspan=""2"">
  1188. <a id=""FormView4_ctl01_LinkButton1"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton1','')"">Next</a>
  1189. <a id=""FormView4_ctl01_LinkButton2"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton2','')"">Prev</a>
  1190. <span id=""FormView4_ctl01_Label7"">Page Index: 0</span>
  1191. </td>
  1192. </tr>
  1193. </table>";
  1194. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
  1195. }
  1196. [Test]
  1197. [Category ("NunitWeb")]
  1198. public void FormView_Render ()
  1199. {
  1200. string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();
  1201. string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test3") + 5, RenderedPageHtml.IndexOf ("test4") - RenderedPageHtml.IndexOf ("test3") - 5);
  1202. string origHtmlValue = @" <table cellspacing=""0"" cellpadding=""2"" border=""0"" id=""FormView3"" style=""color:Black;background-color:LightGoldenrodYellow;border-color:Tan;border-width:1px;border-style:solid;border-collapse:collapse;"">
  1203. <tr align=""center"" valign=""top"" style=""color:#C00000;background-color:Tan;font-weight:bold;"">
  1204. <td colspan=""2"">
  1205. <span id=""FormView3_Label5"">Header Template Test</span>
  1206. </td>
  1207. </tr><tr>
  1208. <td colspan=""2"">
  1209. <span id=""FormView3_Label4"">1</span>
  1210. </td>
  1211. </tr><tr align=""center"" style=""color:DarkSlateBlue;background-color:PaleGoldenrod;"">
  1212. <td colspan=""2""><table border=""0"">
  1213. <tr>
  1214. <td><span>1</span></td><td>
  1215. <a href=""javascript:__doPostBack('FormView3','Page$2')"" style=""color:DarkSlateBlue;"">2</a></td><td>
  1216. <a href=""javascript:__doPostBack('FormView3','Page$3')"" style=""color:DarkSlateBlue;"">3</a></td><td>
  1217. <a href=""javascript:__doPostBack('FormView3','Page$4')"" style=""color:DarkSlateBlue;"">4</a></td><td>
  1218. <a href=""javascript:__doPostBack('FormView3','Page$5')"" style=""color:DarkSlateBlue;"">5</a></td><td>
  1219. <a href=""javascript:__doPostBack('FormView3','Page$6')"" style=""color:DarkSlateBlue;"">6</a></td>
  1220. </tr><tr align=""right"" style=""color:#FFC0FF;background-color:Tan;"">
  1221. <td colspan=""2"">
  1222. <span id=""FormView3_Label6"">FormView Footer</span>
  1223. </td>
  1224. </tr>
  1225. </table></td>
  1226. </tr>
  1227. </table>";
  1228. HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");
  1229. }
  1230. [Test]
  1231. [Category ("NotWorking")]
  1232. public void FormView_EditPostback ()
  1233. {
  1234. WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
  1235. string pageHTML = t.Run ();
  1236. string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1237. string origHtml = @" <div>
  1238. &nbsp;
  1239. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1240. <tr>
  1241. <td colspan=""2"">
  1242. <span id=""FormView1_ID"">1001</span>&nbsp;
  1243. <span id=""FormView1_LName"">Chand</span>
  1244. <span id=""FormView1_FName"">Mahesh</span>&nbsp;
  1245. <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
  1246. <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
  1247. <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
  1248. </td>
  1249. </tr><tr>
  1250. <td colspan=""2""><table border=""0"">
  1251. <tr>
  1252. <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
  1253. </tr>
  1254. </table></td>
  1255. </tr>
  1256. </table>
  1257. </div>";
  1258. HtmlDiff.AssertAreEqual (origHtml, newHtml, "BeforeEditPostback");
  1259. //Edit button postback (change to edit mode - buttons "Update" and "Cancel" should appear.
  1260. FormRequest fr = new FormRequest (t.Response, "form1");
  1261. fr.Controls.Add ("__EVENTTARGET");
  1262. fr.Controls.Add ("__EVENTARGUMENT");
  1263. fr.Controls["__EVENTTARGET"].Value = "FormView1$EditButton";
  1264. fr.Controls["__EVENTARGUMENT"].Value = "";
  1265. t.Request = fr;
  1266. pageHTML = t.Run ();
  1267. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1268. origHtml = @" <div>
  1269. &nbsp;
  1270. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1271. <tr>
  1272. <td colspan=""2"">
  1273. Enter First Name:<input name=""FormView1$FNameEdit"" type=""text"" value=""Mahesh"" id=""FormView1_FNameEdit"" /><br />
  1274. Enter Last Name:<input name=""FormView1$LNameEdit"" type=""text"" value=""Chand"" id=""FormView1_LNameEdit"" /><br />
  1275. <a id=""FormView1_UpdateButton"" href=""javascript:__doPostBack('FormView1$UpdateButton','')"">Update</a>
  1276. <a id=""FormView1_CancelUpdateButton"" href=""javascript:__doPostBack('FormView1$CancelUpdateButton','')"">Cancel</a>
  1277. </td>
  1278. </tr><tr>
  1279. <td colspan=""2""><table border=""0"">
  1280. <tr>
  1281. <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
  1282. </tr>
  1283. </table></td>
  1284. </tr>
  1285. </table>
  1286. </div>";
  1287. HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterEditPostback");
  1288. //Update record postback
  1289. fr = new FormRequest (t.Response, "form1");
  1290. fr.Controls.Add ("__EVENTTARGET");
  1291. fr.Controls.Add ("__EVENTARGUMENT");
  1292. fr.Controls.Add ("FormView1$FNameEdit");
  1293. fr.Controls.Add ("FormView1$LNameEdit");
  1294. fr.Controls["__EVENTTARGET"].Value = "FormView1$UpdateButton";
  1295. fr.Controls["__EVENTARGUMENT"].Value = "";
  1296. fr.Controls["FormView1$FNameEdit"].Value = "Merav";
  1297. fr.Controls["FormView1$LNameEdit"].Value = "Test";
  1298. t.Request = fr;
  1299. pageHTML = t.Run ();
  1300. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1301. origHtml=@" <div>
  1302. &nbsp;
  1303. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1304. <tr>
  1305. <td colspan=""2"">
  1306. <span id=""FormView1_ID"">1001</span>&nbsp;
  1307. <span id=""FormView1_LName"">Test</span>
  1308. <span id=""FormView1_FName"">Merav</span>&nbsp;
  1309. <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
  1310. <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
  1311. <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
  1312. </td>
  1313. </tr><tr>
  1314. <td colspan=""2""><table border=""0"">
  1315. <tr>
  1316. <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
  1317. </tr>
  1318. </table></td>
  1319. </tr>
  1320. </table>
  1321. </div>";
  1322. HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterUpdatePostback");
  1323. //Postback to return to Edit mode
  1324. fr = new FormRequest (t.Response, "form1");
  1325. fr.Controls.Add ("__EVENTTARGET");
  1326. fr.Controls.Add ("__EVENTARGUMENT");
  1327. fr.Controls["__EVENTTARGET"].Value = "FormView1$EditButton";
  1328. fr.Controls["__EVENTARGUMENT"].Value = "";
  1329. t.Request = fr;
  1330. pageHTML = t.Run ();
  1331. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1332. Assert.AreEqual (true, pageHTML.Contains ("Merav"), "EditModePostback1");
  1333. Assert.AreEqual (true, pageHTML.Contains ("CancelUpdateButton"), "EditModePostback2");
  1334. // Cancel edited record postback
  1335. fr = new FormRequest (t.Response, "form1");
  1336. fr.Controls.Add ("__EVENTTARGET");
  1337. fr.Controls.Add ("__EVENTARGUMENT");
  1338. fr.Controls.Add ("FormView1$FNameEdit");
  1339. fr.Controls.Add ("FormView1$LNameEdit");
  1340. fr.Controls["FormView1$FNameEdit"].Value = "EditFirstName";
  1341. fr.Controls["FormView1$LNameEdit"].Value = "EditLastName";
  1342. fr.Controls["__EVENTTARGET"].Value = "FormView1$CancelUpdateButton";
  1343. fr.Controls["__EVENTARGUMENT"].Value = "";
  1344. t.Request = fr;
  1345. pageHTML = t.Run ();
  1346. newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1347. origHtml = @" <div>
  1348. &nbsp;
  1349. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1350. <tr>
  1351. <td colspan=""2"">
  1352. <span id=""FormView1_ID"">1001</span>&nbsp;
  1353. <span id=""FormView1_LName"">Test</span>
  1354. <span id=""FormView1_FName"">Merav</span>&nbsp;
  1355. <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>
  1356. <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>
  1357. <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>
  1358. </td>
  1359. </tr><tr>
  1360. <td colspan=""2""><table border=""0"">
  1361. <tr>
  1362. <td><span>1</span></td><td><a href=""javascript:__doPostBack('FormView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('FormView1','Page$3')"">3</a></td>
  1363. </tr>
  1364. </table></td>
  1365. </tr>
  1366. </table>
  1367. </div>";
  1368. HtmlDiff.AssertAreEqual (origHtml, newHtml, "CancelEditedRecordPostback");
  1369. }
  1370. [Test]
  1371. [Category ("NotWorking")]
  1372. public void FormView_InsertPostback ()
  1373. {
  1374. WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
  1375. string pageHTML = t.Run ();
  1376. Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeInsert1");
  1377. Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeInsert2");
  1378. Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeInsert3");
  1379. Assert.AreEqual (false, pageHTML.Contains ("Page$4"), "BeforeInsert4");
  1380. FormRequest fr = new FormRequest (t.Response, "form1");
  1381. fr.Controls.Add ("__EVENTTARGET");
  1382. fr.Controls.Add ("__EVENTARGUMENT");
  1383. fr.Controls["__EVENTTARGET"].Value = "FormView1$NewButton";
  1384. fr.Controls["__EVENTARGUMENT"].Value = "";
  1385. t.Request = fr;
  1386. pageHTML = t.Run ();
  1387. string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);
  1388. string origHtml = @" <div>
  1389. &nbsp;
  1390. <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">
  1391. <tr>
  1392. <td colspan=""2"">
  1393. Insert ID:
  1394. <input name=""FormView1$IDInsert"" type=""text"" id=""FormView1_IDInsert"" /><br />
  1395. Insert First Name:
  1396. <input name=""FormView1$FNameInsert"" type=""text"" id=""FormView1_FNameInsert"" />
  1397. <br />
  1398. Insert Last Name:&nbsp;
  1399. <input name=""FormView1$LNameInsert"" type=""text"" id=""FormView1_LNameInsert"" />
  1400. <a id=""FormView1_InsertButton"" href=""javascript:__doPostBack('FormView1$InsertButton','')"">Insert</a>
  1401. <a id=""FormView1_CancelInsertButton"" href=""javascript:__doPostBack('FormView1$CancelInsertButton','')"">Cancel</a>
  1402. </td>
  1403. </tr>
  1404. </table>
  1405. </div>";
  1406. HtmlDiff.AssertAreEqual (origHtml, newHtml, "InsertPostback");
  1407. //Insert new record
  1408. fr = new FormRequest (t.Response, "form1");
  1409. fr.Controls.Add ("__EVENTTARGET");
  1410. fr.Controls.Add ("__EVENTARGUMENT");
  1411. fr.Controls.Add ("FormView1$IDInsert");
  1412. fr.Controls.Add ("FormView1$FNameInsert");
  1413. fr.Controls.Add ("FormView1$LNameInsert");
  1414. fr.Controls["FormView1$IDInsert"].Value = "33";
  1415. fr.Controls["FormView1$FNameInsert"].Value = "InsertFirstName";
  1416. fr.Controls["FormView1$LNameInsert"].Value ="InsertLastName";
  1417. fr.Controls["__EVENTTARGET"].Value = "FormView1$InsertButton";
  1418. fr.Controls["__EVENTARGUMENT"].Value = "";
  1419. t.Request = fr;
  1420. pageHTML = t.Run ();
  1421. Assert.AreEqual (true, pageHTML.Contains ("1001"), "AfterInsert1");
  1422. Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "AfterInsert2");
  1423. Assert.AreEqual (true, pageHTML.Contains ("Chand"), "AfterInsert3");
  1424. Assert.AreEqual (true, pageHTML.Contains ("Page$4"), "AfterInsert4");
  1425. //Checking that the inserted record appears on page 4.
  1426. fr = new FormRequest (t.Response, "form1");
  1427. fr.Controls.Add ("__EVENTTARGET");
  1428. fr.Controls.Add ("__EVENTARGUMENT");
  1429. fr.Controls["__EVENTTARGET"].Value = "FormView1";
  1430. fr.Controls["__EVENTARGUMENT"].Value = "Page$4";
  1431. t.Request = fr;
  1432. pageHTML = t.Run ();
  1433. Assert.AreEqual (true, pageHTML.Contains ("33"), "AfterInsert1");
  1434. Assert.AreEqual (true, pageHTML.Contains ("InsertLastName"), "AfterInsert2");
  1435. Assert.AreEqual (true, pageHTML.Contains ("InsertFirstName"), "AfterInsert3");
  1436. }
  1437. [Test]
  1438. [Category ("NotWorking")]
  1439. public void FormView_DeleteAndEmptyTemplatePostback ()
  1440. {
  1441. WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");
  1442. string pageHTML = t.Run ();
  1443. //Before Delete
  1444. Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDelete1");
  1445. Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeDelete2");
  1446. Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeDelete3");
  1447. Assert.AreEqual (true, pageHTML.Contains ("Page$3"), "BeforeDelete4");
  1448. //Delete First Item
  1449. FormRequest fr = new FormRequest (t.Response, "form1");
  1450. fr.Controls.Add ("__EVENTTARGET");
  1451. fr.Controls.Add ("__EVENTARGUMENT");
  1452. fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
  1453. fr.Controls["__EVENTARGUMENT"].Value = "";
  1454. t.Request = fr;
  1455. pageHTML = t.Run ();
  1456. Assert.AreEqual (true, pageHTML.Contains ("1002"), "AfterFirstDelete1");
  1457. Assert.AreEqual (true, pageHTML.Contains ("Talmadge"), "AfterFirstDelete2");
  1458. Assert.AreEqual (true, pageHTML.Contains ("Melanie"), "AfterFirstDelete3");
  1459. Assert.AreEqual (true, pageHTML.Contains ("Page$2"), "AfterFirstDelete4");
  1460. Assert.AreEqual (false, pageHTML.Contains ("Page$3"), "AfterFirstDelete5");
  1461. //Delete second item
  1462. fr = new FormRequest (t.Response, "form1");
  1463. fr.Controls.Add ("__EVENTTARGET");
  1464. fr.Controls.Add ("__EVENTARGUMENT");
  1465. fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
  1466. fr.Controls["__EVENTARGUMENT"].Value = "";
  1467. t.Request = fr;
  1468. pageHTML = t.Run ();
  1469. Assert.AreEqual (true, pageHTML.Contains ("1003"), "AfterSecondDelete1");
  1470. Assert.AreEqual (true, pageHTML.Contains ("Bansal"), "AfterSecondDelete2");
  1471. Assert.AreEqual (true, pageHTML.Contains ("Vinay"), "AfterSecondDelete3");
  1472. Assert.AreEqual (false, pageHTML.Contains ("Page$2"), "AfterSecondDelete4");
  1473. //Delete last item and checking that the EmptyDataTemplate appears.
  1474. fr = new FormRequest (t.Response, "form1");
  1475. fr.Controls.Add ("__EVENTTARGET");
  1476. fr.Controls.Add ("__EVENTARGUMENT");
  1477. fr.Controls["__EVENTTARGET"].Value = "FormView1$DeleteButton";
  1478. fr.Controls["__EVENTARGUMENT"].Value = "";
  1479. t.Request = fr;
  1480. pageHTML = t.Run ();
  1481. Assert.AreEqual (true, pageHTML.Contains ("FormView1_Label1"), "EmptyTemplateTest1");
  1482. Assert.AreEqual (true, pageHTML.Contains ("The Database is empty"), "EmptyTemplateTest2");
  1483. }
  1484. }
  1485. public class TestMyData
  1486. {
  1487. static IList<int> str = (IList<int>) new int[] { 1, 2, 3, 4, 5, 6 };
  1488. public static IList<int> GetMyList ()
  1489. {
  1490. return str;
  1491. }
  1492. public static int UpdateList (int index,int value)
  1493. {
  1494. str[index] = value;
  1495. return str[index];
  1496. }
  1497. public static int InsertList (int value)
  1498. {
  1499. str.Add (value);
  1500. return value;
  1501. }
  1502. public static void DeleteList (int value)
  1503. {
  1504. str.Remove (value);
  1505. }
  1506. }
  1507. public class MyTemplate : ITemplate
  1508. {
  1509. Label l = new Label ();
  1510. #region ITemplate Members
  1511. public void InstantiateIn (Control container)
  1512. {
  1513. container.Controls.Add (l);
  1514. }
  1515. public void SetDataItem (object value)
  1516. {
  1517. l.Text = value.ToString ();
  1518. }
  1519. #endregion
  1520. }
  1521. }
  1522. #endif