ae5be387aea3b2b19a345ecb535c2129a9b81755
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / FormViewTest.cs
1 //\r
2 // Tests for System.Web.UI.WebControls.FormView.cs \r
3 //\r
4 // Author:\r
5 //      Chris Toshok (toshok@ximian.com)\r
6 //\r
7 \r
8 //\r
9 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)\r
10 //\r
11 // Permission is hereby granted, free of charge, to any person obtaining\r
12 // a copy of this software and associated documentation files (the\r
13 // "Software"), to deal in the Software without restriction, including\r
14 // without limitation the rights to use, copy, modify, merge, publish,\r
15 // distribute, sublicense, and/or sell copies of the Software, and to\r
16 // permit persons to whom the Software is furnished to do so, subject to\r
17 // the following conditions:\r
18 // \r
19 // The above copyright notice and this permission notice shall be\r
20 // included in all copies or substantial portions of the Software.\r
21 // \r
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
29 //\r
30 \r
31 #if NET_2_0\r
32 \r
33 using NUnit.Framework;\r
34 using System;\r
35 using System.Data;\r
36 using System.IO;\r
37 using System.Drawing;\r
38 using System.Collections;\r
39 using System.Collections.Generic;\r
40 using System.Collections.Specialized;\r
41 using System.Globalization;\r
42 using System.Web;\r
43 using System.Web.UI;\r
44 using System.Web.UI.HtmlControls;\r
45 using System.Web.UI.WebControls;\r
46 using MonoTests.SystemWeb.Framework;\r
47 using MonoTests.stand_alone.WebHarness;\r
48 using System.Text.RegularExpressions;\r
49 using System.Reflection;\r
50 using System.Threading;\r
51 \r
52 \r
53 namespace MonoTests.System.Web.UI.WebControls\r
54 {\r
55         [TestFixture]   \r
56         public class FormViewTest {     \r
57 \r
58                 public class DataSourceObject\r
59                 {\r
60                         public static List<string> GetList (string sortExpression, int startRowIndex, int maximumRows) {\r
61                                 return GetList ();\r
62                         }\r
63 \r
64                         public static List<string> GetList (int startRowIndex, int maximumRows) {\r
65                                 return GetList ();\r
66                         }\r
67 \r
68                         public static List<string> GetList (string sortExpression) {\r
69                                 return GetList ();\r
70                         }\r
71 \r
72                         public static List<string> GetList () {\r
73                                 List<string> list = new List<string> ();\r
74                                 list.Add ("Norway");\r
75                                 list.Add ("Sweden");\r
76                                 list.Add ("France");\r
77                                 list.Add ("Italy");\r
78                                 list.Add ("Israel");\r
79                                 list.Add ("Russia");\r
80                                 return list;\r
81                         }\r
82 \r
83                         public static int GetCount () {\r
84                                 return GetList ().Count;\r
85                         }\r
86                 }\r
87                 \r
88                 public class Poker : FormView {\r
89                         public bool isInitializePager=false;\r
90                         public bool ensureDataBound=false;\r
91                         public bool controlHierarchy=false;\r
92                         bool _onPageIndexChangingCalled = false;\r
93                         bool _onPageIndexChangedCalled = false;\r
94                         \r
95                         public Poker () {                                                               \r
96                                 TrackViewState ();\r
97                         }\r
98 \r
99                         public object SaveState () {\r
100                                 return SaveViewState ();\r
101                         }\r
102 \r
103                         public void LoadState (object state) {\r
104                                 LoadViewState (state);\r
105                                 \r
106                         }\r
107 \r
108                         public HtmlTextWriterTag PokerTagKey\r
109                         {\r
110                                 get { return base.TagKey; }\r
111                         }\r
112                         \r
113                         public  int DoCreateChildControls (IEnumerable source,bool dataBind)\r
114                         {\r
115                                 return CreateChildControls (source, dataBind);\r
116                                 \r
117                         }                       \r
118 \r
119                         public Style DoCreateControlStyle ()\r
120                         {                               \r
121                                 return base.CreateControlStyle (); \r
122                         }\r
123 \r
124                         public DataSourceSelectArguments DoCreateDataSourceSelectArguments ()\r
125                         {\r
126                                 return CreateDataSourceSelectArguments ();\r
127                         }\r
128 \r
129                         public DataSourceView DoGetData ()\r
130                         {\r
131                                 return GetData ();\r
132                         }\r
133 \r
134                         public FormViewRow DoCreateRow (int itemIndex,DataControlRowType rowType,DataControlRowState rowState)\r
135                         {\r
136                                 return CreateRow( itemIndex, rowType,rowState); \r
137                         }\r
138 \r
139                         public Table DoCreateTable ()\r
140                         {\r
141                                 return CreateTable (); \r
142                         }\r
143 \r
144                         protected override void EnsureDataBound ()\r
145                         {\r
146                                 base.EnsureDataBound ();\r
147                                 ensureDataBound = true;\r
148                         }\r
149 \r
150                         public void DoExtractRowValues (IOrderedDictionary filedValues, bool includeKeys)\r
151                         {\r
152                                 base.ExtractRowValues (filedValues, includeKeys);\r
153                                 \r
154                         }\r
155 \r
156                         protected override void InitializePager (FormViewRow row, PagedDataSource pageData)\r
157                         {\r
158                                 base.InitializePager (row, pageData);\r
159                                 isInitializePager = true;\r
160                         }\r
161 \r
162                         public void DoInitializeRow (FormViewRow row)\r
163                         {\r
164                                 InitializeRow (row); \r
165                         }\r
166                         public void DoLoadControlState (object savedState)\r
167                         {\r
168                                 LoadControlState (savedState);  \r
169                         }\r
170 \r
171                         public void DoLoadViewState (object savedState)\r
172                         {\r
173                                 LoadViewState (savedState);  \r
174                         }                       \r
175 \r
176                         public bool DoOnBubbleEvent (object source, EventArgs e)\r
177                         {\r
178                                 return OnBubbleEvent (source, e); \r
179                         }\r
180 \r
181                         public void DoOnInit (EventArgs e)\r
182                         {\r
183                                 OnInit (e); \r
184                         }\r
185 \r
186                         public void DoOnItemCommand (FormViewCommandEventArgs e)\r
187                         {\r
188                                 OnItemCommand (e); \r
189                         }\r
190 \r
191                         public void DoOnItemCreated (EventArgs e)\r
192                         {\r
193                                 OnItemCreated (e); \r
194                         }\r
195 \r
196                         public void DoOnItemDeleted (FormViewDeletedEventArgs e)\r
197                         {\r
198                                 OnItemDeleted (e); \r
199                         }\r
200 \r
201                         public void DoOnItemDeleting (FormViewDeleteEventArgs e)\r
202                         {\r
203                                 OnItemDeleting (e); \r
204                         }\r
205 \r
206                         public void DoOnItemInserted (FormViewInsertedEventArgs e)\r
207                         {\r
208                                 OnItemInserted (e); \r
209                         }\r
210 \r
211                         public void DoOnItemInserting (FormViewInsertEventArgs e)\r
212                         {\r
213                                 OnItemInserting (e);\r
214                         }\r
215 \r
216                         public void DoOnItemUpdated (FormViewUpdatedEventArgs e)\r
217                         {\r
218                                 OnItemUpdated (e); \r
219                         }\r
220 \r
221                         public void DoOnItemUpdating (FormViewUpdateEventArgs e)\r
222                         {\r
223                                 OnItemUpdating (e); \r
224                         }\r
225 \r
226                         public void DoOnModeChanged (EventArgs e )\r
227                         {\r
228                                 OnModeChanged (e); \r
229                         }\r
230 \r
231                         public void DoOnModeChanging (FormViewModeEventArgs  e)\r
232                         {\r
233                                 OnModeChanging (e); \r
234                         }\r
235 \r
236                         public void DoOnPageIndexChanged (EventArgs e)\r
237                         {\r
238                                 OnPageIndexChanged (e); \r
239                         }\r
240 \r
241                         public void DoOnPageIndexChanging (FormViewPageEventArgs e)\r
242                         {\r
243                                 OnPageIndexChanging (e); \r
244                         }\r
245 \r
246                         public void DoPerformDataBinding (IEnumerable data)\r
247                         {\r
248                                 PerformDataBinding (data);\r
249                         }\r
250 \r
251                         protected override void PrepareControlHierarchy ()\r
252                         {\r
253 \r
254                                 base.PrepareControlHierarchy ();\r
255                                 controlHierarchy = true;\r
256                         }\r
257 \r
258                         public void DoRaisePostBackEvent (string eventArgument)\r
259                         {\r
260                                 RaisePostBackEvent (eventArgument); \r
261                         }\r
262                         \r
263                         public string Render ()\r
264                         {\r
265 \r
266                                 StringWriter sw = new StringWriter ();\r
267                                 HtmlTextWriter tw = new HtmlTextWriter (sw);\r
268                                 Render (tw);\r
269                                 return sw.ToString ();\r
270 \r
271                         }\r
272 \r
273 \r
274 \r
275                         public object DoSaveControlState ()\r
276                         {\r
277                                 return SaveControlState (); \r
278                         }\r
279 \r
280 \r
281                         \r
282                         public void DoConfirmInitState ()\r
283                         {\r
284                                 base.ConfirmInitState ();\r
285                         }\r
286         \r
287                         public void DoOnPreRender (EventArgs e)\r
288                         {\r
289                                 base.OnPreRender (e);\r
290                         }\r
291 \r
292                         public void DoOnDataBinding (EventArgs e)\r
293                         {\r
294                                 base.OnDataBinding (e); \r
295                         }\r
296                         public void DoOnDataBound (EventArgs e)\r
297                         {\r
298                                 base.OnDataBound (e); \r
299                         }                       \r
300                         \r
301                         public bool OnPageIndexChangingCalled {\r
302                                 set { _onPageIndexChangingCalled = value; }\r
303                                 get { return _onPageIndexChangingCalled; }\r
304                         }\r
305         \r
306                         public bool OnPageIndexChangedCalled {\r
307                                 set { _onPageIndexChangedCalled = value; }\r
308                                 get { return _onPageIndexChangedCalled; }\r
309                         }\r
310         \r
311                         protected override void OnPageIndexChanging (FormViewPageEventArgs e) {\r
312                                 OnPageIndexChangingCalled = true;\r
313                                 base.OnPageIndexChanging (e);\r
314                         }\r
315         \r
316                         protected override void OnPageIndexChanged (EventArgs e) {\r
317                                 OnPageIndexChangedCalled = true;\r
318                                 base.OnPageIndexChanged (e);\r
319                         }\r
320                 }\r
321                 \r
322                 class Template : ITemplate\r
323                 {\r
324                         bool _instantiated;\r
325                         \r
326                         public bool Instantiated {\r
327                                get { return _instantiated; }\r
328                         }\r
329                         \r
330 #region ITemplate Members\r
331                         \r
332                         public void InstantiateIn (Control container) {\r
333                                _instantiated = true;\r
334                         }\r
335                         \r
336                         #endregion\r
337                 }\r
338                 \r
339 \r
340                 ArrayList myds = new ArrayList ();      \r
341                 [TestFixtureSetUp]\r
342                 public void setup ()\r
343                 {\r
344                         myds.Add ("Item1");\r
345                         myds.Add ("Item2");\r
346                         myds.Add ("Item3");\r
347                         myds.Add ("Item4");\r
348                         myds.Add ("Item5");\r
349                         myds.Add ("Item6");\r
350 #if VISUAL_STUDIO\r
351                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormView.aspx",\r
352                                 "FormView.aspx");\r
353                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewTest1.aspx",\r
354                                 "FormViewTest1.aspx");\r
355                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FormViewInsertEditDelete.aspx",\r
356                                 "FormViewInsertEditDelete.aspx");\r
357 #else\r
358                         WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");\r
359                         WebTest.CopyResource (GetType (), "FormViewTest1.aspx", "FormViewTest1.aspx");\r
360                         WebTest.CopyResource (GetType (), "FormViewInsertEditDelete.aspx", "FormViewInsertEditDelete.aspx");\r
361 #endif\r
362 \r
363                 }\r
364 \r
365                 [Test]\r
366                 public void Defaults ()\r
367                 {\r
368                         Poker p = new Poker ();\r
369                         Assert.IsFalse (p.AllowPaging, "A1");\r
370                         Assert.AreEqual ("", p.BackImageUrl, "A2");\r
371                         Assert.IsNull (p.BottomPagerRow, "A3");\r
372                         Assert.AreEqual ("", p.Caption, "A4");\r
373                         Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A5");\r
374                         Assert.AreEqual (-1, p.CellPadding, "A6");\r
375                         Assert.AreEqual (0, p.CellSpacing, "A7");\r
376                         Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A8");\r
377                         Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A9");\r
378                         Assert.IsNotNull (p.DataKeyNames, "A10");\r
379                         Assert.AreEqual (0, p.DataKeyNames.Length, "A10.1");\r
380                         Assert.IsNotNull (p.DataKey, "A11");\r
381                         Assert.AreEqual (0, p.DataKey.Values.Count, "A11.1");\r
382                         Assert.IsNull (p.EditItemTemplate, "A12");\r
383                         Assert.IsNotNull (p.EditRowStyle, "A13");\r
384                         Assert.IsNotNull (p.EmptyDataRowStyle, "A14");\r
385                         Assert.IsNull (p.EmptyDataTemplate, "A15");\r
386                         Assert.AreEqual ("", p.EmptyDataText, "A16");\r
387                         Assert.IsNull (p.FooterRow, "A17");\r
388                         Assert.IsNull (p.FooterTemplate, "A18");\r
389                         Assert.AreEqual ("", p.FooterText, "A19");\r
390                         Assert.IsNotNull (p.FooterStyle, "A20");\r
391                         Assert.AreEqual (GridLines.None, p.GridLines, "A21");\r
392                         Assert.IsNull (p.HeaderRow, "A22");\r
393                         Assert.IsNotNull (p.HeaderStyle, "A23");\r
394                         Assert.IsNull (p.HeaderTemplate, "A24");\r
395                         Assert.AreEqual ("", p.HeaderText, "A25");\r
396                         Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A26");\r
397                         Assert.IsNull (p.InsertItemTemplate, "A27");\r
398                         Assert.IsNotNull (p.InsertRowStyle, "A28");\r
399                         Assert.IsNull (p.ItemTemplate, "A29");\r
400                         Assert.AreEqual (0, p.PageCount, "A30");\r
401                         Assert.AreEqual (0, p.PageIndex, "A31");\r
402                         Assert.IsNull (p.PagerTemplate, "A32");\r
403                         Assert.IsNull (p.Row, "A33");\r
404                         Assert.IsNotNull (p.RowStyle, "A34");\r
405                         Assert.IsNull (p.SelectedValue, "A35");\r
406                         Assert.IsNull (p.TopPagerRow, "A36");\r
407                         Assert.IsNull (p.DataItem, "A37");\r
408                         Assert.AreEqual (0, p.DataItemCount, "A38");\r
409                         Assert.AreEqual (0, p.DataItemIndex, "A39");\r
410                 }\r
411 \r
412                 [Test]\r
413                 public void FormView_AssignToDefaultProperties ()\r
414                 {\r
415                         Poker p = new Poker ();\r
416                         MyTemplate customTemplate = new MyTemplate ();\r
417                         TableItemStyle tableStyle = new TableItemStyle ();                      \r
418                         p.AllowPaging = true;\r
419                         Assert.AreEqual (true, p.AllowPaging, "A40");\r
420                         p.BackImageUrl = "image.jpg";\r
421                         Assert.AreEqual ("image.jpg", p.BackImageUrl, "A41");\r
422                         // ToDo: p.BottomPagerRow\r
423                         p.Caption = "Employee Details";\r
424                         Assert.AreEqual ("Employee Details", p.Caption, "A42");\r
425                         p.CaptionAlign = TableCaptionAlign.Bottom;\r
426                         Assert.AreEqual (TableCaptionAlign.Bottom, p.CaptionAlign, "A43");\r
427                         p.CaptionAlign = TableCaptionAlign.Left;\r
428                         Assert.AreEqual (TableCaptionAlign.Left, p.CaptionAlign, "A44");\r
429                         p.CaptionAlign = TableCaptionAlign.NotSet;\r
430                         Assert.AreEqual (TableCaptionAlign.NotSet, p.CaptionAlign, "A45");\r
431                         p.CaptionAlign = TableCaptionAlign.Right;\r
432                         Assert.AreEqual (TableCaptionAlign.Right, p.CaptionAlign, "A46");\r
433                         p.CaptionAlign = TableCaptionAlign.Top;\r
434                         Assert.AreEqual (TableCaptionAlign.Top, p.CaptionAlign, "A47");\r
435                         p.CellPadding = 10;\r
436                         Assert.AreEqual (10, p.CellPadding, "A48");\r
437                         p.CellSpacing = 20;\r
438                         Assert.AreEqual (20, p.CellSpacing, "A49");                     \r
439                         Assert.AreEqual (FormViewMode.ReadOnly, p.CurrentMode, "A52");                  \r
440                         p.DefaultMode = FormViewMode.Edit;\r
441                         Assert.AreEqual (FormViewMode.Edit, p.DefaultMode, "A53");\r
442                         p.DefaultMode = FormViewMode.Insert;\r
443                         Assert.AreEqual (FormViewMode.Insert, p.DefaultMode, "A54");\r
444                         p.DefaultMode = FormViewMode.ReadOnly;\r
445                         Assert.AreEqual (FormViewMode.ReadOnly, p.DefaultMode, "A55");\r
446                         p.EditRowStyle.BackColor = Color.Red;\r
447                         Assert.AreEqual (Color.Red, p.EditRowStyle.BackColor, "A56");                   \r
448                         p.EmptyDataRowStyle.ForeColor = Color.Purple;\r
449                         Assert.AreEqual (Color.Purple, p.EmptyDataRowStyle.ForeColor, "A57");\r
450                         p.EmptyDataTemplate = customTemplate;\r
451                         Assert.AreEqual (customTemplate, p.EmptyDataTemplate, "A58");\r
452                         p.EmptyDataText = "No data";\r
453                         Assert.AreEqual ("No data", p.EmptyDataText, "A59");\r
454                         p.EditItemTemplate = customTemplate;\r
455                         Assert.AreEqual (customTemplate, p.EditItemTemplate, "A60");\r
456                         p.FooterTemplate = customTemplate;\r
457                         Assert.AreEqual (customTemplate, p.FooterTemplate, "A61");\r
458                         p.FooterText = "Test Footer";\r
459                         Assert.AreEqual ("Test Footer", p.FooterText, "A62");\r
460                         p.FooterStyle.BorderStyle = BorderStyle.Double;\r
461                         Assert.AreEqual (BorderStyle.Double, p.FooterStyle.BorderStyle, "A63");\r
462                         p.GridLines = GridLines.Both;\r
463                         Assert.AreEqual (GridLines.Both, p.GridLines, "A64");\r
464                         p.GridLines = GridLines.Horizontal;\r
465                         Assert.AreEqual (GridLines.Horizontal, p.GridLines, "A65");\r
466                         p.GridLines = GridLines.None;\r
467                         Assert.AreEqual (GridLines.None, p.GridLines, "A66");\r
468                         p.GridLines = GridLines.Vertical;\r
469                         Assert.AreEqual (GridLines.Vertical, p.GridLines, "A67");\r
470                         p.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;\r
471                         Assert.AreEqual (HorizontalAlign.Left, p.HeaderStyle.HorizontalAlign, "A68");\r
472                         p.HeaderTemplate = customTemplate;\r
473                         Assert.AreEqual (customTemplate, p.HeaderTemplate, "A69");\r
474                         p.HeaderText = "Test Header";\r
475                         Assert.AreEqual ("Test Header", p.HeaderText, "A70");\r
476                         p.HorizontalAlign = HorizontalAlign.Center;\r
477                         Assert.AreEqual (HorizontalAlign.Center, p.HorizontalAlign, "A71");\r
478                         p.HorizontalAlign = HorizontalAlign.Justify;\r
479                         Assert.AreEqual (HorizontalAlign.Justify, p.HorizontalAlign, "A72");\r
480                         p.HorizontalAlign = HorizontalAlign.Left;\r
481                         Assert.AreEqual (HorizontalAlign.Left, p.HorizontalAlign, "A73");\r
482                         p.HorizontalAlign = HorizontalAlign.NotSet;\r
483                         Assert.AreEqual (HorizontalAlign.NotSet, p.HorizontalAlign, "A74");\r
484                         p.HorizontalAlign = HorizontalAlign.Right;\r
485                         Assert.AreEqual (HorizontalAlign.Right, p.HorizontalAlign, "A75");\r
486                         p.InsertItemTemplate = customTemplate;\r
487                         Assert.AreEqual (customTemplate, p.InsertItemTemplate, "A76");\r
488                         p.InsertRowStyle.BorderStyle = BorderStyle.Outset;\r
489                         Assert.AreEqual (BorderStyle.Outset, p.InsertRowStyle.BorderStyle, "A77");\r
490                         p.ItemTemplate = customTemplate;\r
491                         Assert.AreEqual (customTemplate, p.ItemTemplate, "A78");\r
492                         p.PagerSettings.FirstPageText = "PagerSettings Test";\r
493                         Assert.AreEqual ("PagerSettings Test", p.PagerSettings.FirstPageText, "A79");\r
494                         p.PagerStyle.BorderStyle = BorderStyle.Groove;\r
495                         Assert.AreEqual (BorderStyle.Groove, p.PagerStyle.BorderStyle, "A80");\r
496                         p.PagerTemplate = customTemplate;\r
497                         Assert.AreEqual (customTemplate, p.PagerTemplate, "A81");\r
498                         p.RowStyle.ForeColor = Color.Plum;\r
499                         Assert.AreEqual (Color.Plum, p.RowStyle.ForeColor, "A82");\r
500                 }\r
501 \r
502                 [Test]\r
503                 public void FormView_ItemsProperties ()\r
504                 {\r
505                         Poker p = new Poker ();\r
506                         p.Page = new Page ();\r
507                         p.AllowPaging = true;\r
508                         p.DataSource = myds;\r
509                         p.DataBind ();\r
510                         //Assert.AreEqual (typeof (FormViewPagerRow), (p.BottomPagerRow).GetType (), "BottomPagerRow1");\r
511                         Assert.AreEqual (0, p.BottomPagerRow.ItemIndex, "BottomPagerRow2");\r
512                         Assert.AreEqual (DataControlRowType.Pager, p.BottomPagerRow.RowType, "BottomPagerRow2");\r
513                         Assert.AreEqual ("Item1", p.DataItem, "DataItem");\r
514                         Assert.AreEqual (6, p.DataItemCount, "DataItemCount");\r
515                         Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");\r
516                         Assert.AreEqual (0, p.DataItemIndex, "DataItemIndex");\r
517                         string[] str = new string[] { "1", "2", "3", "4", "5", "6" };\r
518                         Assert.AreEqual (typeof (DataKey), p.DataKey.GetType (), "DataKey");\r
519                         p.DataKeyNames = str;\r
520                         Assert.AreEqual (str, p.DataKeyNames, "DataKeyNames");\r
521                         p.ChangeMode (FormViewMode.Edit);\r
522                         Assert.AreEqual (FormViewMode.Edit, p.CurrentMode, "CurrentModeEdit");\r
523                         p.ChangeMode (FormViewMode.Insert);\r
524                         Assert.AreEqual (FormViewMode.Insert, p.CurrentMode, "CurrentModeInsert");\r
525 \r
526                 }\r
527 \r
528                 [Test]\r
529                 public void FormView_DefaultProtectedProperties ()\r
530                 {\r
531                         Poker fv = new Poker ();\r
532                         Assert.AreEqual (HtmlTextWriterTag.Table, fv.PokerTagKey, "TagKey");\r
533                 }\r
534 \r
535                 // Protected methods\r
536 \r
537                 [Test]\r
538                 public void FormView_CreateChildControls ()\r
539                 {\r
540                         Poker fv = new Poker ();\r
541                         fv.DataSource = myds;\r
542                         fv.Page = new Page ();\r
543                         Assert.AreEqual (6, fv.DoCreateChildControls (myds, true), "CreateChildControlFromDS");\r
544                         myds.Add ("item7");\r
545                         Assert.AreEqual (7, fv.DoCreateChildControls (myds, false), "CreateChildControlFromViewState");\r
546                         myds.Remove ("item7");\r
547 \r
548                 }\r
549 \r
550                 [Test]\r
551                 public void FormView_CreateDataSourceSelectArguments ()\r
552                 {\r
553                         //Checks the default DataSourceSelectArgument object returned.\r
554                         Poker fv = new Poker ();\r
555                         DataSourceSelectArguments selectArgs = fv.DoCreateDataSourceSelectArguments ();\r
556                         Assert.AreEqual (0, selectArgs.MaximumRows, "CreateDataSourceSelectArguments1");\r
557                         Assert.AreEqual (false, selectArgs.RetrieveTotalRowCount, "CreateDataSourceSelectArguments2");                                          \r
558 \r
559                 }\r
560 \r
561                 [Test]\r
562                 public void FormView_CreateControlStyle ()\r
563                 {\r
564                         Poker fv = new Poker ();\r
565                         Style s = fv.DoCreateControlStyle ();\r
566                         Assert.AreEqual (typeof (TableStyle), s.GetType (), "CreateControlStyle1");\r
567                         Assert.AreEqual (GridLines.None, ((TableStyle) s).GridLines, "CreateControlStyle2");\r
568                         Assert.AreEqual ("", ((TableStyle) s).BackImageUrl, "CreateControlStyle3");\r
569                         Assert.AreEqual (0, ((TableStyle) s).CellSpacing, "CreateControlStyle4");\r
570                         Assert.AreEqual (-1, ((TableStyle) s).CellPadding, "CreateControlStyle5");\r
571 \r
572                 }\r
573 \r
574                 [Test]\r
575                 public void FormView_InitializeRow ()\r
576                 {\r
577                         //not implemented\r
578                 }\r
579 \r
580                 [Test]\r
581                 public void FormView_InitializePager ()\r
582                 {\r
583                         Poker fv = new Poker ();\r
584                         Page page = new Page ();\r
585                         page.Controls.Add (fv);\r
586                         fv.AllowPaging = true;\r
587                         fv.DataSource = myds;\r
588                         Assert.AreEqual (false, fv.isInitializePager, "BeforeInitializePager");\r
589                         Assert.AreEqual (0, fv.PageCount, "BeforeInitializePagerPageCount");\r
590                         fv.DataBind ();\r
591                         Assert.AreEqual (true, fv.isInitializePager, "AfterInitializePager");\r
592                         Assert.AreEqual (6, fv.PageCount, "AfterInitializePagerPageCount");\r
593                 }\r
594                 \r
595                 [Test]\r
596                 public void FormView_CreateRow ()\r
597                 {\r
598                         Poker fv = new Poker ();\r
599                         fv.AllowPaging =true;\r
600                         fv.DataSource = myds;\r
601                         fv.Page = new Page ();\r
602                         fv.DataBind ();\r
603                         FormViewRow row = fv.DoCreateRow (2,DataControlRowType.DataRow ,DataControlRowState.Normal );\r
604                         Assert.AreEqual (2, row.ItemIndex, "CreatedRowItemIndex1");\r
605                         Assert.AreEqual (DataControlRowState.Normal , row.RowState, "CreatedRowState1");\r
606                         Assert.AreEqual (DataControlRowType.DataRow , row.RowType, "CreatedRowType1");                   \r
607                         row = fv.DoCreateRow (4, DataControlRowType.Footer, DataControlRowState.Edit);\r
608                         Assert.AreEqual (4, row.ItemIndex, "CreatedRowItemIndex2");\r
609                         Assert.AreEqual (DataControlRowState.Edit , row.RowState, "CreatedRowState2");\r
610                         Assert.AreEqual (DataControlRowType.Footer , row.RowType, "CreatedRowType2");\r
611                         //FormViewPagerRow pagerRow = (FormViewPagerRow)fv.DoCreateRow (3, DataControlRowType.Pager , DataControlRowState.Insert);\r
612                         //Assert.AreEqual (3, pagerRow.ItemIndex, "CreatedPageRowItemIndex");\r
613                         //Assert.AreEqual (DataControlRowState.Insert, pagerRow.RowState, "CreatedPageRowState");\r
614                         //Assert.AreEqual (DataControlRowType.Pager, pagerRow.RowType, "CreatedPageRowType");                    \r
615                         \r
616                 }\r
617 \r
618                 [Test]\r
619                 public void FormView_CreateTable ()\r
620                 {\r
621                         Poker fv = new Poker ();\r
622                         Table tb = fv.DoCreateTable ();\r
623                         fv.Page = new Page ();\r
624                         Assert.AreEqual ("", tb.BackImageUrl , "CreateTable1");\r
625                         Assert.AreEqual (0, tb.Rows.Count, "CreateTable2");\r
626                         fv.DataSource = myds;\r
627                         fv.DataBind ();                 \r
628                         fv.ID = "TestFormView";\r
629                         tb = fv.DoCreateTable ();\r
630                         Assert.AreEqual (-1, tb.CellPadding , "CreateTable3");                  \r
631 \r
632                 }\r
633 \r
634                 [Test]\r
635                 public void FormView_EnsureDataBound ()\r
636                 {\r
637                         Poker fv = new Poker ();                        \r
638                         fv.DataSource = myds;                   \r
639                         fv.DoOnPreRender (EventArgs.Empty);\r
640                         Assert.AreEqual (true, fv.ensureDataBound, "EnsureDataBound");\r
641                         \r
642                 }\r
643 \r
644                 [Test]\r
645                 public void FormView_PerformDataBinding ()\r
646                 {\r
647                         Poker fv = new Poker ();\r
648                         fv.Page = new Page ();\r
649                         Assert.AreEqual (0,fv.DataItemCount, "BeforePerformDataBinding"); \r
650                         fv.DoPerformDataBinding (myds);\r
651                         Assert.AreEqual (6, fv.DataItemCount, "AfterPerformDataBinding"); \r
652                 }\r
653 \r
654                 [Test]\r
655                 public void FormView_ExtractRowValues ()\r
656                 {\r
657                         Poker fv=new Poker ();\r
658                         fv.ItemTemplate = new MyTemplate ();\r
659                         fv.DataKeyNames = new string[] { "ID", "FName", "LName" };\r
660                         //IOrderedDictionary dict = (IOrderedDictionary) new OrderedDictionary (0x19);\r
661                         //fv.DoExtractRowValues (dict, true);                   \r
662                         //DataTable ds = CreateDataTable ();\r
663                         //fv.DataSource = ds;\r
664                         //fv.DataBind ();\r
665                         //OrderedDictionary fieldsValues = new OrderedDictionary ();\r
666                         //fv.DoExtractRowValues (fieldsValues, true);\r
667                         //Assert.AreEqual (3, fieldsValues.Count, "ExtractRowValues1");\r
668                         //Assert.AreEqual (3, fieldsValues.Keys.Count, "ExtractRowValues2");\r
669                         //Assert.AreEqual (3, fieldsValues.Values.Count, "ExtractRowValues3");\r
670                         //Assert.AreEqual (true, fieldsValues.Contains ("ID"), "ExtractRowValues4");\r
671                         //IDictionaryEnumerator enumerator = fieldsValues.GetEnumerator ();\r
672                         //enumerator.MoveNext ();\r
673                         //Assert.AreEqual ("ID", enumerator.Key, "FieldValue1");\r
674                         //Assert.AreEqual ("1001", enumerator.Value, "FieldValue2");\r
675                         //enumerator.MoveNext ();\r
676                         //Assert.AreEqual ("FName", enumerator.Key, "FieldValue3");\r
677                         //Assert.AreEqual ("Mahesh", enumerator.Value, "FieldValue4");\r
678                         //enumerator.MoveNext ();\r
679                         //Assert.AreEqual ("LName", enumerator.Key, "FieldValue5");\r
680                         //Assert.AreEqual ("Chand", enumerator.Value, "FieldValue6");           \r
681   \r
682                 }\r
683 \r
684                 [Test]\r
685                 public void FormView_PrepareControlHierarcy ()\r
686                 {\r
687                         Poker fv = new Poker ();\r
688                         fv.Page = new Page ();\r
689                         fv.controlHierarchy = false;\r
690                         fv.Render ();\r
691                         Assert.AreEqual (0, fv.Controls.Count, "ControlHierarchy1");\r
692                         Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy2");\r
693                         fv.AllowPaging = true;\r
694                         fv.DataSource = myds;\r
695                         fv.DataBind ();\r
696                         fv.controlHierarchy = false;\r
697                         fv.Render ();\r
698                         Assert.AreEqual (1, fv.Controls.Count, "ControlHierarchy3");\r
699                         Assert.AreEqual (true, fv.controlHierarchy, "ControlHierarchy4");\r
700 \r
701 \r
702                 }\r
703 \r
704                 //Public Methods\r
705 \r
706                 [Test]\r
707                 public void FormView_ChangeMode ()\r
708                 {\r
709                         Poker fv = new Poker ();\r
710                         Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeDefault");\r
711                         fv.ChangeMode (FormViewMode.Insert);\r
712                         Assert.AreEqual (FormViewMode.Insert, fv.CurrentMode, "ChangeModeInsert");\r
713                         fv.ChangeMode (FormViewMode.Edit);\r
714                         Assert.AreEqual (FormViewMode.Edit, fv.CurrentMode, "ChangeModeEdit");\r
715                         fv.ChangeMode (FormViewMode.ReadOnly);\r
716                         Assert.AreEqual (FormViewMode.ReadOnly, fv.CurrentMode, "ChangeModeReadOnly");\r
717                 }\r
718 \r
719                 [Test]\r
720                 public void FormView_PageCount () {\r
721                         Page p = new Page ();\r
722 \r
723                         Poker fv = new Poker ();\r
724                         p.Controls.Add (fv);\r
725 \r
726                         ObjectDataSource data = new ObjectDataSource ();\r
727                         data.TypeName = typeof (FormViewDataObject).AssemblyQualifiedName;\r
728                         data.SelectMethod = "Select";\r
729                         p.Controls.Add (data);\r
730 \r
731                         fv.DataSource = data;\r
732 \r
733                         Assert.AreEqual (0, fv.PageCount, "PageCount before binding");\r
734 \r
735                         fv.DataBind ();\r
736                         \r
737                         Assert.AreEqual (3, fv.PageCount, "PageCount after binding");\r
738                 }\r
739 \r
740                 [Test]\r
741                 public void FormView_DataKey ()\r
742                 {\r
743                         Page p = new Page ();\r
744 \r
745                         Poker fv = new Poker ();\r
746                         p.Controls.Add (fv);\r
747 \r
748                         ObjectDataSource data = new ObjectDataSource ();\r
749                         data.TypeName = typeof (FormViewDataObject).AssemblyQualifiedName;\r
750                         data.SelectMethod = "Select";\r
751                         p.Controls.Add (data);\r
752 \r
753                         fv.DataSource = data;\r
754                         fv.DataKeyNames = new string [] { "ID", "FName" };\r
755 \r
756                         DataKey key1 = fv.DataKey;\r
757 \r
758                         Assert.AreEqual (null, key1.Value, "DataKey.Value before binding");\r
759                         Assert.AreEqual (0, key1.Values.Count, "DataKey.Values count before binding");\r
760 \r
761                         fv.DataBind ();\r
762 \r
763                         DataKey key2 = fv.DataKey;\r
764                         DataKey key3 = fv.DataKey;\r
765 \r
766                         Assert.IsFalse (Object.ReferenceEquals (key1, key2), "DataKey returns the same instans");\r
767                         Assert.IsTrue (Object.ReferenceEquals (key2, key3), "DataKey returns the same instans");\r
768                         \r
769                         Assert.AreEqual (1001, key1.Value, "DataKey.Value after binding");\r
770                         Assert.AreEqual (2, key1.Values.Count, "DataKey.Values count after binding");\r
771                         Assert.AreEqual (1001, key1.Values [0], "DataKey.Values[0] after binding");\r
772                         Assert.AreEqual ("Mahesh", key1.Values [1], "DataKey.Values[1] after binding");\r
773 \r
774                         Poker copy = new Poker ();\r
775                         object state = fv.DoSaveControlState ();\r
776                         copy.DoLoadControlState (state);\r
777 \r
778                         DataKey key4 = copy.DataKey;\r
779 \r
780                         Assert.AreEqual (1001, key4.Value, "DataKey.Value from ViewState");\r
781                         Assert.AreEqual (2, key4.Values.Count, "DataKey.Values count from ViewState");\r
782                         Assert.AreEqual (1001, key4.Values [0], "DataKey.Values[0] from ViewState");\r
783                         Assert.AreEqual ("Mahesh", key4.Values [1], "DataKey.Values[1] from ViewState");\r
784                 }\r
785 \r
786                 [Test]\r
787                 public void FormView_DataBind ()\r
788                 {\r
789                         Poker fv = new Poker ();\r
790                         fv.AllowPaging = true;\r
791                         fv.DataSource = myds;\r
792                         fv.Page = new Page ();\r
793                         Assert.AreEqual (0, fv.PageCount, "BeforeDataBind1");\r
794                         Assert.AreEqual (null, fv.DataItem, "BeforeDataBind2");\r
795                         fv.DataBind ();\r
796                         Assert.AreEqual (6, fv.PageCount, "AfterDataBind1");\r
797                         Assert.AreEqual (6, fv.DataItemCount, "AfterDataBind2");\r
798                         Assert.AreEqual ("Item1", fv.DataItem, "AfterDataBind3");\r
799                 }\r
800 \r
801                 private bool isDeleted = false;\r
802 \r
803                 [Test]\r
804                 public void FormView_DeleteItem ()\r
805                 {\r
806                         Poker fv = new Poker ();\r
807                         fv.Page = new Page ();\r
808                         fv.DataSource = myds;\r
809                         fv.DataBind ();\r
810                         Assert.AreEqual (false, isDeleted, "BeforeDeleteItem");\r
811                         fv.ItemDeleting += new FormViewDeleteEventHandler (fv_DeleteingHandler);\r
812                         fv.DeleteItem ();\r
813                         Assert.AreEqual (true, isDeleted, "BeforeDeleteItem");\r
814 \r
815                 }\r
816 \r
817                 public void fv_DeleteingHandler (Object sender, FormViewDeleteEventArgs e)\r
818                 {\r
819                         isDeleted = true;\r
820                 }\r
821 \r
822                 private bool insertItem = false;\r
823 \r
824                 [Test]\r
825                 public void FormView_InsertItem ()\r
826                 {\r
827                         Poker fv = new Poker ();\r
828                         fv.Page = new Page ();\r
829                         fv.ChangeMode (FormViewMode.Insert);\r
830                         fv.ItemInserting += new FormViewInsertEventHandler (insert_item);\r
831                         Assert.AreEqual (false, insertItem, "BeforeInsertItem");\r
832                         fv.InsertItem (false);\r
833                         Assert.AreEqual (true, insertItem, "AfterInsertItem");\r
834 \r
835                 }\r
836 \r
837                 public void insert_item (object sender, FormViewInsertEventArgs e)\r
838                 {\r
839                         insertItem = true;\r
840                 }\r
841 \r
842                 private bool updateItem = false;\r
843                 [Test]\r
844                 public void FormView_UpdateItem ()\r
845                 {\r
846                         Poker fv = new Poker ();\r
847                         fv.Page = new Page ();\r
848                         fv.DataSource = myds;\r
849                         fv.DataBind ();\r
850                         fv.ChangeMode (FormViewMode.Edit);\r
851                         fv.ItemUpdating += new FormViewUpdateEventHandler (update_item);\r
852                         Assert.AreEqual (false, updateItem, "BeforeUpdateItem");\r
853                         fv.UpdateItem (false);\r
854                         Assert.AreEqual (true, updateItem, "AfterUpdateItem");\r
855 \r
856                 }\r
857 \r
858                 public void update_item (object sender, FormViewUpdateEventArgs e)\r
859                 {\r
860                         updateItem = true;\r
861                 }\r
862 \r
863                 [Test]\r
864                 public void FormView_IsBindableType ()\r
865                 {\r
866                         bool isBindable = false;\r
867                         Poker fv = new Poker ();\r
868                         isBindable = fv.IsBindableType (typeof (Decimal));\r
869                         Assert.AreEqual (true, isBindable, "IsBindableTypeDecimal");\r
870                         isBindable = fv.IsBindableType (typeof (Int32));\r
871                         Assert.AreEqual (true, isBindable, "IsBindableTypeInt32");\r
872                         isBindable = fv.IsBindableType (typeof (String));\r
873                         Assert.AreEqual (true, isBindable, "IsBindableTypeString");\r
874                         isBindable = fv.IsBindableType (typeof (Boolean));\r
875                         Assert.AreEqual (true, isBindable, "IsBindableTypeBoolean");\r
876                         isBindable = fv.IsBindableType (typeof (DateTime));\r
877                         Assert.AreEqual (true, isBindable, "IsBindableTypeDateTime");\r
878                         isBindable = fv.IsBindableType (typeof (Byte));\r
879                         Assert.AreEqual (true, isBindable, "IsBindableTypeByte");\r
880                         isBindable = fv.IsBindableType (typeof (Guid));\r
881                         Assert.AreEqual (true, isBindable, "IsBindableTypeGuid");\r
882                         isBindable = fv.IsBindableType (typeof (MyTemplate));\r
883                         Assert.AreEqual (false, isBindable, "IsBindableTypeMyTemplate");\r
884                 }\r
885 \r
886                 [Test]\r
887                 public void FormView_ControlState ()            {\r
888 \r
889                         Poker fv = new Poker ();\r
890                         Poker copy = new Poker ();\r
891                         string[] keys = new String[2];\r
892                         keys[0] = "key1";\r
893                         keys[1] = "key2";\r
894                         fv.DataKeyNames = keys;\r
895                         fv.BackImageUrl = "photo.jpg";                  \r
896                         fv.DefaultMode  = FormViewMode.Insert  ;\r
897                         fv.ChangeMode (FormViewMode.Edit);\r
898                         object state = fv.DoSaveControlState ();\r
899                         copy.DoLoadControlState (state);\r
900                         Assert.AreEqual (2, copy.DataKeyNames.Length, "DataKeyNames.Length");\r
901                         Assert.AreEqual ("key1", copy.DataKeyNames[0], "ControlStateDataKeyValue");\r
902                         Assert.AreEqual ("key2", copy.DataKeyNames[1], "ControlStateDataKeyValue2");                    \r
903                         Assert.AreEqual (FormViewMode.Insert, copy.DefaultMode, "ControlStateDefaultMode");\r
904                         Assert.AreEqual (FormViewMode.Edit, copy.CurrentMode, "ControlStateCurrentMode");\r
905 \r
906                 }\r
907 \r
908                 //ViewState\r
909                 [Test]\r
910                 public void FormView_ViewState ()\r
911                 {\r
912                         Poker fv = new Poker ();\r
913                         Poker copy = new Poker ();\r
914                         fv.AllowPaging = true;\r
915                         fv.HeaderText = "Testing";\r
916                         fv.CssClass = "style.css";\r
917                         object state = fv.SaveState ();\r
918                         copy.LoadState (state);\r
919                         Assert.AreEqual (true, copy.AllowPaging, "ViewStateAllowPaging");\r
920                         Assert.AreEqual ("Testing", copy.HeaderText, "ViewStateHeaderText");\r
921                         Assert.AreEqual ("style.css", copy.CssClass, "ViewStateCssClass");\r
922                 }\r
923 \r
924                 //Events \r
925                 private bool init;\r
926                 private bool itemCommand;\r
927                 private bool itemCreated;\r
928                 private bool itemDeleted;\r
929                 private bool itemDeleting;\r
930                 private bool itemInserted;\r
931                 private bool itemInserting;\r
932                 private bool itemUpdated;\r
933                 private bool itemUpdating;\r
934                 private bool modeChanged;\r
935                 private bool modeChanging;\r
936                 private bool pageIndexChanged;\r
937                 private bool pageIndexChanging;\r
938                 private int newPageIndex;\r
939 \r
940                 public void ResetEvents ()\r
941                 {\r
942                         init = false;\r
943                         itemCommand = false;\r
944                         itemCreated = false;\r
945                         itemDeleted = false;\r
946                         itemDeleting = false;\r
947                         itemInserted = false;\r
948                         itemInserting = false;\r
949                         itemUpdated = false;\r
950                         itemUpdating = false;\r
951                         modeChanged = false;\r
952                         modeChanging = false;\r
953                         pageIndexChanged = false;\r
954                         pageIndexChanging = false;\r
955                 }\r
956 \r
957                 [Test]\r
958                 public void FormView_BubbleEvent ()\r
959                 {\r
960                         FormViewCommandEventArgs com;\r
961                         Poker fv = new Poker ();\r
962                         Page page = new Page ();\r
963                         Button bt = new Button ();\r
964                         fv.AllowPaging = true;\r
965                         fv.DataSource = myds;\r
966                         page.Controls.Add (fv);\r
967                         fv.DataBind ();\r
968                         ResetEvents ();\r
969                         fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);\r
970                         fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);\r
971                         //Delete\r
972                         fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);\r
973                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Delete", null));\r
974                         Assert.AreEqual (false, itemDeleting, "BeforeDeleteCommandBubbleEvent");\r
975                         Assert.AreEqual (false, itemCommand, "BeforeDeleteBubbleEvent");\r
976                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Delete");\r
977                         Assert.AreEqual (true, itemDeleting, "AfterDeleteBubbleEvent");\r
978                         Assert.AreEqual (true, itemCommand, "AfterDeleteCommandBubbleEvent");\r
979 \r
980 \r
981                         //Insert\r
982                         itemCommand = false;\r
983                         fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);\r
984                         fv.ChangeMode (FormViewMode.Insert);\r
985                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Insert", null));\r
986                         Assert.AreEqual (false, itemCommand, "BeforeInsertCommandBubbleEvent");\r
987                         Assert.AreEqual (false, itemInserting, "BeforeInsertBubbleEvent");\r
988                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Insert");\r
989                         Assert.AreEqual (true, itemCommand, "AfterInsertCommandBubbleEvent");\r
990                         Assert.AreEqual (true, itemInserting, "AfterInsertBubbleEvent");\r
991 \r
992 \r
993                         //Update\r
994                         itemCommand = false;\r
995                         fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);\r
996                         fv.ChangeMode (FormViewMode.Edit);\r
997                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Update", null));\r
998                         Assert.AreEqual (false, itemUpdating, "BeforeUpdateEvent");\r
999                         Assert.AreEqual (false, itemCommand, "BeforeUpdateCommandEvent");\r
1000                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Update");\r
1001                         Assert.AreEqual (true, itemCommand, "AfterUpdateCommandBubbleEvent");\r
1002                         Assert.AreEqual (true, itemUpdating, "AfterUpdateBubbleEvent");\r
1003 \r
1004 \r
1005                         //Cancel \r
1006                         itemCommand = false;\r
1007                         fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);\r
1008                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Cancel", null));\r
1009                         Assert.AreEqual (false, itemCommand, "BeforeCancelCommandBubbleEvent");\r
1010                         Assert.AreEqual (false, modeChanging, "BeforeCancelBubbleEvent");\r
1011                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Cancel");\r
1012                         Assert.AreEqual (true, itemCommand, "AfterCancelCommandBubbleEvent");\r
1013                         Assert.AreEqual (true, modeChanging, "AfterCancelBubbleEvent");\r
1014 \r
1015                         //Edit\r
1016                         itemCommand = false;\r
1017                         modeChanging = false;\r
1018                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Edit", null));\r
1019                         Assert.AreEqual (false, itemCommand, "BeforeEditCommandBubbleEvent");\r
1020                         Assert.AreEqual (false, modeChanging, "BeforeEditBubbleEvent");\r
1021                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Edit");\r
1022                         Assert.AreEqual (true, itemCommand, "AfterEditCommandBubbleEvent");\r
1023                         Assert.AreEqual (true, modeChanging, "AfterEditBubbleEvent");\r
1024 \r
1025                         //New\r
1026                         itemCommand = false;\r
1027                         modeChanging = false;\r
1028                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("New", null));\r
1029                         Assert.AreEqual (false, itemCommand, "BeforeNewCommandBubbleEvent");\r
1030                         Assert.AreEqual (false, modeChanging, "BeforeNewBubbleEvent");\r
1031                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - New");\r
1032                         Assert.AreEqual (true, itemCommand, "AfterNewCommandBubbleEvent");\r
1033                         Assert.AreEqual (true, modeChanging, "AfterNewBubbleEvent");\r
1034 \r
1035                         //Page Index default\r
1036                         itemCommand = false;\r
1037                         fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);\r
1038                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", null));\r
1039                         Assert.AreEqual (false, itemCommand, "BeforePageCommandBubbleEvent");\r
1040                         Assert.AreEqual (false, pageIndexChanging, "BeforePageBubbleEvent");\r
1041                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Page Index default");\r
1042                         Assert.AreEqual (true, itemCommand, "AfterPageCommandBubbleEvent");\r
1043                         Assert.AreEqual (true, pageIndexChanging, "AfterPageBubbleEvent");\r
1044                         Assert.AreEqual (-1, newPageIndex, "PageIndex");\r
1045 \r
1046                         //Next Page\r
1047                         itemCommand = false;\r
1048                         pageIndexChanging = false;\r
1049                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Next"));\r
1050                         Assert.AreEqual (false, itemCommand, "BeforeNextPageCommandBubbleEvent");\r
1051                         Assert.AreEqual (false, pageIndexChanging, "BeforeNextPageBubbleEvent");\r
1052                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Next Page");\r
1053                         Assert.AreEqual (true, itemCommand, "AfterNextPageCommandBubbleEvent");\r
1054                         Assert.AreEqual (true, pageIndexChanging, "AfterNextPageBubbleEvent");\r
1055                         Assert.AreEqual (1, newPageIndex, "NextPageIndex");\r
1056 \r
1057                         //Prev Page\r
1058                         itemCommand = false;\r
1059                         pageIndexChanging = false;\r
1060                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Prev"));\r
1061                         Assert.AreEqual (false, itemCommand, "BeforePrevPageCommandBubbleEvent");\r
1062                         Assert.AreEqual (false, pageIndexChanging, "BeforePrevPageBubbleEvent");\r
1063                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Prev Page");\r
1064                         Assert.AreEqual (true, itemCommand, "AfterPrevPageCommandBubbleEvent");\r
1065                         Assert.AreEqual (true, pageIndexChanging, "AfterPrevPageBubbleEvent");\r
1066                         Assert.AreEqual (-1, newPageIndex, "PrevPageIndex");\r
1067 \r
1068                         //First Page\r
1069                         itemCommand = false;\r
1070                         pageIndexChanging = false;\r
1071                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "First"));\r
1072                         Assert.AreEqual (false, itemCommand, "BeforeFirstPageCommandBubbleEvent");\r
1073                         Assert.AreEqual (false, pageIndexChanging, "BeforeFirstPageBubbleEvent");\r
1074                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - First Page");\r
1075                         Assert.AreEqual (true, itemCommand, "AfterFirstPageCommandBubbleEvent");\r
1076                         Assert.AreEqual (true, pageIndexChanging, "AfterFirstPageBubbleEvent");\r
1077                         Assert.AreEqual (0, newPageIndex, "FirstPageIndex");\r
1078 \r
1079                         //Last Page\r
1080                         itemCommand = false;\r
1081                         pageIndexChanging = false;\r
1082                         com = new FormViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Last"));\r
1083                         Assert.AreEqual (false, itemCommand, "BeforeLastPageCommandBubbleEvent");\r
1084                         Assert.AreEqual (false, pageIndexChanging, "BeforeLastPageBubbleEvent");\r
1085                         Assert.IsTrue (fv.DoOnBubbleEvent (bt, com), "OnBubbleEvent - Last Page");\r
1086                         Assert.AreEqual (true, itemCommand, "AfterLastPageCommandBubbleEvent");\r
1087                         Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");\r
1088                         Assert.AreEqual (5, newPageIndex, "FirstPageIndex");\r
1089 \r
1090                 }\r
1091 \r
1092 \r
1093                 [Test]\r
1094                 public void FormView_Events ()\r
1095                 {\r
1096                         ResetEvents ();\r
1097                         Poker fv = new Poker ();\r
1098                         fv.Page = new Page ();\r
1099                         fv.Init += new EventHandler (fv_Init);\r
1100                         fv.ItemCommand += new FormViewCommandEventHandler (fv_ItemCommand);\r
1101                         fv.ItemCreated += new EventHandler (fv_ItemCreated);\r
1102                         fv.ItemDeleted += new FormViewDeletedEventHandler (fv_ItemDeleted);\r
1103                         fv.ItemDeleting += new FormViewDeleteEventHandler (fv_ItemDeleting);\r
1104                         fv.ItemInserted += new FormViewInsertedEventHandler (fv_ItemInserted);\r
1105                         fv.ItemInserting += new FormViewInsertEventHandler (fv_ItemInserting);\r
1106                         fv.ItemUpdated += new FormViewUpdatedEventHandler (fv_ItemUpdated);\r
1107                         fv.ItemUpdating += new FormViewUpdateEventHandler (fv_ItemUpdating);\r
1108                         fv.ModeChanged += new EventHandler (fv_ModeChanged);\r
1109                         fv.ModeChanging += new FormViewModeEventHandler (fv_ModeChanging);\r
1110                         fv.PageIndexChanged += new EventHandler (fv_PageIndexChanged);\r
1111                         fv.PageIndexChanging += new FormViewPageEventHandler (fv_PageIndexChanging);\r
1112 \r
1113                         Assert.AreEqual (false, init, "BeforeInit");\r
1114                         fv.DoOnInit (new EventArgs ());\r
1115                         Assert.AreEqual (true, init, "AfterInit");\r
1116                         Assert.AreEqual (false, itemCommand, "BeforeItemCommandEvent");\r
1117                         Button bt = new Button ();\r
1118                         fv.DoOnItemCommand (new FormViewCommandEventArgs (bt, new CommandEventArgs ("", null)));\r
1119                         Assert.AreEqual (true, itemCommand, "AfterItemCommandEvent");\r
1120                         Assert.AreEqual (false, itemCreated, "BeforeItemCreatedEvent");\r
1121                         fv.DoOnItemCreated (new EventArgs ());\r
1122                         Assert.AreEqual (true, itemCreated, "AfterItemCreatedEvent");\r
1123                         Assert.AreEqual (false, itemDeleted, "BeforeItemDeletedEvent");\r
1124                         fv.DoOnItemDeleted (new FormViewDeletedEventArgs (3, new Exception ()));\r
1125                         Assert.AreEqual (true, itemDeleted, "AfterItemDeletedEvent");\r
1126                         Assert.AreEqual (false, itemDeleting, "BeforeItemDeletingEvent");\r
1127                         fv.DoOnItemDeleting (new FormViewDeleteEventArgs (1));\r
1128                         Assert.AreEqual (true, itemDeleting, "AfterItemDeletingEvent");\r
1129                         Assert.AreEqual (false, itemInserted, "BeforeItemInsertedEvent");\r
1130                         fv.DoOnItemInserted (new FormViewInsertedEventArgs (2, new Exception ()));\r
1131                         Assert.AreEqual (true, itemInserted, "AfterItemInsetedEvent");\r
1132                         Assert.AreEqual (false, itemInserting, "BeforeItemInsertingEvent");\r
1133                         fv.DoOnItemInserting (new FormViewInsertEventArgs (bt));\r
1134                         Assert.AreEqual (true, itemInserting, "AfterItemInsetingEvent");\r
1135                         Assert.AreEqual (false, itemUpdated, "BeforeItemUpdatedEvent");\r
1136                         fv.DoOnItemUpdated (new FormViewUpdatedEventArgs (1, new Exception ()));\r
1137                         Assert.AreEqual (true, itemUpdated, "AfterItemUpdatedEvent");\r
1138                         Assert.AreEqual (false, itemUpdating, "BeforeItemUpdatingEvent");\r
1139                         fv.DoOnItemUpdating (new FormViewUpdateEventArgs (bt));\r
1140                         Assert.AreEqual (true, itemUpdating, "AfterItemUpdatingEvent");\r
1141                         Assert.AreEqual (false, modeChanged, "BeforeModeChangedEvent");\r
1142                         fv.DoOnModeChanged (new EventArgs ());\r
1143                         Assert.AreEqual (true, modeChanged, "AfterModeChangedEvent");\r
1144                         Assert.AreEqual (false, modeChanging, "BeforeModeChangingEvent");\r
1145                         fv.DoOnModeChanging (new FormViewModeEventArgs (FormViewMode.Edit, true));\r
1146                         Assert.AreEqual (true, modeChanging, "AfterModeChangingEvent");\r
1147                         Assert.AreEqual (false, pageIndexChanged, "BeforePageIndexChangedEvent");\r
1148                         fv.DoOnPageIndexChanged (new EventArgs ());\r
1149                         Assert.AreEqual (true, pageIndexChanged, "AfterPageIndexChangedEvent");\r
1150                         Assert.AreEqual (false, pageIndexChanging, "BeforePageIndexChangingEvent");\r
1151                         fv.DoOnPageIndexChanging (new FormViewPageEventArgs (1));\r
1152                         Assert.AreEqual (true, pageIndexChanging, "AfterPageIndexChangingEvent");\r
1153                 }\r
1154                 private void fv_Init (object sender, EventArgs e)\r
1155                 {\r
1156                         init = true;\r
1157                 }\r
1158 \r
1159                 private void fv_ItemCommand (object sender, FormViewCommandEventArgs e)\r
1160                 {\r
1161                         itemCommand = true;\r
1162                 }\r
1163 \r
1164                 private void fv_ItemCreated (object sender, EventArgs e)\r
1165                 {\r
1166                         itemCreated = true;\r
1167                 }\r
1168 \r
1169                 private void fv_ItemDeleted (object sender, FormViewDeletedEventArgs e)\r
1170                 {\r
1171                         itemDeleted = true;\r
1172                 }\r
1173 \r
1174                 private void fv_ItemDeleting (object sender, FormViewDeleteEventArgs e)\r
1175                 {\r
1176                         itemDeleting = true;\r
1177                 }\r
1178 \r
1179                 private void fv_ItemInserted (object sender, FormViewInsertedEventArgs e)\r
1180                 {\r
1181                         itemInserted = true;\r
1182                 }\r
1183 \r
1184                 private void fv_ItemInserting (object sender, FormViewInsertEventArgs e)\r
1185                 {\r
1186                         itemInserting = true;\r
1187                 }\r
1188 \r
1189                 private void fv_ItemUpdated (object sender, FormViewUpdatedEventArgs e)\r
1190                 {\r
1191                         itemUpdated = true;\r
1192                 }\r
1193 \r
1194                 private void fv_ItemUpdating (object sender, FormViewUpdateEventArgs e)\r
1195                 {\r
1196                         itemUpdating = true;\r
1197                 }\r
1198 \r
1199                 private void fv_ModeChanged (object sender, EventArgs e)\r
1200                 {\r
1201                         modeChanged = true;\r
1202                 }\r
1203 \r
1204                 private void fv_ModeChanging (object sender, FormViewModeEventArgs e)\r
1205                 {\r
1206                         modeChanging = true;\r
1207                 }\r
1208 \r
1209                 private void fv_PageIndexChanged (object sender, EventArgs e)\r
1210                 {\r
1211                         pageIndexChanged = true;\r
1212                 }\r
1213                 private void fv_PageIndexChanging (object sender, FormViewPageEventArgs e)\r
1214                 {\r
1215                         pageIndexChanging = true;\r
1216                         newPageIndex = e.NewPageIndex;\r
1217                         e.NewPageIndex = -1;\r
1218                 }\r
1219 \r
1220                 //Exceptions            \r
1221                 [Test]\r
1222                 [ExpectedException (typeof (ArgumentOutOfRangeException))]\r
1223                 public void CellPaddingException ()\r
1224                 {\r
1225                        Poker p = new Poker ();\r
1226                         p.CellPadding = -2;\r
1227                 }\r
1228 \r
1229                 [Test]\r
1230                 [ExpectedException (typeof (ArgumentOutOfRangeException))]\r
1231                 public void CellSpacingException ()\r
1232                 {\r
1233                         Poker p = new Poker ();\r
1234                         p.CellSpacing = -5;\r
1235                 }\r
1236 \r
1237                 [Test]\r
1238                 [ExpectedException (typeof (ArgumentOutOfRangeException))]\r
1239                 public void PageIndexException ()\r
1240                 {\r
1241                         Poker p = new Poker ();\r
1242                         p.PageIndex = -5;\r
1243                 }\r
1244 \r
1245                 [Test]\r
1246                 [ExpectedException (typeof (HttpException))]\r
1247                 public void InsertItemException ()\r
1248                 {\r
1249                         Poker p = new Poker ();\r
1250                         p.InsertItem (true); \r
1251                 }\r
1252 \r
1253                 [Test]\r
1254                 [ExpectedException (typeof (HttpException))]\r
1255                 public void UpdateItemException ()\r
1256                 {\r
1257                         Poker p = new Poker ();\r
1258                         p.UpdateItem (true);\r
1259                 }\r
1260 \r
1261                 \r
1262                 [Test]\r
1263                 [Category ("NotDotNet")] //TODO\r
1264                 public void PageIndex ()\r
1265                 {\r
1266                         ObjectDataSource ds = new ObjectDataSource ();\r
1267                         ds.ID = "ObjectDataSource1";\r
1268                         ds.TypeName = "System.Guid";\r
1269                         ds.SelectMethod = "ToByteArray";                        \r
1270                         Page p = new Page ();\r
1271                         Poker f = new Poker ();\r
1272                         f.Page = p;\r
1273                         ds.Page = p;\r
1274                         p.Controls.Add (f);\r
1275                         p.Controls.Add (ds);\r
1276                         f.DataSourceID = "ObjectDataSource1";\r
1277                         f.DoConfirmInitState ();\r
1278                         f.DoOnPreRender (EventArgs.Empty);\r
1279                         object cur = f.DataItem;\r
1280                         f.PageIndex = 1;\r
1281                         Assert.IsTrue (cur != f.DataItem, "#01");\r
1282 \r
1283 CommandEventArgs cargs = new CommandEventArgs ("Page", "Prev");\r
1284                         FormViewCommandEventArgs fvargs = new FormViewCommandEventArgs (f, cargs);\r
1285                         f.DoOnBubbleEvent (f, fvargs);\r
1286                         Assert.IsTrue (f.OnPageIndexChangingCalled, "#02");\r
1287                         Assert.IsTrue (f.OnPageIndexChangedCalled, "#03");\r
1288                         f.OnPageIndexChangingCalled = false;\r
1289                         f.OnPageIndexChangedCalled = false;\r
1290 \r
1291                         f.DoOnBubbleEvent (f, fvargs);\r
1292                         Assert.IsTrue (f.OnPageIndexChangingCalled, "#04");\r
1293                         Assert.IsFalse (f.OnPageIndexChangedCalled, "#05");\r
1294                         f.OnPageIndexChangingCalled = false;\r
1295                         f.OnPageIndexChangedCalled = false;\r
1296 \r
1297                         f.PageIndex = f.PageCount - 1;\r
1298                         cargs = new CommandEventArgs ("Page", "Next");\r
1299                         fvargs = new FormViewCommandEventArgs (f, cargs);\r
1300                         f.DoOnBubbleEvent (f, fvargs);\r
1301                         Assert.IsTrue (f.OnPageIndexChangingCalled, "#06");\r
1302                         Assert.IsFalse (f.OnPageIndexChangedCalled, "#07");\r
1303                         f.OnPageIndexChangingCalled = false;\r
1304                         f.OnPageIndexChangedCalled = false;\r
1305                 }\r
1306                 \r
1307                 [Test]\r
1308                 public void PageCount ()\r
1309                 {\r
1310                         ObjectDataSource ds = new ObjectDataSource ();\r
1311                         ds.ID = "ObjectDataSource1";\r
1312                         ds.TypeName = "System.Guid";\r
1313                         ds.SelectMethod = "ToByteArray";\r
1314                         Page p = new Page ();\r
1315                         Poker f = new Poker ();\r
1316                         f.Page = p;\r
1317                         ds.Page = p;\r
1318                         p.Controls.Add (f);\r
1319                         p.Controls.Add (ds);\r
1320                         f.DataSourceID = "ObjectDataSource1";\r
1321                         f.DoConfirmInitState ();\r
1322                         f.DoOnPreRender (EventArgs.Empty);\r
1323                         f.PageIndex = 1;\r
1324                         Assert.AreEqual (16, f.PageCount, "#01");\r
1325                 } \r
1326                 \r
1327                 [Test]\r
1328                 public void InsertTemplate () {\r
1329                         ObjectDataSource ds = new ObjectDataSource ();\r
1330                         ds.ID = "ObjectDataSource1";\r
1331                         ds.TypeName = "System.Collections.ArrayList";\r
1332                         ds.SelectMethod = "ToArray";\r
1333                         Page p = new Page ();\r
1334                         Poker f = new Poker ();\r
1335                         Template itemTemplate = new Template ();\r
1336                         Template emptyTemplate = new Template ();\r
1337                         Template insertTemplate = new Template ();\r
1338                         f.ItemTemplate = itemTemplate;\r
1339                         f.EmptyDataTemplate = emptyTemplate;\r
1340                         f.InsertItemTemplate = insertTemplate;\r
1341                         f.DefaultMode = FormViewMode.Insert;\r
1342                         f.Page = p;\r
1343                         ds.Page = p;\r
1344                         p.Controls.Add (f);\r
1345                         p.Controls.Add (ds);\r
1346                         f.DataSourceID = "ObjectDataSource1";\r
1347                         f.DoConfirmInitState ();\r
1348                         f.DoOnPreRender (EventArgs.Empty);\r
1349                         \r
1350                         f.AllowPaging = true;\r
1351                         Assert.IsFalse(itemTemplate.Instantiated, "#01");\r
1352                         Assert.IsFalse(emptyTemplate.Instantiated, "#02");\r
1353                         Assert.IsTrue(insertTemplate.Instantiated, "#03");\r
1354                 }\r
1355                 \r
1356                 [TestFixtureTearDown]\r
1357                 public void TearDown ()\r
1358                 {\r
1359                         Thread.Sleep (100);\r
1360                         //WebTest.Unload ();\r
1361                 }\r
1362         \r
1363                 //[TestFixtureStartUp]\r
1364                 //public void StartUp ()\r
1365                 //{\r
1366                 //      WebTest.CopyResource (GetType (), "FormView.aspx", "FormView.aspx");\r
1367                 //}\r
1368 \r
1369                 [Test]\r
1370                 [Category("NunitWeb")]\r
1371                 public void FormViewCssClass ()\r
1372                 {\r
1373                         string res = new WebTest ("FormView.aspx").Run ();\r
1374                         Assert.IsTrue (Regex.IsMatch (\r
1375                                 res, ".*<table[^>]*class=\"[^\"]*test1[^\"]*\"[^>]*>.*",\r
1376                                 RegexOptions.IgnoreCase|RegexOptions.Singleline),\r
1377                                 "check that <table class=\"test1\"> is found. Actual: "+res);\r
1378                         Assert.IsFalse (Regex.IsMatch (\r
1379                                 res, ".*<table[^>]*class=\"\"[^>]*>.*",\r
1380                                 RegexOptions.IgnoreCase|RegexOptions.Singleline),\r
1381                                 "check that <table class=\"\"> is not found. Actual: "+res);\r
1382                 }\r
1383 \r
1384 \r
1385 \r
1386 \r
1387                 [Test]\r
1388                 public void FormView_RenderSimpleTemplate()\r
1389                 {\r
1390                         string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();                    \r
1391                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test1") + 5, RenderedPageHtml.IndexOf ("test2") - RenderedPageHtml.IndexOf ("test1") - 5);                 \r
1392                         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;"">\r
1393                                                 <tr style=""color:#8C4510;background-color:#FFF7E7;"">\r
1394                                                 <td colspan=""2"">\r
1395                                                  <span id=""FormView1_Label1"">1</span>\r
1396                                                  </td>\r
1397                                                 </tr><tr align=""center"" style=""color:#8C4510;"">\r
1398                                                 <td colspan=""2""><table border=""0"">\r
1399                                                 <tr>\r
1400                                                 <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>\r
1401                                                 </tr>\r
1402                                                 </table></td>\r
1403                                                 </tr>\r
1404                                                 </table>";         \r
1405         \r
1406                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderSimpleTemplate");                  \r
1407 \r
1408                 }\r
1409 \r
1410                 [Test]\r
1411                 public void FormView_RenderFooterAndPager()\r
1412                 {\r
1413                         string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();                    \r
1414                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test2") + 5, RenderedPageHtml.IndexOf ("test3") - RenderedPageHtml.IndexOf ("test2") - 5);\r
1415                         string origHtmlValue = @" <table cellspacing=""0"" cellpadding=""4"" border=""0"" id=""FormView2"" style=""color:#333333;border-collapse:collapse;"">\r
1416                                                 <tr style=""color:#333333;background-color:#F7F6F3;"">\r
1417                                                 <td colspan=""2"">\r
1418                                                  <span id=""FormView2_Label2"">1</span>\r
1419                                                  </td>\r
1420                                                 </tr><tr style=""color:White;background-color:#5D7B9D;font-weight:bold;"">\r
1421                                                 <td colspan=""2"">\r
1422                                                 <span id=""FormView2_Label3"">Footer Template Test</span>\r
1423                                                  </td>\r
1424                                                 </tr><tr align=""center"" style=""color:White;background-color:#284775;"">\r
1425                                                 <td colspan=""2"">\r
1426                                                 <input type=""submit"" name=""FormView2$ctl01$Button1"" value=""Prev Item"" id=""FormView2_ctl01_Button1"" />\r
1427                                                 <input type=""submit"" name=""FormView2$ctl01$Button2"" value=""Next Item"" id=""FormView2_ctl01_Button2"" />\r
1428                                                  <input type=""submit"" name=""FormView2$ctl01$Button3"" value=""First Item"" id=""FormView2_ctl01_Button3"" />\r
1429                                                  <input type=""submit"" name=""FormView2$ctl01$Button4"" value=""Last Item"" id=""FormView2_ctl01_Button4"" />\r
1430                                                  </td>\r
1431                                                 </tr>\r
1432                                                 </table>    \r
1433                                                 </div>";    \r
1434                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "FormView_RenderFooterAndPager");\r
1435                 }\r
1436 \r
1437                 [Test]\r
1438                 [Category ("NunitWeb")]\r
1439                 public void FormView_RenderWithHeader()\r
1440                 {\r
1441                         string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();\r
1442                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test4") + 5, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("test4") - 5);\r
1443                         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;"">\r
1444                                                 <tr align=""left"" style=""color:White;background-color:#006699;font-weight:bold;"">\r
1445                                                 <td colspan=""2"">Using Header Text property</td>\r
1446                                                 </tr><tr align=""center"" style=""color:#000066;background-color:Maroon;"">\r
1447                                                 <td colspan=""2"">Using Footer Text property</td>\r
1448                                                 </tr><tr align=""left"" style=""color:#000066;background-color:LightGrey;"">\r
1449                                                 <td colspan=""2"">\r
1450                                                 <a id=""FormView4_ctl01_LinkButton1"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton1','')"">Next</a>\r
1451                                                  <a id=""FormView4_ctl01_LinkButton2"" href=""javascript:__doPostBack('FormView4$ctl01$LinkButton2','')"">Prev</a>\r
1452                                                 <span id=""FormView4_ctl01_Label7"">Page Index: 0</span>\r
1453                                                 </td>\r
1454                                                 </tr>\r
1455                                                 </table>";                      \r
1456                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");\r
1457                 }\r
1458 \r
1459 \r
1460                 [Test]\r
1461                 [Category ("NunitWeb")]\r
1462                 public void FormView_Render ()\r
1463                 {\r
1464                         string RenderedPageHtml = new WebTest ("FormViewTest1.aspx").Run ();\r
1465                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test3") + 5, RenderedPageHtml.IndexOf ("test4") - RenderedPageHtml.IndexOf ("test3") - 5);\r
1466                         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;"">\r
1467                                 <tr align=""center"" valign=""top"" style=""color:#C00000;background-color:Tan;font-weight:bold;"">\r
1468                                 <td colspan=""2"">\r
1469                                 <span id=""FormView3_Label5"">Header Template Test</span>\r
1470                                 </td>\r
1471                                 </tr><tr>\r
1472                                 <td colspan=""2"">\r
1473                                 <span id=""FormView3_Label4"">1</span>\r
1474                                 </td>\r
1475                                 </tr><tr align=""center"" style=""color:DarkSlateBlue;background-color:PaleGoldenrod;"">\r
1476                                 <td colspan=""2""><table border=""0"">\r
1477                                 <tr>\r
1478                                 <td><span>1</span></td><td>\r
1479                                 <a href=""javascript:__doPostBack('FormView3','Page$2')"" style=""color:DarkSlateBlue;"">2</a></td><td>\r
1480                                 <a href=""javascript:__doPostBack('FormView3','Page$3')"" style=""color:DarkSlateBlue;"">3</a></td><td>\r
1481                                 <a href=""javascript:__doPostBack('FormView3','Page$4')"" style=""color:DarkSlateBlue;"">4</a></td><td>\r
1482                                 <a href=""javascript:__doPostBack('FormView3','Page$5')"" style=""color:DarkSlateBlue;"">5</a></td><td>\r
1483                                 <a href=""javascript:__doPostBack('FormView3','Page$6')"" style=""color:DarkSlateBlue;"">6</a></td>\r
1484                                 </tr><tr align=""right"" style=""color:#FFC0FF;background-color:Tan;"">\r
1485                                 <td colspan=""2"">\r
1486                                 <span id=""FormView3_Label6"">FormView Footer</span>\r
1487                                 </td>\r
1488                                 </tr>\r
1489                                 </table></td>\r
1490                                 </tr>\r
1491                                 </table>";        \r
1492                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderingDefaultPaging");\r
1493                 }\r
1494                 \r
1495 \r
1496                 [Test]\r
1497                 [Category ("NotDotNet")] // becaue Naming container: use "FormView1$....." for DotNet\r
1498                 public void FormView_EditPostback ()\r
1499                 {\r
1500                         WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");\r
1501                         string pageHTML = t.Run ();\r
1502                         string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);\r
1503                         string origHtml = @" <div> \r
1504                                         &nbsp;\r
1505                                         <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">\r
1506                                         <tr>\r
1507                                         <td colspan=""2"">\r
1508                                         <span id=""FormView1_ID"">1001</span>&nbsp;\r
1509                                          <span id=""FormView1_LName"">Chand</span>                \r
1510                                          <span id=""FormView1_FName"">Mahesh</span>&nbsp;\r
1511                                         <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>\r
1512                                          <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>\r
1513                                         <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>\r
1514                                         </td>\r
1515                                         </tr><tr>\r
1516                                         <td colspan=""2""><table border=""0"">\r
1517                                         <tr>\r
1518                                         <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>\r
1519                                         </tr>\r
1520                                         </table></td>\r
1521                                         </tr>\r
1522                                         </table>     \r
1523                                          </div>";\r
1524                         HtmlDiff.AssertAreEqual (origHtml, newHtml, "BeforeEditPostback");\r
1525 \r
1526                         //Edit button postback (change to edit mode - buttons "Update" and "Cancel" should appear.\r
1527                         \r
1528                         FormRequest fr = new FormRequest (t.Response, "form1");\r
1529                         fr.Controls.Add ("__EVENTTARGET");\r
1530                         fr.Controls.Add ("__EVENTARGUMENT");\r
1531                         fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";\r
1532                         fr.Controls["__EVENTARGUMENT"].Value = "";\r
1533                         t.Request = fr;\r
1534                         pageHTML = t.Run ();\r
1535                         newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);\r
1536                         origHtml = @" <div>\r
1537                                         &nbsp;\r
1538                                         <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">\r
1539                                         <tr>\r
1540                                         <td colspan=""2"">                \r
1541                                          Enter First Name:<input name=""FormView1$FNameEdit"" type=""text"" value=""Mahesh"" id=""FormView1_FNameEdit"" /><br />\r
1542                                          Enter Last Name:<input name=""FormView1$LNameEdit"" type=""text"" value=""Chand"" id=""FormView1_LNameEdit"" /><br />\r
1543                                          <a id=""FormView1_UpdateButton"" href=""javascript:__doPostBack('FormView1$UpdateButton','')"">Update</a>\r
1544                                         <a id=""FormView1_CancelUpdateButton"" href=""javascript:__doPostBack('FormView1$CancelUpdateButton','')"">Cancel</a>\r
1545                                          </td>\r
1546                                         </tr><tr>\r
1547                                         <td colspan=""2""><table border=""0"">\r
1548                                         <tr>\r
1549                                         <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>\r
1550                                         </tr>\r
1551                                         </table></td>\r
1552                                         </tr>\r
1553                                         </table>    \r
1554                                         </div>";\r
1555                         HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterEditPostback");\r
1556 \r
1557                         //Update record postback                \r
1558                         \r
1559                         fr = new FormRequest (t.Response, "form1");\r
1560                         fr.Controls.Add ("__EVENTTARGET");\r
1561                         fr.Controls.Add ("__EVENTARGUMENT");\r
1562                         fr.Controls.Add ("FormView1:FNameEdit");\r
1563                         fr.Controls.Add ("FormView1:LNameEdit");\r
1564                         fr.Controls["__EVENTTARGET"].Value = "FormView1:UpdateButton";\r
1565                         fr.Controls["__EVENTARGUMENT"].Value = "";                      \r
1566                         fr.Controls["FormView1:FNameEdit"].Value = "Merav";\r
1567                         fr.Controls["FormView1:LNameEdit"].Value = "Test";                      \r
1568                         t.Request = fr;\r
1569                         pageHTML = t.Run ();\r
1570                         newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);\r
1571                         origHtml=@"  <div>\r
1572                                 &nbsp;\r
1573                                  <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">\r
1574                                 <tr>\r
1575                                 <td colspan=""2"">\r
1576                                 <span id=""FormView1_ID"">1001</span>&nbsp;\r
1577                                  <span id=""FormView1_LName"">Test</span>                \r
1578                                 <span id=""FormView1_FName"">Merav</span>&nbsp;\r
1579                                 <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>\r
1580                                 <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>\r
1581                                 <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>\r
1582                                 </td>\r
1583                                 </tr><tr>\r
1584                                 <td colspan=""2""><table border=""0"">\r
1585                                 <tr>\r
1586                                 <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>\r
1587                                 </tr>\r
1588                                 </table></td>\r
1589                                 </tr>\r
1590                                 </table>     \r
1591                                 </div>";\r
1592                         HtmlDiff.AssertAreEqual (origHtml, newHtml, "AfterUpdatePostback"); \r
1593   \r
1594                         //Postback to return to Edit mode\r
1595                         fr = new FormRequest (t.Response, "form1");\r
1596                         fr.Controls.Add ("__EVENTTARGET");\r
1597                         fr.Controls.Add ("__EVENTARGUMENT");\r
1598                         fr.Controls["__EVENTTARGET"].Value = "FormView1:EditButton";\r
1599                         fr.Controls["__EVENTARGUMENT"].Value = "";                      \r
1600                         t.Request = fr;\r
1601                         pageHTML = t.Run ();\r
1602                         newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);\r
1603                         Assert.AreEqual (true, pageHTML.Contains ("Merav"), "EditModePostback1");\r
1604                         Assert.AreEqual (true, pageHTML.Contains ("CancelUpdateButton"), "EditModePostback2"); \r
1605 \r
1606                         // Cancel edited record postback\r
1607                         fr = new FormRequest (t.Response, "form1");\r
1608                         fr.Controls.Add ("__EVENTTARGET");\r
1609                         fr.Controls.Add ("__EVENTARGUMENT");\r
1610                         fr.Controls.Add ("FormView1:FNameEdit");\r
1611                         fr.Controls.Add ("FormView1:LNameEdit");\r
1612                         fr.Controls["FormView1:FNameEdit"].Value = "EditFirstName";\r
1613                         fr.Controls["FormView1:LNameEdit"].Value = "EditLastName";\r
1614                         fr.Controls["__EVENTTARGET"].Value = "FormView1:CancelUpdateButton";\r
1615                         fr.Controls["__EVENTARGUMENT"].Value = "";\r
1616                         t.Request = fr;\r
1617                         pageHTML = t.Run ();\r
1618                         newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);\r
1619                         origHtml = @" <div>\r
1620                                         &nbsp;\r
1621                                          <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">\r
1622                                         <tr>\r
1623                                         <td colspan=""2"">\r
1624                                         <span id=""FormView1_ID"">1001</span>&nbsp;\r
1625                                         <span id=""FormView1_LName"">Test</span>                \r
1626                                         <span id=""FormView1_FName"">Merav</span>&nbsp;\r
1627                                          <a id=""FormView1_EditButton"" href=""javascript:__doPostBack('FormView1$EditButton','')"">Edit</a>\r
1628                                         <a id=""FormView1_NewButton"" href=""javascript:__doPostBack('FormView1$NewButton','')"">New</a>\r
1629                                          <a id=""FormView1_DeleteButton"" href=""javascript:__doPostBack('FormView1$DeleteButton','')"">Delete</a>\r
1630                                          </td>\r
1631                                         </tr><tr>\r
1632                                         <td colspan=""2""><table border=""0"">\r
1633                                         <tr>\r
1634                                         <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>\r
1635                                         </tr>\r
1636                                         </table></td>\r
1637                                         </tr>\r
1638                                         </table>     \r
1639                                         </div>";\r
1640                         HtmlDiff.AssertAreEqual (origHtml, newHtml, "CancelEditedRecordPostback");   \r
1641                         \r
1642                 }\r
1643 \r
1644                 [Test]\r
1645                 [Category ("NotDotNet")] // becaue Naming container: use "FormView1$....." for DotNet\r
1646                 public void FormView_InsertPostback ()\r
1647                 {\r
1648                         WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");\r
1649                         string pageHTML = t.Run ();\r
1650                         Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeInsert1");\r
1651                         Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeInsert2");\r
1652                         Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeInsert3");\r
1653                         Assert.AreEqual (false, pageHTML.Contains ("Page$4"), "BeforeInsert4");\r
1654                         FormRequest fr = new FormRequest (t.Response, "form1"); \r
1655                         fr.Controls.Add ("__EVENTTARGET");\r
1656                         fr.Controls.Add ("__EVENTARGUMENT");                    \r
1657                         fr.Controls["__EVENTTARGET"].Value = "FormView1:NewButton";\r
1658                         fr.Controls["__EVENTARGUMENT"].Value = "";                                              \r
1659                         t.Request = fr;\r
1660                         pageHTML = t.Run ();\r
1661                         string newHtml = pageHTML.Substring (pageHTML.IndexOf ("start") + 5, pageHTML.IndexOf ("end") - pageHTML.IndexOf ("start") - 5);\r
1662                         string origHtml = @" <div>\r
1663                         &nbsp;\r
1664                         <table cellspacing=""0"" border=""0"" id=""FormView1"" style=""border-collapse:collapse;"">\r
1665                         <tr>\r
1666                         <td colspan=""2"">\r
1667                         Insert ID:\r
1668                          <input name=""FormView1$IDInsert"" type=""text"" id=""FormView1_IDInsert"" /><br />\r
1669                         Insert First Name:\r
1670                          <input name=""FormView1$FNameInsert"" type=""text"" id=""FormView1_FNameInsert"" />\r
1671                         <br />\r
1672                         Insert Last Name:&nbsp;\r
1673                          <input name=""FormView1$LNameInsert"" type=""text"" id=""FormView1_LNameInsert"" />\r
1674                         <a id=""FormView1_InsertButton"" href=""javascript:__doPostBack('FormView1$InsertButton','')"">Insert</a>\r
1675                         <a id=""FormView1_CancelInsertButton"" href=""javascript:__doPostBack('FormView1$CancelInsertButton','')"">Cancel</a>\r
1676                         </td>\r
1677                         </tr>\r
1678                         </table>   \r
1679                          </div>";\r
1680                         HtmlDiff.AssertAreEqual (origHtml, newHtml, "InsertPostback");\r
1681 \r
1682                         //Insert new record\r
1683 \r
1684                         fr = new FormRequest (t.Response, "form1");\r
1685                         fr.Controls.Add ("__EVENTTARGET");\r
1686                         fr.Controls.Add ("__EVENTARGUMENT");\r
1687                         fr.Controls.Add ("FormView1:IDInsert");\r
1688                         fr.Controls.Add ("FormView1:FNameInsert");\r
1689                         fr.Controls.Add ("FormView1:LNameInsert");\r
1690                         fr.Controls["FormView1:IDInsert"].Value = "33";\r
1691                         fr.Controls["FormView1:FNameInsert"].Value = "InsertFirstName";\r
1692                         fr.Controls["FormView1:LNameInsert"].Value ="InsertLastName";\r
1693                         fr.Controls["__EVENTTARGET"].Value = "FormView1:InsertButton";\r
1694                         fr.Controls["__EVENTARGUMENT"].Value = "";\r
1695                         t.Request = fr;\r
1696                         pageHTML = t.Run ();                    \r
1697                         Assert.AreEqual (true, pageHTML.Contains ("1001"), "AfterInsert1");\r
1698                         Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "AfterInsert2");\r
1699                         Assert.AreEqual (true, pageHTML.Contains ("Chand"), "AfterInsert3");\r
1700                         Assert.AreEqual (true, pageHTML.Contains ("Page$4"), "AfterInsert4");\r
1701 \r
1702                         //Checking that the inserted record appears on page 4.\r
1703 \r
1704                         fr = new FormRequest (t.Response, "form1");\r
1705                         fr.Controls.Add ("__EVENTTARGET");\r
1706                         fr.Controls.Add ("__EVENTARGUMENT");                    \r
1707                         fr.Controls["__EVENTTARGET"].Value = "FormView1";\r
1708                         fr.Controls["__EVENTARGUMENT"].Value = "Page$4";\r
1709                         t.Request = fr;\r
1710                         pageHTML = t.Run ();\r
1711                         Assert.AreEqual (true, pageHTML.Contains ("33"), "AfterInsert1");\r
1712                         Assert.AreEqual (true, pageHTML.Contains ("InsertLastName"), "AfterInsert2");\r
1713                         Assert.AreEqual (true, pageHTML.Contains ("InsertFirstName"), "AfterInsert3");\r
1714                         \r
1715                 }               \r
1716 \r
1717                 [Test]\r
1718                 [Category ("NotDotNet")] // becaue Naming container: use "FormView1$DeleteButton" for DotNet\r
1719                 public void FormView_DeleteAndEmptyTemplatePostback ()\r
1720                 {\r
1721                         WebTest t = new WebTest ("FormViewInsertEditDelete.aspx");\r
1722                         string pageHTML = t.Run ();\r
1723                         //Before Delete\r
1724                         Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDelete1");\r
1725                         Assert.AreEqual (true, pageHTML.Contains ("Mahesh"), "BeforeDelete2");\r
1726                         Assert.AreEqual (true, pageHTML.Contains ("Chand"), "BeforeDelete3");\r
1727                         Assert.AreEqual (true, pageHTML.Contains ("Page$3"), "BeforeDelete4");  \r
1728                         //Delete First Item\r
1729                         FormRequest fr = new FormRequest (t.Response, "form1");\r
1730                         fr.Controls.Add ("__EVENTTARGET");\r
1731                         fr.Controls.Add ("__EVENTARGUMENT");\r
1732                         fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";\r
1733                         fr.Controls["__EVENTARGUMENT"].Value = "";\r
1734                         t.Request = fr;\r
1735                         pageHTML = t.Run ();                    \r
1736                         Assert.AreEqual (true, pageHTML.Contains ("1002"), "AfterFirstDelete1");\r
1737                         Assert.AreEqual (true, pageHTML.Contains ("Talmadge"), "AfterFirstDelete2");\r
1738                         Assert.AreEqual (true, pageHTML.Contains ("Melanie"), "AfterFirstDelete3");\r
1739                         Assert.AreEqual (true, pageHTML.Contains ("Page$2"), "AfterFirstDelete4");\r
1740                         Assert.AreEqual (false, pageHTML.Contains ("Page$3"), "AfterFirstDelete5");\r
1741 \r
1742                         //Delete second item\r
1743 \r
1744                         fr = new FormRequest (t.Response, "form1");\r
1745                         fr.Controls.Add ("__EVENTTARGET");\r
1746                         fr.Controls.Add ("__EVENTARGUMENT");\r
1747                         fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";\r
1748                         fr.Controls["__EVENTARGUMENT"].Value = "";\r
1749                         t.Request = fr;\r
1750                         pageHTML = t.Run ();\r
1751                         Assert.AreEqual (true, pageHTML.Contains ("1003"), "AfterSecondDelete1");\r
1752                         Assert.AreEqual (true, pageHTML.Contains ("Bansal"), "AfterSecondDelete2");\r
1753                         Assert.AreEqual (true, pageHTML.Contains ("Vinay"), "AfterSecondDelete3");\r
1754                         Assert.AreEqual (false, pageHTML.Contains ("Page$2"), "AfterSecondDelete4");    \r
1755 \r
1756                         //Delete last item and checking that the EmptyDataTemplate appears.\r
1757 \r
1758                         fr = new FormRequest (t.Response, "form1");\r
1759                         fr.Controls.Add ("__EVENTTARGET");\r
1760                         fr.Controls.Add ("__EVENTARGUMENT");\r
1761                         fr.Controls["__EVENTTARGET"].Value = "FormView1:DeleteButton";\r
1762                         fr.Controls["__EVENTARGUMENT"].Value = "";\r
1763                         t.Request = fr;\r
1764                         pageHTML = t.Run ();                    \r
1765                         Assert.AreEqual (true, pageHTML.Contains ("FormView1_Label1"), "EmptyTemplateTest1"); \r
1766                         Assert.AreEqual (true, pageHTML.Contains ("The Database is empty"), "EmptyTemplateTest2");\r
1767                 }\r
1768 \r
1769                 [Test]\r
1770                 public void FormView_CurrentMode () {\r
1771                         FormView view = new FormView ();\r
1772                         view.DefaultMode = FormViewMode.Insert;\r
1773                         Assert.AreEqual (FormViewMode.Insert, view.CurrentMode, "FormView_CurrentMode#1");\r
1774                         view.ChangeMode (FormViewMode.Edit);\r
1775                         Assert.AreEqual (FormViewMode.Edit, view.CurrentMode, "FormView_CurrentMode#2");\r
1776                 }\r
1777 \r
1778                 [Test]\r
1779                 public void FormView_CreateDataSourceSelectArguments2 () {\r
1780                         DataSourceView view;\r
1781                         Page p = new Page ();\r
1782 \r
1783                         Poker dv = new Poker ();\r
1784                         p.Controls.Add (dv);\r
1785 \r
1786                         ObjectDataSource data = new ObjectDataSource ();\r
1787                         data.TypeName = typeof (DataSourceObject).AssemblyQualifiedName;\r
1788                         data.SelectMethod = "GetList";\r
1789                         data.SortParameterName = "sortExpression";\r
1790                         DataSourceSelectArguments arg;\r
1791                         p.Controls.Add (data);\r
1792 \r
1793                         dv.DataSource = data;\r
1794                         dv.DataBind ();\r
1795 \r
1796                         arg = dv.DoCreateDataSourceSelectArguments ();\r
1797                         Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "Default");\r
1798 \r
1799                         dv.AllowPaging = true;\r
1800                         dv.PageIndex = 2;\r
1801                         arg = dv.DoCreateDataSourceSelectArguments ();\r
1802                         view = dv.DoGetData ();\r
1803                         Assert.IsFalse (view.CanPage);\r
1804                         Assert.IsTrue (view.CanRetrieveTotalRowCount);\r
1805                         Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = true, CanPage = false, CanRetrieveTotalRowCount = true");\r
1806 \r
1807                         // make DataSourceView.CanPage = true\r
1808                         data.EnablePaging = true;\r
1809 \r
1810                         arg = dv.DoCreateDataSourceSelectArguments ();\r
1811                         view = dv.DoGetData ();\r
1812                         Assert.IsTrue (view.CanPage);\r
1813                         Assert.IsFalse (view.CanRetrieveTotalRowCount);\r
1814                         Assert.IsTrue (arg.Equals (new DataSourceSelectArguments (2, -1)), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = false");\r
1815 \r
1816                         dv.AllowPaging = false;\r
1817                         arg = dv.DoCreateDataSourceSelectArguments ();\r
1818                         Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = false");\r
1819 \r
1820                         // make DataSourceView.CanRetrieveTotalRowCount = true\r
1821                         data.SelectCountMethod = "GetCount";\r
1822 \r
1823                         arg = dv.DoCreateDataSourceSelectArguments ();\r
1824                         Assert.IsTrue (arg.Equals (DataSourceSelectArguments.Empty), "AllowPaging = false, CanPage = true, CanRetrieveTotalRowCount = true");\r
1825 \r
1826                         dv.AllowPaging = true;\r
1827                         arg = dv.DoCreateDataSourceSelectArguments ();\r
1828                         DataSourceSelectArguments arg1 = new DataSourceSelectArguments (2, 1);\r
1829                         arg1.RetrieveTotalRowCount = true;\r
1830                         view = dv.DoGetData ();\r
1831                         Assert.IsTrue (view.CanPage);\r
1832                         Assert.IsTrue (view.CanRetrieveTotalRowCount);\r
1833                         Assert.IsTrue (arg.Equals (arg1), "AllowPaging = true, CanPage = true, CanRetrieveTotalRowCount = true");\r
1834                 }\r
1835 \r
1836                 [Test]\r
1837                 public void FormView_GetPostBackOptions () {\r
1838                         FormView fv = new FormView ();\r
1839                         fv.Page = new Page ();\r
1840                         IButtonControl btn = new Button ();\r
1841                         btn.CausesValidation = false;\r
1842                         Assert.IsFalse (btn.CausesValidation);\r
1843                         Assert.AreEqual (String.Empty, btn.CommandName);\r
1844                         Assert.AreEqual (String.Empty, btn.CommandArgument);\r
1845                         Assert.AreEqual (String.Empty, btn.PostBackUrl);\r
1846                         Assert.AreEqual (String.Empty, btn.ValidationGroup);\r
1847                         PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (btn);\r
1848                         Assert.IsFalse (options.PerformValidation);\r
1849                         Assert.IsFalse (options.AutoPostBack);\r
1850                         Assert.IsFalse (options.TrackFocus);\r
1851                         Assert.IsTrue (options.ClientSubmit);\r
1852                         Assert.IsTrue (options.RequiresJavaScriptProtocol);\r
1853                         Assert.AreEqual ("$", options.Argument);\r
1854                         Assert.AreEqual (null, options.ActionUrl);\r
1855                         Assert.AreEqual (null, options.ValidationGroup);\r
1856                         Assert.IsTrue (object.ReferenceEquals (options.TargetControl, fv));\r
1857 \r
1858                         btn.ValidationGroup = "VG";\r
1859                         btn.CommandName = "CMD";\r
1860                         btn.CommandArgument = "ARG";\r
1861                         btn.PostBackUrl = "Page.aspx";\r
1862                         Assert.IsFalse (btn.CausesValidation);\r
1863                         Assert.AreEqual ("CMD", btn.CommandName);\r
1864                         Assert.AreEqual ("ARG", btn.CommandArgument);\r
1865                         Assert.AreEqual ("Page.aspx", btn.PostBackUrl);\r
1866                         Assert.AreEqual ("VG", btn.ValidationGroup);\r
1867                         options = ((IPostBackContainer) fv).GetPostBackOptions (btn);\r
1868                         Assert.IsFalse (options.PerformValidation);\r
1869                         Assert.IsFalse (options.AutoPostBack);\r
1870                         Assert.IsFalse (options.TrackFocus);\r
1871                         Assert.IsTrue (options.ClientSubmit);\r
1872                         Assert.IsTrue (options.RequiresJavaScriptProtocol);\r
1873                         Assert.AreEqual ("CMD$ARG", options.Argument);\r
1874                         Assert.AreEqual (null, options.ActionUrl);\r
1875                         Assert.AreEqual (null, options.ValidationGroup);\r
1876                 }\r
1877 \r
1878                 [Test]\r
1879                 [ExpectedException (typeof (InvalidOperationException))]\r
1880                 public void FormView_GetPostBackOptions_CausesValidation () {\r
1881                         FormView fv = new FormView ();\r
1882                         fv.Page = new Page ();\r
1883                         IButtonControl btn = new Button ();\r
1884                         Assert.IsTrue (btn.CausesValidation);\r
1885                         Assert.AreEqual (String.Empty, btn.CommandName);\r
1886                         Assert.AreEqual (String.Empty, btn.CommandArgument);\r
1887                         Assert.AreEqual (String.Empty, btn.PostBackUrl);\r
1888                         Assert.AreEqual (String.Empty, btn.ValidationGroup);\r
1889                         PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (btn);\r
1890                 }\r
1891 \r
1892                 [Test]\r
1893                 [ExpectedException (typeof (ArgumentNullException))]\r
1894                 public void FormView_GetPostBackOptions_Null_Argument () {\r
1895                         FormView fv = new FormView ();\r
1896                         fv.Page = new Page ();\r
1897                         PostBackOptions options = ((IPostBackContainer) fv).GetPostBackOptions (null);\r
1898                 }\r
1899         }\r
1900 \r
1901         public class TestMyData\r
1902         {\r
1903                 static IList<int> str = (IList<int>) new int[] { 1, 2, 3, 4, 5, 6 };\r
1904 \r
1905 \r
1906                 public static IList<int> GetMyList ()\r
1907                 {\r
1908                         return str;\r
1909                 }\r
1910 \r
1911                 public static int UpdateList (int index,int value)\r
1912                 {\r
1913                         str[index] = value;\r
1914                         return str[index];\r
1915                 }\r
1916 \r
1917                 public static int InsertList (int value)\r
1918                 {\r
1919                         str.Add (value);\r
1920                         return value;\r
1921                 }\r
1922 \r
1923                 public static void DeleteList (int value)\r
1924                 {\r
1925                         str.Remove (value);\r
1926                 }\r
1927 \r
1928         }\r
1929 \r
1930         public class MyTemplate : ITemplate\r
1931         {\r
1932 \r
1933                 Label l = new Label ();\r
1934 #region ITemplate Members\r
1935 \r
1936                 public void InstantiateIn (Control container)\r
1937                 {\r
1938                         container.Controls.Add (l);\r
1939 \r
1940                 }\r
1941 \r
1942                 public void SetDataItem (object value)\r
1943                 {\r
1944                         l.Text = value.ToString ();\r
1945                 }\r
1946 \r
1947 #endregion\r
1948         }\r
1949 \r
1950 public class FormViewDataObject\r
1951         {\r
1952 \r
1953                 public static DataTable ds = CreateDataTable();\r
1954 \r
1955                 public static DataTable Select()\r
1956                 {\r
1957 \r
1958                         return ds;\r
1959 \r
1960                 }\r
1961 \r
1962 \r
1963 \r
1964                 public static DataTable Delete(string ID, string FName, string LName)\r
1965                 {\r
1966 \r
1967                         DataRow dr = ds.Rows.Find(ID);\r
1968 \r
1969                         if (dr != null)\r
1970                         {\r
1971 \r
1972                                 ds.Rows.Remove(dr);\r
1973 \r
1974                         }\r
1975 \r
1976                         return ds;\r
1977 \r
1978                 }\r
1979 \r
1980 \r
1981 \r
1982                 public static DataTable Insert(string ID, string FName, string LName)\r
1983                 {\r
1984 \r
1985                         DataRow dr = ds.NewRow();\r
1986                         dr["ID"] = ID;\r
1987                         dr["FName"] = FName;\r
1988                         dr["LName"] = LName;\r
1989                         ds.Rows.Add(dr);\r
1990                         return ds;\r
1991                 }\r
1992 \r
1993 \r
1994 \r
1995                 public static DataTable Update(string ID, string FName, string LName)\r
1996                 {\r
1997                         DataRow dr = ds.Rows.Find(ID);\r
1998                         if (dr == null)\r
1999                         {\r
2000                                 Label lbl = new Label();\r
2001                                 lbl.Text = "ID doesn't exist ";\r
2002                                 return ds;\r
2003                         }\r
2004                         dr["FName"] = FName;\r
2005                         dr["LName"] = LName;\r
2006                         return ds;\r
2007 \r
2008                 }\r
2009 \r
2010 \r
2011 \r
2012                 public static DataTable CreateDataTable()\r
2013                 {\r
2014 \r
2015                         DataTable aTable = new DataTable("A");\r
2016                         DataColumn dtCol;\r
2017                         DataRow dtRow;\r
2018 \r
2019                         // Create ID column and add to the DataTable.\r
2020 \r
2021                         dtCol = new DataColumn();\r
2022                         dtCol.DataType = Type.GetType("System.Int32");\r
2023                         dtCol.ColumnName = "ID";\r
2024                         dtCol.AutoIncrement = true;\r
2025                         dtCol.Caption = "ID";\r
2026                         dtCol.ReadOnly = true;\r
2027                         dtCol.Unique = true;\r
2028                         aTable.Columns.Add(dtCol);\r
2029 \r
2030 \r
2031 \r
2032                         // Create Name column and add to the table\r
2033 \r
2034                         dtCol = new DataColumn();\r
2035                         dtCol.DataType = Type.GetType("System.String");\r
2036                         dtCol.ColumnName = "FName";\r
2037                         dtCol.AutoIncrement = false;\r
2038                         dtCol.Caption = "First Name";\r
2039                         dtCol.ReadOnly = false;\r
2040                         dtCol.Unique = false;\r
2041                         aTable.Columns.Add(dtCol);\r
2042 \r
2043 \r
2044 \r
2045                         // Create Last Name column and add to the table.\r
2046 \r
2047                         dtCol = new DataColumn();\r
2048                         dtCol.DataType = Type.GetType("System.String");\r
2049                         dtCol.ColumnName = "LName";\r
2050                         dtCol.AutoIncrement = false;\r
2051                         dtCol.Caption = "Last Name";\r
2052                         dtCol.ReadOnly = false;\r
2053                         dtCol.Unique = false;\r
2054                         aTable.Columns.Add(dtCol);\r
2055 \r
2056 \r
2057 \r
2058                         // Create three rows to the table\r
2059 \r
2060                         dtRow = aTable.NewRow();\r
2061                         dtRow["ID"] = 1001;\r
2062                         dtRow["FName"] = "Mahesh";\r
2063                         dtRow["LName"] = "Chand";\r
2064                         aTable.Rows.Add(dtRow);\r
2065 \r
2066                         dtRow = aTable.NewRow();\r
2067                         dtRow["ID"] = 1002;\r
2068                         dtRow["FName"] = "Melanie";\r
2069                         dtRow["LName"] = "Talmadge";\r
2070                         aTable.Rows.Add(dtRow);\r
2071 \r
2072                         dtRow = aTable.NewRow();\r
2073                         dtRow["ID"] = 1003;\r
2074                         dtRow["FName"] = "Vinay";\r
2075                         dtRow["LName"] = "Bansal";\r
2076                         aTable.Rows.Add(dtRow);\r
2077 \r
2078                         aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };\r
2079                         return aTable;\r
2080 \r
2081                 }\r
2082         }\r
2083 }\r
2084 \r
2085 \r
2086 #endif\r