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