b44847d0a673fdbfae62a8814511eb52615f6e70
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / DetailsViewTest.cs
1 //
2 // Tests for System.Web.UI.WebControls.FormView.cs 
3 //
4 // Author:
5 //      Merav Sudri (meravs@mainsoft.com)
6 //
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 #if NET_2_0
31
32 using NUnit.Framework;
33 using System;
34 using System.IO;
35 using System.Data;
36 using System.Drawing;
37 using System.Collections;
38 using System.Collections.Specialized;
39 using System.Globalization;
40 using System.Web;
41 using System.Web.UI;
42 using System.Web.UI.HtmlControls;
43 using System.Web.UI.WebControls;
44 using MonoTests.SystemWeb.Framework;
45 using MonoTests.stand_alone.WebHarness;
46
47
48 namespace MonoTests.System.Web.UI.WebControls
49 {
50         [TestFixture]   
51         public class DetailsViewTest {
52
53                 public class PokerDetailsView: DetailsView 
54                 {
55                         public bool ensureDataBound=false;
56                         public bool isInitializePager = false;
57                         public bool controlHierarchy = false;\r
58                         public bool ensureCreateChildControls = false;\r
59                         public bool createChildControls1 = false;\r
60                         public bool createChildControls2 = false;
61                         public PokerDetailsView () 
62                         {
63                          TrackViewState ();
64                         }
65
66                         public object SaveState ()
67                         {
68                          return SaveViewState ();
69                         }
70
71                          public void LoadState (object o)
72                         {
73                          LoadViewState (o);
74                         }
75
76                         public StateBag StateBag 
77                         {
78                           get { return base.ViewState; }
79                         }
80
81                         public HtmlTextWriterTag PokerTagKey
82                         {
83                                 get { return base.TagKey; }
84                         }
85
86                         public string Render ()
87                         {
88                                 StringWriter sw = new StringWriter ();
89                                 HtmlTextWriter tw = new HtmlTextWriter (sw);
90                                 Render (tw);
91                                 return sw.ToString ();
92                         }
93
94                         public void DoOnInit (EventArgs e)
95                         {
96                                 OnInit (e);
97                         }
98
99                         public void DoOnDataSourceViewChanged (Object sender, EventArgs e)
100                         {
101                                 OnDataSourceViewChanged (sender, e);
102                         }
103
104                         public void DoOnItemCommand (DetailsViewCommandEventArgs e)
105                         {
106                                 OnItemCommand (e);
107                         }
108
109                         public void DoOnItemCreated (EventArgs e)
110                         {
111                                 OnItemCreated (e); 
112                         }
113
114                         public void DoOnItemDeleted (DetailsViewDeletedEventArgs e)
115                         {
116                                 OnItemDeleted (e); 
117                         }
118
119                         public void DoOnItemDeleting  (DetailsViewDeleteEventArgs e)
120                         {
121                                 OnItemDeleting (e);
122                         }
123
124                         public void DoOnItemInserted (DetailsViewInsertedEventArgs e)
125                         {
126                                 OnItemInserted (e);
127                         }
128
129                         public void DoOnItemInserting (DetailsViewInsertEventArgs e)
130                         {
131                                 OnItemInserting (e); 
132                         }
133
134                         public void DoOnItemUpdated (DetailsViewUpdatedEventArgs  e)
135                         {
136                                 OnItemUpdated(e);
137                         }
138
139                         public void DoOnItemUpdating (DetailsViewUpdateEventArgs e)
140                         {
141                                 OnItemUpdating (e);
142                         }
143
144
145                         public void DoOnModeChanged (EventArgs e)
146                         {
147                                 OnModeChanged (e);
148                         }
149                         public void DoOnModeChanging (DetailsViewModeEventArgs e)
150                         {
151                                 OnModeChanging (e);
152                         }
153                         public void DoOnPageIndexChanged (EventArgs e)
154                         {
155                                 OnPageIndexChanged (e);
156                         }
157                         public void DoOnPageIndexChanging (DetailsViewPageEventArgs e)
158                         {
159                                 OnPageIndexChanging (e);
160                         }
161
162                         public void DoOnPagePreLoad  (Object sender , EventArgs e)
163                         {
164                                 OnPagePreLoad (sender, e);
165                         }
166                         public void DoOnPreRender (EventArgs e)
167                         {
168                                 OnPreRender (e);
169                         }
170                         public void DoOnUnload (EventArgs e)
171                         {
172                                 OnUnload (e);
173                         }
174                         public void DoOnBubbleEvent (Object sender, EventArgs e)
175                         {
176                                 OnBubbleEvent (sender,e);
177                         }
178
179                         public Object DoSaveControlState ()
180                         {
181                                 return SaveControlState ();
182                         }
183
184                         public void DoLoadControlState (Object saveState)
185                         {
186                                 LoadControlState (saveState);
187                         }
188
189                         public AutoGeneratedField DoCreateAutoGeneratedRow (AutoGeneratedFieldProperties filedProperties)
190                         {
191                                 return CreateAutoGeneratedRow (filedProperties);
192                         }
193
194                         public ICollection DoCreateAutoGeneratedRows (Object DataItem)
195                         {
196                                 return CreateAutoGeneratedRows (DataItem);
197                         }
198
199                         public int DoCreateChildControls (IEnumerable dataSource,bool dataBinding)
200                         {
201                                 return CreateChildControls (dataSource, dataBinding);
202                         }
203
204                         public Style DoCreateControlStyle ()
205                         {
206                                 return CreateControlStyle ();
207                         }
208
209                         public DetailsViewRow  DoCreateRow (int rowIndex,DataControlRowType rowType, DataControlRowState rowState)
210                         {
211                                 return CreateRow (rowIndex, rowType, rowState); 
212                         }
213
214                         public Table DoCreateTable ()
215                         {
216                                 return CreateTable ();
217                         }
218
219                         protected override void EnsureDataBound ()
220                         {
221                                 base.EnsureDataBound ();
222                                 ensureDataBound = true;
223                         }\r
224 \r
225                         protected override void EnsureChildControls ()\r
226                         {\r
227                                 base.EnsureChildControls ();\r
228                                 ensureCreateChildControls = true;\r
229                         }\r
230 \r
231                         protected override void CreateChildControls ()\r
232                         {\r
233                                 base.CreateChildControls ();\r
234                                 createChildControls1 = true;\r
235                         }\r
236 \r
237                         protected override int CreateChildControls (IEnumerable data, bool dataBinding)\r
238                         {\r
239                                 createChildControls2 = true;\r
240                                 return base.CreateChildControls (data, dataBinding);\r
241                         }
242
243                         public void DoConfirmInitState ()
244                         {
245                                 base.ConfirmInitState ();
246                         }
247
248                         public void DoExtractRowValues (IOrderedDictionary fieldValues, bool includeReadOnlyFields, bool includeKeys)
249                         {
250                                 ExtractRowValues (fieldValues, includeReadOnlyFields, includeKeys);
251                         }
252
253                         public ICollection  DoCreateFieldSet (Object dataItem, bool useDataSource)
254                         {
255                                 return CreateFieldSet (dataItem, useDataSource);
256                         }
257
258                         public string DoGetCallbackResult ()
259                         {
260                                 return GetCallbackResult (); 
261                         }
262
263                         public string DoGetCallbackScript (IButtonControl buttonControl, string argument)
264                         {
265                                 return GetCallbackScript (buttonControl, argument);
266                         }
267
268                         protected override void InitializePager (DetailsViewRow row, PagedDataSource pagedDataSource)
269                         {
270                                 base.InitializePager (row,pagedDataSource);
271                                 isInitializePager = true;
272                         }
273
274                         public void DoPerformDataBinding (IEnumerable data)
275                         {
276                                 PerformDataBinding (data);
277                         }
278
279                         protected override void PrepareControlHierarchy ()
280                         {
281                                 base.PrepareControlHierarchy ();
282                                 controlHierarchy = true;
283                         }\r
284 \r
285                         public void DoRaiseCallbackEvent (string eventArgument)\r
286                         {\r
287                                 base.RaiseCallbackEvent (eventArgument);\r
288                         }
289 \r
290                         public void DoEnsureChildControls ()\r
291                         {\r
292                                 base.EnsureChildControls ();\r
293                         }\r
294                 }
295
296                 ArrayList myds = new ArrayList ();
297                 [TestFixtureSetUp]
298                 public void setup ()
299                 {
300                         myds.Add ("Item1");
301                         myds.Add ("Item2");
302                         myds.Add ("Item3");
303                         myds.Add ("Item4");
304                         myds.Add ("Item5");
305                         myds.Add ("Item6");
306 #if VISUAL_STUDIO\r
307                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.FooterTemplateTest.aspx",\r
308                                 "FooterTemplateTest.aspx");\r
309                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewTemplates.aspx",\r
310                                 "DetailsViewTemplates.aspx");\r
311                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewDataActions.aspx",\r
312                                 "DetailsViewDataActions.aspx");\r
313                         WebTest.CopyResource (GetType (), "MonoTests.System.Web.UI.WebControls.Resources.DetailsViewProperties1.aspx",
314                                 "DetailsViewProperties1.aspx");
315 #else
316                         WebTest.CopyResource (GetType (), "FooterTemplateTest.aspx", "FooterTemplateTest.aspx");
317                         WebTest.CopyResource (GetType (), "DetailsViewTemplates.aspx", "DetailsViewTemplates.aspx");
318                         WebTest.CopyResource (GetType (), "DetailsViewDataActions.aspx", "DetailsViewDataActions.aspx");
319                         WebTest.CopyResource (GetType (), "DetailsViewProperties1.aspx", "DetailsViewProperties1.aspx");
320 #endif
321                         
322                 }
323
324
325
326                 [Test]
327                 [Category ("NotWorking")] 
328                 public void DetailsView_DefaultProperties ()
329                 {
330                         PokerDetailsView dv = new PokerDetailsView ();\r
331                         Assert.IsNotNull (dv.Rows);                     
332                         Assert.AreEqual (false, dv.AllowPaging, "AllowPagingDefault");
333                         Assert.AreEqual (typeof(TableItemStyle), dv.AlternatingRowStyle.GetType(),"AlternatingRowStyleDefault") ;
334                         Assert.AreEqual (false, dv.AutoGenerateDeleteButton, "AutoGenerateDeleteButtonDefault");
335                         Assert.AreEqual (false, dv.AutoGenerateEditButton, "AutoGenerateEditButtonDefault");
336                         Assert.AreEqual (false, dv.AutoGenerateInsertButton, "AutoGenerateInsertButtonDefault");
337                         Assert.AreEqual (true, dv.AutoGenerateRows, "AutoGenerateRowsDefault");
338                         Assert.AreEqual ("", dv.BackImageUrl, "BackImageUrlDefault");
339                         Assert.AreEqual (null, dv.BottomPagerRow, "BottomPagerRowDefault");
340                         Assert.AreEqual ("", dv.Caption, "CaptionDefault");
341                         Assert.AreEqual (TableCaptionAlign.NotSet, dv.CaptionAlign, "CaptionAlignDefault");
342                         Assert.AreEqual (-1, dv.CellPadding, "CellPaddingDefault");
343                         Assert.AreEqual (0, dv.CellSpacing, "CellSpacingDefault");
344                         Assert.AreEqual (typeof(TableItemStyle), dv.CommandRowStyle.GetType(),"CommandRowStyleDefault");
345                         Assert.AreEqual (DetailsViewMode.ReadOnly, dv.CurrentMode, "CurrentModeDefault");
346                         Assert.AreEqual (null, dv.DataItem, "DataItemDefault");
347                         Assert.AreEqual (0, dv.DataItemCount, " DataItemCountDefault");
348                         Assert.AreEqual (0, dv.DataItemIndex, "DataItemIndexDefault");
349                         Assert.AreEqual (typeof (DataKey), dv.DataKey.GetType (), "DataKeyDefault");                    
350                         Assert.AreEqual (new string[0],dv.DataKeyNames,"DataKeyNamesDefault");
351                         Assert.AreEqual (DetailsViewMode.ReadOnly, dv.DefaultMode, "DefaultMode");
352                         Assert.AreEqual (typeof (TableItemStyle),dv.EditRowStyle.GetType(),"EditRowStyleDefault");
353                         Assert.AreEqual (typeof (TableItemStyle),dv.EmptyDataRowStyle.GetType(), " EmptyDataRowStyleDefault");
354                         Assert.AreEqual (null,dv.EmptyDataTemplate,"EmptyDataTemplate");
355                         Assert.AreEqual (false,dv.EnablePagingCallbacks, "EnablePagingCallbacksDefault");
356                         Assert.AreEqual (true,dv.FieldHeaderStyle.IsEmpty,"FieldHeaderStyleDefault");
357                         Assert.AreEqual (typeof (TableItemStyle),dv.FieldHeaderStyle.GetType() ,"FieldHeaderStyleDefault");
358                         Assert.AreEqual (0, dv.Fields.Count  ,"FiledsDefault");
359                         Assert.AreEqual (null, dv.FooterRow, "FooterRowDefault1");
360                         Assert.AreEqual (typeof (TableItemStyle), dv.FooterStyle.GetType (), "FooterStyleDefault");
361                         Assert.AreEqual (null, dv.FooterTemplate, "FooterTemplateDefault");
362                         Assert.AreEqual ("", dv.FooterText, "FooterTextDefault");
363                         Assert.AreEqual (GridLines.Both, dv.GridLines, "GridLinesDefault");
364                         Assert.AreEqual (null, dv.HeaderRow, "HeaderRowDefault");
365                         Assert.AreEqual (typeof (TableItemStyle), dv.HeaderStyle.GetType() , "HeaderStyleDefault");
366                         Assert.AreEqual (null, dv.HeaderTemplate, "HeaderTemplateDefault");
367                         Assert.AreEqual ("", dv.HeaderText, "HeaderTextDefault");
368                         Assert.AreEqual (HorizontalAlign.NotSet, dv.HorizontalAlign, "HorizontalAlignDefault");
369                         Assert.AreEqual (typeof (TableItemStyle), dv.InsertRowStyle.GetType (), "InsertRowStyleDefault");
370                         Assert.AreEqual (0, dv.PageCount, "PageCountDefault");
371                         Assert.AreEqual (0, dv.PageIndex, "PageIndexDefault");
372                         Assert.AreEqual (typeof (PagerSettings), dv.PagerSettings.GetType() , "PagerSettingsDefault");
373                         Assert.AreEqual (typeof (TableItemStyle), dv.PagerStyle.GetType() , "PagerStyleDefault");
374                         Assert.AreEqual (null, dv.PagerTemplate, "PagerTemplateDefault");
375                         Assert.AreEqual (0, dv.Rows.Count, "RowsDefault1");
376                         Assert.AreEqual (typeof (DetailsViewRowCollection), dv.Rows.GetType (), "RowDefault2");
377                         Assert.AreEqual (typeof (TableItemStyle), dv.RowStyle.GetType (), "RowStyleDefault");
378                         Assert.AreEqual (null, dv.SelectedValue, "SelectedValueDefault");
379                         Assert.AreEqual (null, dv.TopPagerRow, "TopPagerRow");\r
380                 }
381
382                 [Test]
383                 [Category ("NotWorking")] 
384                 public void DetailsView_AssignToDefaultProperties ()
385                 {
386                         PokerDetailsView dv = new PokerDetailsView ();
387                         dv.AllowPaging = true;
388                         dv.DataSource = myds;
389                         dv.DataBind ();                 
390                         Assert.AreEqual (true, dv.AllowPaging, "AllowPaging");
391                         dv.AlternatingRowStyle.CssClass = "style.css";
392                         Assert.AreEqual ("style.css", dv.AlternatingRowStyle.CssClass, "AlternatingRowStyle");
393                         dv.AutoGenerateDeleteButton = true;
394                         Assert.AreEqual (true, dv.AutoGenerateDeleteButton, "AutoGenerateDeleteButton");
395                         dv.AutoGenerateEditButton = true;
396                         Assert.AreEqual (true, dv.AutoGenerateEditButton, "AutoGenerateEditButton");
397                         dv.AutoGenerateInsertButton = true;
398                         Assert.AreEqual (true, dv.AutoGenerateInsertButton, "AutoGenerateInsertButton");
399                         dv.AutoGenerateRows = false;
400                         Assert.AreEqual (false, dv.AutoGenerateRows, "AutoGenerateRows");
401                         dv.BackImageUrl = "image.jpg";
402                         Assert.AreEqual ("image.jpg", dv.BackImageUrl, "BackImageUrl");
403                         dv.Caption = "Caption Test";
404                         Assert.AreEqual ("Caption Test", dv.Caption, "Caption");
405                         dv.CaptionAlign = TableCaptionAlign.Right;
406                         Assert.AreEqual (TableCaptionAlign.Right, dv.CaptionAlign, "CaptionAlign");
407                         dv.CellPadding = 2;
408                         Assert.AreEqual (2, dv.CellPadding, "CellPadding");
409                         dv.CellSpacing = 5;
410                         Assert.AreEqual (5, dv.CellSpacing, "CellSpacing");
411                         dv.CommandRowStyle.BackColor = Color.Purple;
412                         Assert.AreEqual (Color.Purple, dv.CommandRowStyle.BackColor, "CommandRowStyle.BackColor");
413                         dv.ChangeMode (DetailsViewMode.Insert);
414                         Assert.AreEqual (DetailsViewMode.Insert, dv.CurrentMode, "CurrentModeInsert");
415                         dv.ChangeMode (DetailsViewMode.Edit );
416                         Assert.AreEqual (DetailsViewMode.Edit, dv.CurrentMode, "CurrentModeEdit");
417                         Assert.AreEqual ("Item1", dv.DataItem, "DataItem");
418                         Assert.AreEqual (6, dv.DataItemCount, "DataItemCount");
419                         Assert.AreEqual (0, dv.DataItemIndex, "DataItemIndex");
420                         string[] names ={ "test1", "test2", "test3" };
421                         dv.DataKeyNames = names;
422                         Assert.AreEqual (names, dv.DataKeyNames, "DataKeyNames");
423                         dv.DefaultMode = DetailsViewMode.Edit;
424                         Assert.AreEqual (DetailsViewMode.Edit, dv.DefaultMode, "DefaultModeEdit");
425                         dv.DefaultMode = DetailsViewMode.Insert;
426                         Assert.AreEqual (DetailsViewMode.Insert, dv.DefaultMode, "DefaultModeInsert");
427                         dv.DefaultMode = DetailsViewMode.ReadOnly;
428                         Assert.AreEqual (DetailsViewMode.ReadOnly, dv.DefaultMode, "DefaultModeReadOnly");
429                         dv.EditRowStyle.ForeColor = Color.Pink;
430                         Assert.AreEqual (Color.Pink, dv.EditRowStyle.ForeColor, "EditRowStyle");
431                         dv.EmptyDataRowStyle.HorizontalAlign = HorizontalAlign.Center;
432                         Assert.AreEqual (HorizontalAlign.Center, dv.EmptyDataRowStyle.HorizontalAlign, "HorizontalAlignCenter");
433                         dv.EmptyDataTemplate = new DTemplate ();
434                         Assert.AreEqual (typeof (DTemplate), dv.EmptyDataTemplate.GetType() , "EmptyDataTemplate");
435                         dv.EmptyDataText = "No Data";
436                         Assert.AreEqual ("No Data", dv.EmptyDataText, "EmptyDataText");
437                         dv.EnablePagingCallbacks = true;
438                         Assert.AreEqual (true, dv.EnablePagingCallbacks, "EnablePagingCallbacks");
439                         dv.FieldHeaderStyle.CssClass = "style.css";
440                         Assert.AreEqual ("style.css", dv.FieldHeaderStyle.CssClass, "FieldHeaderStyle");
441                         DataControlFieldCollection coll=new DataControlFieldCollection ();
442                         dv.FooterStyle.HorizontalAlign = HorizontalAlign.Right ;
443                         Assert.AreEqual (HorizontalAlign.Right, dv.FooterStyle.HorizontalAlign , "FooterStyle");
444                         dv.FooterTemplate = new DTemplate ();
445                         Assert.AreEqual (typeof(DTemplate ),dv.FooterTemplate.GetType() ,"FooterTemplate");
446                         dv.FooterText = "Footer Text";
447                         Assert.AreEqual ("Footer Text", dv.FooterText, "FooterText");
448                         dv.GridLines = GridLines.Horizontal;
449                         Assert.AreEqual (GridLines.Horizontal, dv.GridLines, "GridLinesHorizontal ");
450                         dv.GridLines = GridLines.None;
451                         Assert.AreEqual (GridLines.None , dv.GridLines, "GridLinesNone ");
452                         dv.GridLines = GridLines.Vertical;
453                         Assert.AreEqual (GridLines.Vertical, dv.GridLines, "GridLinesVertical ");
454                         dv.GridLines = GridLines.Both;
455                         Assert.AreEqual (GridLines.Both, dv.GridLines, "GridLinesBoth ");
456                         dv.HeaderStyle.BorderColor = Color.PapayaWhip;
457                         Assert.AreEqual (Color.PapayaWhip, dv.HeaderStyle.BorderColor, "HeaderStyle");
458                         dv.HeaderTemplate = new DTemplate ();
459                         Assert.AreEqual (typeof (DTemplate), dv.HeaderTemplate.GetType (), "HeaderTemplate"); 
460                         dv.HeaderText = "Header Text";
461                         Assert.AreEqual ("Header Text", dv.HeaderText, "HeaderText");
462                         dv.HorizontalAlign = HorizontalAlign.Center;
463                         Assert.AreEqual (HorizontalAlign.Center, dv.HorizontalAlign, "HorizontalAlignCenter");
464                         dv.HorizontalAlign = HorizontalAlign.Justify;
465                         Assert.AreEqual (HorizontalAlign.Justify , dv.HorizontalAlign, "HorizontalAlignJustify");
466                         dv.HorizontalAlign = HorizontalAlign.Left ;
467                         Assert.AreEqual (HorizontalAlign.Left , dv.HorizontalAlign, "HorizontalAlignLeft");
468                         dv.HorizontalAlign = HorizontalAlign.NotSet ;
469                         Assert.AreEqual (HorizontalAlign.NotSet , dv.HorizontalAlign, "HorizontalAlignNotSet");
470                         dv.HorizontalAlign = HorizontalAlign.Right ;
471                         Assert.AreEqual (HorizontalAlign.Right , dv.HorizontalAlign, "HorizontalAlignRight");
472                         dv.InsertRowStyle.BackColor = Color.PeachPuff;
473                         Assert.AreEqual (Color.PeachPuff, dv.InsertRowStyle.BackColor, "InsertRowStyle");
474                         Assert.AreEqual (6, dv.PageCount, "PageCount");
475                         Assert.AreEqual (0, dv.PageIndex, "PageIndex");
476                         dv.PagerSettings.LastPageImageUrl = "image.jpg";
477                         Assert.AreEqual ("image.jpg", dv.PagerSettings.LastPageImageUrl, "PagerSettings");
478                         dv.PagerStyle.CssClass = "style.css";
479                         Assert.AreEqual ("style.css", dv.PagerStyle.CssClass, "PagerStyle");
480                         dv.PagerTemplate = new DTemplate ();
481                         Assert.AreEqual (typeof (DTemplate), dv.PagerTemplate.GetType (), "PagerTemplate");
482                         Assert.AreEqual (1, dv.Rows.Count, "Rows");
483                         dv.RowStyle.BackColor  = Color.Plum  ;
484                         Assert.AreEqual (Color.Plum, dv.RowStyle.BackColor, "RowStyle");
485                         dv.FooterRow.CssClass="style.css";
486                         Assert.AreEqual ("style.css", dv.FooterRow.CssClass , "FooterRow");
487                         dv.HeaderRow.BackColor =Color.Pink ;
488                         Assert.AreEqual (Color.Pink, dv.HeaderRow.BackColor, "HeaderRow");  
489
490                 }
491
492                 [Test]          
493                 public void DetailsView_DefaultProtectedProperties ()
494                 {
495                         PokerDetailsView dv = new PokerDetailsView ();
496                         Assert.AreEqual (HtmlTextWriterTag.Table, dv.PokerTagKey, "TagKey");
497                 }
498
499                 [Test]
500                 [Category ("NotWorking")] 
501                 public void DetailsView_AssignedPropertiesRender ()
502                 {
503                                                 string RenderedPageHtml = new WebTest ("DetailsViewProperties1.aspx").Run ();
504                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("starttest") + 9, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("starttest") - 9);
505                         string origHtmlValue = @" <div>
506                         <div>
507                         <table cellspacing=""20"" cellpadding=""30"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;background-image:url(Blue%20hills.jpg);"">
508                         <caption align=""Bottom"">
509                         Caption Test
510                         </caption><tr>
511                         <td>ID</td><td>1001</td>
512                         </tr><tr>
513                         <td>FName</td><td>Mahesh</td>
514                         </tr><tr>
515                         <td>LName</td><td>Chand</td>
516                         </tr>
517                         </table>
518                         </div>   
519                          </div>";
520                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderDetailsViewProperties1");
521                         Assert.AreEqual (true,origHtmlValue.Contains (@"cellpadding=""30"""),"CellpaddingRender");
522                         Assert.AreEqual (true, origHtmlValue.Contains (@"cellspacing=""20"""), "CellspacingRender");
523                         Assert.AreEqual (true, origHtmlValue.Contains ("Caption Test"), "CaptionRender");
524                         Assert.AreEqual (true, origHtmlValue.Contains (@"caption align=""Bottom"""), "CaptionalignRender");
525                         Assert.AreEqual (true, origHtmlValue.Contains ("Blue%20hills.jpg"), "BackImageRender");
526                         Assert.AreEqual (true, origHtmlValue.Contains ("Blue%20hills.jpg"), "BackImageRender");
527                         //GridLines and HorizontalAlign were set but can not be shown in this rendering.
528                 }
529
530                 
531                 [Test]
532                 [Category ("NunitWeb")]
533                 [Category ("NotWorking")] 
534                 public void DetailsView_EmptyDataTextPropertyRender ()
535                 {       
536                         PageDelegate pd = new PageDelegate (DetailsView_EmptyDataTextProperty);
537                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pd));
538                         string result = t.Run ();                                               
539                         FormRequest fr = new FormRequest (t.Response, "form1");
540                         fr.Controls.Add ("__EVENTTARGET");
541                         fr.Controls.Add ("__EVENTARGUMENT");
542                         fr.Controls["__EVENTTARGET"].Value = "LinkButton1";
543                         fr.Controls["__EVENTARGUMENT"].Value = "";
544                         t.Request = fr;
545                         //t.Invoker = PageInvoker.CreateOnLoad (pd);
546                         result = t.Run ();
547                         string newHtml = HtmlDiff.GetControlFromPageHtml (result); 
548                         string origHtml=@"<div>
549                                         <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
550                                         <tr>
551                                         <td>Empty Data</td>
552                                         </tr>
553                                         </table>
554                                         </div><a id=""LinkButton1"" href=""javascript:__doPostBack('LinkButton1','')"">Test</a>";
555                         HtmlDiff.AssertAreEqual(origHtml, newHtml, "EmptyDataTextTest");
556
557
558                 }
559
560                 public static void DetailsView_EmptyDataTextProperty (Page p)
561                 {
562                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
563                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
564
565                         PokerDetailsView dv = new PokerDetailsView ();
566                         dv.DataSource = new ArrayList ();
567                         dv.EmptyDataText = "Empty Data";
568                         LinkButton lb = new LinkButton ();
569                         lb.ID = "LinkButton1";
570                         lb.Text = "Test";
571                         
572                         p.Form.Controls.Add (lcb);
573                         p.Form.Controls.Add (dv);
574                         dv.DataBind ();
575                         p.Form.Controls.Add (lb);
576                         p.Form.Controls.Add (lce);
577                 }
578                 //ToDo: Add more properties rendering tests (PageSettings,AutoGeneratedRows etc...)
579
580                 
581                 //Public Methods
582
583                 [Test]
584                 public void DetailsView_ChangeMode ()
585                 {
586                         PokerDetailsView dv = new PokerDetailsView ();
587                         Assert.AreEqual (DetailsViewMode.ReadOnly, dv.CurrentMode, "ChangeModeDefault");
588                         dv.ChangeMode (DetailsViewMode.Insert);
589                         Assert.AreEqual (DetailsViewMode.Insert, dv.CurrentMode, "ChangeModeInsert");
590                         dv.ChangeMode (DetailsViewMode.Edit);
591                         Assert.AreEqual (DetailsViewMode.Edit, dv.CurrentMode, "ChangeModeEdit");
592                         dv.ChangeMode (DetailsViewMode.ReadOnly);
593                         Assert.AreEqual (DetailsViewMode.ReadOnly, dv.CurrentMode, "ChangeModeReadOnly");
594                 }
595
596                 [Test]
597                 [Category ("NotWorking")] 
598                 public void FormView_DataBind ()
599                 {
600                         PokerDetailsView dv = new PokerDetailsView ();
601                         dv.AllowPaging = true;
602                         dv.DataSource = myds;
603                         Assert.AreEqual (0, dv.PageCount, "BeforeDataBind1");
604                         Assert.AreEqual (null, dv.DataItem, "BeforeDataBind2");
605                         dv.DataBind ();
606                         Assert.AreEqual (6, dv.PageCount, "AfterDataBind1");
607                         Assert.AreEqual (6, dv.DataItemCount, "AfterDataBind2");
608                         Assert.AreEqual ("Item1", dv.DataItem, "AfterDataBind3");
609                 }
610
611                 [Test]
612                 [Category ("NotWorking")] 
613                 public void FormView_IsBindableType ()
614                 {
615                         bool isBindable = false;
616                         PokerDetailsView dv = new PokerDetailsView ();
617                         isBindable = dv.IsBindableType (typeof (Decimal));
618                         Assert.AreEqual (true, isBindable, "IsBindableTypeDecimal");
619                         isBindable = dv.IsBindableType (typeof (Int32));
620                         Assert.AreEqual (true, isBindable, "IsBindableTypeInt32");
621                         isBindable = dv.IsBindableType (typeof (String));
622                         Assert.AreEqual (true, isBindable, "IsBindableTypeString");
623                         isBindable = dv.IsBindableType (typeof (Boolean));
624                         Assert.AreEqual (true, isBindable, "IsBindableTypeBoolean");
625                         isBindable = dv.IsBindableType (typeof (DateTime));
626                         Assert.AreEqual (true, isBindable, "IsBindableTypeDateTime");
627                         isBindable = dv.IsBindableType (typeof (Byte));
628                         Assert.AreEqual (true, isBindable, "IsBindableTypeByte");
629                         isBindable = dv.IsBindableType (typeof (Guid));
630                         Assert.AreEqual (true, isBindable, "IsBindableTypeGuid");
631                         isBindable = dv.IsBindableType (typeof (DTemplate));
632                         Assert.AreEqual (false, isBindable, "IsBindableTypeMyTemplate");
633                 }
634
635
636                 private bool isDeleted = false;
637
638                 [Test]
639                 [Category ("NotWorking")] 
640                 public void DetailsView_DeleteItemHandler ()
641                 {
642                         PokerDetailsView dv = new PokerDetailsView ();
643                         dv.DataSource = myds;
644                         dv.DataBind ();
645                         Assert.AreEqual (false, isDeleted, "BeforeDeleteItem");
646                         dv.ItemDeleting += new DetailsViewDeleteEventHandler (dv_DeleteingHandler);
647                         dv.DeleteItem ();
648                         Assert.AreEqual (true, isDeleted, "BeforeDeleteItem");
649
650                 }
651
652                 public void dv_DeleteingHandler (Object sender, DetailsViewDeleteEventArgs e)
653                 {
654                         isDeleted = true;
655                 }
656
657                 [Test]
658                 [Category ("NunitWeb")]
659                 [Category ("NotWorking")] 
660                 public void DetailsView_DeleteItemTest ()
661                 {
662                         string html = new WebTest (PageInvoker.CreateOnLoad (
663                                 new PageDelegate (DetailsView_DeleteItem))).Run ();
664                         string newHtml = HtmlDiff.GetControlFromPageHtml (html);
665                         string origHtml = @"<div>
666                                         <table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
667                                         <tr>
668                                         <td>ID</td><td>1002</td>
669                                         </tr><tr>
670                                         <td>FName</td><td>Melanie</td>
671                                         </tr><tr>
672                                         <td>LName</td><td>Talmadge</td>
673                                         </tr><tr>
674                                         <td colspan=""2""><table border=""0"">
675                                         <tr>
676                                         <td><span>1</span></td><td><a href=""javascript:__doPostBack('ctl01','Page$2')"">2</a></td>
677                                         </tr>
678                                         </table></td>
679                                         </tr>
680                                         </table>
681                                         </div>";
682                         HtmlDiff.AssertAreEqual (origHtml, newHtml, "DeleteItemMethod");
683                 }
684
685                 public static void DetailsView_DeleteItem (Page p)
686                 {
687                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
688                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
689                         PokerDetailsView dv = new PokerDetailsView ();
690                         ObjectDataSource ds = new ObjectDataSource ();
691                         ds.ID = "ObjectDataSource1";
692                         ds.TypeName = "MonoTests.System.Web.UI.WebControls.TableObject";
693                         ds.SelectMethod = "GetMyData";
694                         ds.DeleteMethod = "Delete";
695                         ds.InsertMethod = "Insert";
696                         ds.UpdateMethod = "Update";
697                         Parameter p1 = new Parameter ("ID", TypeCode.String);
698                         Parameter p2 = new Parameter ("FName", TypeCode.String);
699                         Parameter p3 = new Parameter ("LName", TypeCode.String);
700                         ds.DeleteParameters.Add (p1);
701                         ds.DeleteParameters.Add (p2);
702                         ds.DeleteParameters.Add (p3);
703                         dv.Page = p;
704                         ds.Page = p;
705                         p.Form.Controls.Add (lcb);
706                         p.Form.Controls.Add (dv);
707                         p.Form.Controls.Add (ds);
708                         p.Form.Controls.Add (lce);
709                         dv.AllowPaging = true;
710                         dv.DataKeyNames = new string[] { "ID", "FName", "LName" };
711                         dv.DataSourceID = "ObjectDataSource1";
712                         dv.DataBind ();\r
713                         dv.DeleteItem ();\r
714                 }
715
716                 //ToDo: InsertItem method should be checked using postback
717                 private bool insertItem = false;
718                 [Test]
719                 [Category ("NotWorking")] 
720                 public void DetailsView_InsertItem ()
721                 {
722                         PokerDetailsView dv = new PokerDetailsView ();\r
723                         dv.Page = new Page ();
724                         dv.ChangeMode (DetailsViewMode.Insert);
725                         dv.ItemInserting += new DetailsViewInsertEventHandler (insert_item);
726                         Assert.AreEqual (false, insertItem, "BeforeInsertItem");
727                         dv.InsertItem (true);
728                         Assert.AreEqual (true, insertItem, "AfterInsertItem");
729
730                 }
731
732                 public void insert_item (object sender, DetailsViewInsertEventArgs e)
733                 {
734                         insertItem = true;
735                 }
736
737                 //ToDo: UpdateItem method should be checked using postback
738                 private bool updateItem = false;
739                 [Test]
740                 [Category ("NotWorking")] 
741                 public void DetailsView_UpdateItem ()
742                 {
743                         PokerDetailsView dv = new PokerDetailsView ();
744                         dv.ChangeMode (DetailsViewMode.Edit);\r
745                         dv.Page = new Page ();
746                         dv.ItemUpdating += new DetailsViewUpdateEventHandler (update_item);
747                         Assert.AreEqual (false, updateItem, "BeforeUpdateItem");
748                         dv.UpdateItem (true);
749                         Assert.AreEqual (true, updateItem, "AfterUpdateItem");
750
751                 }
752
753                 public void update_item (object sender, DetailsViewUpdateEventArgs e)
754                 {
755                         updateItem = true;
756                 }
757
758                 //protected methods
759
760                 [Test]
761                 [Category ("NotWorking")] 
762                 public void DetailsView_CreateAutoGeneratedRows ()
763                 {
764                         PokerDetailsView dv = new PokerDetailsView ();                  
765                         DataTable ds = TableObject.CreateDataTable ();
766                         dv.DataSource = ds;
767                         dv.DataBind ();                 
768                         ICollection col = dv.DoCreateAutoGeneratedRows (dv.DataItem);
769                         Assert.AreEqual (typeof(ArrayList),col.GetType (),"CreateAutoGeneratedRowsType");
770                         Assert.AreEqual (3, col.Count , "CreateAutoGeneratedRowsCount");
771                         Assert.AreEqual (typeof (AutoGeneratedField), ((ArrayList) col)[0].GetType (), "AutoGeneratedRowType");
772                         Assert.AreEqual ("ID", ((ArrayList) col)[0].ToString (), "AutoGeneratedRowName1");
773                         Assert.AreEqual ("FName", ((AutoGeneratedField)((ArrayList) col)[1]).HeaderText, "AutoGeneratedRowName2");
774                         Assert.AreEqual ("LName", ((AutoGeneratedField) ((ArrayList) col)[2]).SortExpression , "AutoGeneratedRowName3");
775                         
776                 }
777
778                 [Test]
779                 [Category ("NotWorking")] 
780                 public void DetailsView_CreateAutoGenerateRow ()
781                 {
782                         PokerDetailsView dv = new PokerDetailsView ();                  
783                         AutoGeneratedFieldProperties prop = new AutoGeneratedFieldProperties ();                        
784                         prop.Name = "FieldItem";                        
785                         prop.Type = typeof(String);
786                         AutoGeneratedField field = dv.DoCreateAutoGeneratedRow (prop);
787                         Assert.AreEqual (typeof (string), field.DataType, "FieldDataType");
788                         Assert.AreEqual ("FieldItem", field.HeaderText, "FieldHeaderText");
789                         Assert.AreEqual ("FieldItem",field.SortExpression ,"FieldSortExpretion");
790                         Assert.AreEqual (typeof(AutoGeneratedField), field.GetType (), "AutoGeneratedFieldType"); 
791
792                 }
793
794                 [Test]
795                 [Category ("NotWorking")] 
796                 public void DetailsView_CreateChildControls ()
797                 {
798                         PokerDetailsView dv = new PokerDetailsView ();                  
799                         Assert.AreEqual (6,dv.DoCreateChildControls (myds, true),"CreateChildControls1");
800                         Assert.AreEqual (6, dv.DoCreateChildControls (myds, false), "CreateChildControls2");
801                 }
802
803                 [Test]
804                 [Category ("NotWorking")] 
805                 public void DetailsView_CreateControlStyle ()
806                 {
807                         PokerDetailsView dv = new PokerDetailsView ();
808                         Style style = dv.DoCreateControlStyle ();
809                         Assert.AreEqual (0, ((TableStyle) style).CellSpacing, "CreateControlStyle1");
810                         Assert.AreEqual (GridLines.Both, ((TableStyle) style).GridLines, "CreateControlStyle2");
811                          
812                 }
813
814                 [Test]
815                 [Category ("NotWorking")] 
816                 public void DetailsView_CreateRow ()
817                 {
818                         PokerDetailsView dv = new PokerDetailsView ();
819                         DetailsViewRow row = dv.DoCreateRow (1, DataControlRowType.DataRow, DataControlRowState.Alternate);
820                         Assert.AreEqual (1, row.RowIndex, "rowIndex1");
821                         Assert.AreEqual (DataControlRowType.DataRow, row.RowType, "RowType1");
822                         Assert.AreEqual (DataControlRowState.Alternate, row.RowState, "RowState1");
823                         row = dv.DoCreateRow (2, DataControlRowType.Header, DataControlRowState.Insert);
824                         Assert.AreEqual (2, row.RowIndex, "rowIndex2");
825                         Assert.AreEqual (DataControlRowType.Header , row.RowType, "RowType2");
826                         Assert.AreEqual (DataControlRowState.Insert , row.RowState, "RowState2");
827                         row = dv.DoCreateRow (3, DataControlRowType.EmptyDataRow , DataControlRowState.Selected );
828                         Assert.AreEqual (3, row.RowIndex, "rowIndex3");
829                         Assert.AreEqual (DataControlRowType.EmptyDataRow , row.RowType, "RowType3");
830                         Assert.AreEqual (DataControlRowState.Selected , row.RowState, "RowState3");                     
831                         DetailsViewPagerRow pagerRow = (DetailsViewPagerRow )dv.DoCreateRow (5, DataControlRowType.Pager , DataControlRowState.Edit );
832                         Assert.AreEqual (5, pagerRow.RowIndex, "rowIndex4");
833                         Assert.AreEqual (DataControlRowType.Pager, pagerRow.RowType, "RowType4");
834                         Assert.AreEqual (DataControlRowState.Edit, pagerRow.RowState, "RowState4");
835   
836   
837                 }
838
839                 [Test]
840                 [Category ("NotWorking")] 
841                 public void DetailsView_CreateTable ()
842                 {
843                         PokerDetailsView dv = new PokerDetailsView ();
844                         Table tb = dv.DoCreateTable();
845                         Assert.AreEqual (null, tb.Parent, "CreateTable1");
846                         Assert.AreEqual ("", tb.BackImageUrl, "CreateTable2");
847                         Assert.AreEqual (0, tb.Rows.Count, "CreateTable3");
848                         Assert.AreEqual (null, tb.ClientID , "CreateTable3");
849                         dv.ID = "testId"; //private filed _parentID should be set to "testId"                   
850                         tb = dv.DoCreateTable ();
851                         Assert.AreEqual (-1, tb.CellSpacing, "CreateTable4");
852                         Assert.AreEqual (HorizontalAlign.NotSet , tb.HorizontalAlign , "CreateTable5");
853                 }
854
855                 [Test]
856                 [Category ("NotWorking")] 
857                 public void DetailsView_EnsureDataBound ()
858                 {
859                         ObjectDataSource ds = new ObjectDataSource ();
860                         ds.ID = "ObjectDataSource1";
861                         ds.TypeName = "System.Guid";
862                         ds.SelectMethod = "ToByteArray";
863                         Page p = new Page ();
864                         PokerDetailsView dv = new PokerDetailsView ();
865                         dv.Page = p;
866                         ds.Page = p;
867                         p.Controls.Add (dv);
868                         p.Controls.Add (ds);
869                         dv.DataSourceID = "ObjectDataSource1";
870                         Assert.AreEqual (false, dv.ensureDataBound, "BeforeEnsureDataBound");
871                         dv.DoConfirmInitState ();
872                         dv.DoOnPreRender (EventArgs.Empty);
873                         Assert.AreEqual (true, dv.ensureDataBound, "AfterEnsureDataBound");
874                 }\r
875 \r
876                 [Test]\r
877                 [Category ("NotWorking")]\r
878                 public void DetailsView_EnsureChildControls ()\r
879                 {\r
880                         PokerDetailsView dv = new PokerDetailsView ();\r
881                         int i = dv.Rows.Count;\r
882                         Assert.IsTrue (dv.ensureCreateChildControls);\r
883                         Assert.IsFalse (dv.ensureDataBound);\r
884                         Assert.IsFalse (dv.createChildControls1);\r
885                         Assert.IsFalse (dv.createChildControls2);\r
886                 }
887
888                 [Test]
889                 [Category ("NotWorking")] 
890                 public void DetailsView_ExtractRowValues ()
891                 {
892                         PokerDetailsView dv = new PokerDetailsView ();
893                         DataTable ds = TableObject.CreateDataTable ();
894                         dv.DataSource = ds;
895                         dv.DataBind ();
896                         OrderedDictionary fieldsValues = new OrderedDictionary ();
897                         dv.DoExtractRowValues (fieldsValues, true, true);
898                         Assert.AreEqual (3, fieldsValues.Count, "ExtractRowValues1");
899                         Assert.AreEqual (3, fieldsValues.Keys.Count, "ExtractRowValues2");
900                         Assert.AreEqual (3, fieldsValues.Values.Count, "ExtractRowValues3");
901                         Assert.AreEqual (true, fieldsValues.Contains ("ID"), "ExtractRowValues4");
902                         IDictionaryEnumerator enumerator=fieldsValues.GetEnumerator ();
903                         enumerator.MoveNext ();
904                         Assert.AreEqual ("ID",enumerator.Key,"FieldValue1");
905                         Assert.AreEqual ("1001", enumerator.Value , "FieldValue2");
906                         enumerator.MoveNext ();
907                         Assert.AreEqual ("FName", enumerator.Key, "FieldValue3");
908                         Assert.AreEqual ("Mahesh", enumerator.Value, "FieldValue4");
909                         enumerator.MoveNext ();
910                         Assert.AreEqual ("LName", enumerator.Key, "FieldValue5");
911                         Assert.AreEqual ("Chand", enumerator.Value, "FieldValue6");
912                         fieldsValues = new OrderedDictionary ();
913                         dv.DoExtractRowValues (fieldsValues, false, false);
914                         Assert.AreEqual (0, fieldsValues.Count, "ExtractRowValues-NotReadOnly1");
915                         fieldsValues = new OrderedDictionary ();
916                         dv.DoExtractRowValues (fieldsValues, true, false);
917                         Assert.AreEqual (3, fieldsValues.Count, "ExtractRowValues-NoPrimaryKeys1");
918                         Assert.AreEqual (3, fieldsValues.Keys.Count, "ExtractRowValues-NoPrimaryKeys2");
919                         fieldsValues = new OrderedDictionary ();
920                         dv.DoExtractRowValues (fieldsValues, false, true);
921                         Assert.AreEqual (0, fieldsValues.Count, "ExtractRowValues-NotReadOnly2");
922                         Assert.AreEqual (0, fieldsValues.Keys.Count, "ExtractRowValues-NotReadOnly3");
923                 }\r
924 \r
925                 [Test]\r
926                 [Category ("NotWorking")]\r
927                 public void DetailsView_CreateFieldSet_dont_useDataSource ()\r
928                 {\r
929                         DataTable ds = TableObject.CreateDataTable ();\r
930                         PokerDetailsView dv1 = new PokerDetailsView ();\r
931                         dv1.DataSource = ds;\r
932                         dv1.DataBind ();\r
933                         ICollection fieldSet1 = dv1.DoCreateFieldSet ("FieldTest", true);\r
934                         Assert.AreEqual (1, fieldSet1.Count, "FiledSetCount");\r
935                         AutoGeneratedField agf = (AutoGeneratedField) ((ArrayList) fieldSet1)[0];\r
936                         Assert.AreEqual ("Item", agf.HeaderText, "FieldSetCount");\r
937                 }
938
939                 [Test]
940                 public  void DetailsView_CreateFieldSet_useDataSource ()
941                 {
942                         DataTable ds = TableObject.CreateDataTable ();                  
943                         PokerDetailsView dv2 = new PokerDetailsView ();
944                         dv2.DataSource = ds;
945                         dv2.DataBind ();
946                         ICollection fieldSet2 = dv2.DoCreateFieldSet ("FieldTest", false);
947                         Assert.AreEqual (3, fieldSet2.Count, "FiledSetCount");
948                         Assert.AreEqual ("ID", ((ArrayList) fieldSet2)[0].ToString (), "FieldValue1");
949                         Assert.AreEqual (typeof (Int32), ((AutoGeneratedField) ((ArrayList) fieldSet2)[0]).DataType, "FieldType1");
950                         Assert.AreEqual ("FName", ((ArrayList) fieldSet2)[1].ToString (), "FieldValue2");
951                         Assert.AreEqual (typeof (String), ((AutoGeneratedField) ((ArrayList) fieldSet2)[1]).DataType, "FieldType2");
952                         Assert.AreEqual ("LName", ((ArrayList) fieldSet2)[2].ToString (), "FieldValue3");
953                         Assert.AreEqual (typeof (String), ((AutoGeneratedField) ((ArrayList) fieldSet2)[2]).DataType, "FieldType3");
954   
955
956                 }
957
958                 [Test]
959                 [Category ("NotWorking")] 
960                 public void DetailsView_GetCallBackResult ()
961                 {
962                         PokerDetailsView dv = new PokerDetailsView ();
963                         Page p = new Page ();
964                         p.Controls.Add (dv);
965                         DataTable ds = TableObject.CreateDataTable ();                  
966                         dv.DataSource = ds;
967                         dv.DataBind ();\r
968                         dv.DoRaiseCallbackEvent ("a|b$c");\r
969                         string callbackResult=@"<table cellspacing=""0"" rules=""all"" border=""1"" style=""border-collapse:collapse;"">
970                                                 <tr>
971                                                 <td>ID</td><td>1001</td>
972                                                 </tr><tr>
973                                                 <td>FName</td><td>Mahesh</td>
974                                                 </tr><tr>
975                                                 <td>LName</td><td>Chand</td>
976                                                 </tr>
977                                                 </table>";\r
978                         string cbres = dv.DoGetCallbackResult ();\r
979                         Assert.IsNotNull (cbres);
980                         HtmlDiff.AssertAreEqual (callbackResult, cbres.Substring(dv.DoGetCallbackResult().IndexOf ("<table")), "GetCallbackResult");
981                                 
982                 }
983
984                 [Test]
985                 public void DetailsView_GetCallbackScript ()
986                 {
987                         //Not implemented
988                 }
989
990                 [Test]
991                 [Category ("NotWorking")] 
992                 public void DetailsView_InitializePager ()
993                 {
994                         PokerDetailsView dv = new PokerDetailsView ();
995                         Page page = new Page ();
996                         dv.AllowPaging = true;
997                         dv.DataSource = myds;
998                         page.Controls.Add (dv);                                         
999                         Assert.AreEqual (0, dv.PageCount, "BeforeInitializePagerPageCount");
1000                         Assert.AreEqual (false, dv.isInitializePager, "BeforeInitializePager");
1001                         dv.DataBind ();
1002                         Assert.AreEqual (true, dv.isInitializePager, "AfterInitializePager");
1003                         Assert.AreEqual (6, dv.PageCount, "AfterInitializePagerPageCount");
1004                 }
1005
1006                 [Test]
1007                 public void DetailsView_InitializeRow ()
1008                 {
1009                         //Not implemented
1010                 }
1011
1012                 [Test]
1013                 [Category ("NotWorking")] 
1014                 public void DetailsView_PerformDataBinding ()
1015                 {
1016                         PokerDetailsView dv = new PokerDetailsView ();
1017                         Assert.AreEqual (0, dv.DataItemCount, "BeforePerformDataBinding");
1018                         dv.DoPerformDataBinding (myds);
1019                         Assert.AreEqual (6, dv.DataItemCount, "AfterPerformDataBinding");                                       
1020                 }
1021
1022                 [Test]
1023                 [Category ("NotWorking")] 
1024                 public void DetailsView_PrepareControlHierarchy ()
1025                 {
1026                         PokerDetailsView dv = new PokerDetailsView ();\r
1027                         //dv.Render ();
1028                         //Assert.AreEqual (0, dv.Controls.Count, "ControlHierarchy1");
1029                         //Assert.AreEqual (true, dv.controlHierarchy, "ControlHierarchy2");
1030                         dv.controlHierarchy = false;
1031                         dv.AllowPaging = true;
1032                         dv.DataSource = myds;
1033                         dv.DataBind ();\r
1034                         dv.Page = new Page ();
1035                         dv.Render ();
1036                         Assert.AreEqual (1, dv.Controls.Count, "ControlHierarchy3");
1037                         Assert.AreEqual (true, dv.controlHierarchy, "ControlHierarchy4");
1038                         Button bt = new Button ();
1039                         dv.Controls.Add (bt);
1040                         dv.controlHierarchy = false;
1041                         dv.Render ();
1042                         Assert.AreEqual (2, dv.Controls.Count, "ControlHierarchy3");
1043                         Assert.AreEqual (true, dv.controlHierarchy, "ControlHierarchy4");
1044                 }
1045                 
1046                 //Render Methods
1047                 [Test]
1048                 [Category ("NotWorking")] 
1049                 public void DetailsView_FooterTemplateRender ()
1050                 {
1051                         //Footer Template property is checked.
1052                         string RenderedPageHtml = new WebTest ("FooterTemplateTest.aspx").Run ();
1053                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("starttest")+9, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("starttest")-9); 
1054                         string origHtmlValue = @" <div>
1055                                                   <div>
1056                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1057                                                 <tr>
1058                                                 <td>ID</td><td>1001</td>
1059                                                 </tr><tr>
1060                                                 <td>FName</td><td>Mahesh</td>
1061                                                 </tr><tr>
1062                                                 <td>LName</td><td>Chand</td>
1063                                                 </tr><tr>
1064                                                 <td colspan=""2"">
1065                                                  Footer Template Test<a id=""DetailsView1_HyperLink1"">Footer</a>
1066                                                  </td>
1067                                                 </tr><tr>
1068                                                 <td colspan=""2""><table border=""0"">
1069                                                 <tr>
1070                                                 <td><span>1</span></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$3')"">3</a></td>
1071                                                 </tr>
1072                                                 </table></td>
1073                                                 </tr>
1074                                                 </table>
1075                                                 </div>   
1076                                                  </div>";
1077                                 
1078
1079                        HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderFooterTemplate");
1080                 }
1081
1082                 [Test]
1083                 [Category ("NotWorking")] 
1084                 public void DetailsView_RenderHeaderTemplate ()
1085                 {
1086                         //Header Template property is checked
1087                         string RenderedPageHtml = new WebTest ("DetailsViewTemplates.aspx").Run ();
1088                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test1") + 5, RenderedPageHtml.IndexOf ("test2") - RenderedPageHtml.IndexOf ("test1") - 5);
1089                         string origHtmlValue = @" <div>
1090                                                  <div>
1091                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1092                                                 <tr>
1093                                                 <td colspan=""2"">
1094                                                 Header Template<input type=""submit"" name=""DetailsView1$Button1"" value=""Header button"" id=""DetailsView1_Button1"" />
1095                                                  </td>
1096                                                 </tr><tr>
1097                                                 <td>ID</td><td>1001</td>
1098                                                 </tr><tr>
1099                                                 <td>FName</td><td>Mahesh</td>
1100                                                 </tr><tr>
1101                                                 <td>LName</td><td>Chand</td>
1102                                                 </tr><tr>
1103                                                 <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView1','Delete$0')"">Delete</a></td>
1104                                                         </tr><tr>
1105                                                 <td colspan=""2""><table border=""0"">
1106                                                 <tr>
1107                                                 <td><span>1</span></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$3')"">3</a></td>
1108                                                 </tr>
1109                                                 </table></td>
1110                                                 </tr>
1111                                                 </table>
1112                                                 </div>";      
1113                 
1114         
1115                 HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderHeaderTemplate");
1116                 }
1117
1118                 [Test]
1119                 [Category ("NotWorking")] 
1120                 public void DetailsView_PagerTemplateRender ()
1121                 {
1122                         //Pager Template property is checked
1123                         string RenderedPageHtml = new WebTest ("DetailsViewTemplates.aspx").Run ();
1124                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test2") + 5, RenderedPageHtml.IndexOf ("test3") - RenderedPageHtml.IndexOf ("test2") - 5);
1125                         string origHtmlValue = @" <div>
1126                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView2"" style=""height:50px;width:125px;border-collapse:collapse;"">
1127                                                 <tr>
1128                                                 <td>ID</td><td>1001</td>
1129                                                 </tr><tr>
1130                                                 <td>FName</td><td>Mahesh</td>
1131                                                 </tr><tr>
1132                                                 <td>LName</td><td>Chand</td>
1133                                                 </tr><tr>
1134                                                 <td colspan=""2"">
1135                                                  <input type=""submit"" name=""DetailsView2$ctl01$Button2"" value=""Prev"" id=""DetailsView2_ctl01_Button2"" />
1136                                                   <input type=""submit"" name=""DetailsView2$ctl01$Button3"" value=""Next"" id=""DetailsView2_ctl01_Button3"" />
1137                                                 </td>
1138                                                 </tr>
1139                                                 </table>
1140                                                 </div>";
1141     
1142                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderPagerTemplate");
1143                 }
1144
1145                 [Test]
1146                 [Category ("NotWorking")] 
1147                 public void DetailsView_EditFieldsRender ()
1148                 {
1149                         string RenderedPageHtml = new WebTest ("DetailsViewTemplates.aspx").Run ();
1150                         string newHtmlValue = RenderedPageHtml.Substring (RenderedPageHtml.IndexOf ("test3") + 5, RenderedPageHtml.IndexOf ("endtest") - RenderedPageHtml.IndexOf ("test3") - 5);
1151                         string origHtmlValue = @" </div>
1152                                                         <div>
1153                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView3"" style=""height:50px;width:125px;border-collapse:collapse;"">
1154                                                 <tr>
1155                                                 <td>ID</td><td>1001</td>
1156                                                 </tr><tr>
1157                                                 <td>FName</td><td>Mahesh</td>
1158                                                 </tr><tr>
1159                                                 <td>LName</td><td>Chand</td>
1160                                                 </tr><tr>
1161                                                 <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView3','$0')"">TestButtonField</a></td>
1162                                                 </tr><tr>
1163                                                 <td>&nbsp;</td><td><a></a></td>
1164                                                 </tr><tr>
1165                                                 <td>Image field</td><td></td>
1166                                                 </tr><tr>
1167                                                 <td>&nbsp;</td><td></td>
1168                                                 </tr><tr>
1169                                                 <td>Template Field</td><td style=""background-color:#FFE0C0;"">&nbsp;</td>
1170                                                 </tr><tr>
1171                                                 <td colspan=""2""><table border=""0"">
1172                                                 <tr>
1173                                                 <td><span>1</span></td><td><a href=""javascript:__doPostBack('DetailsView3','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('DetailsView3','Page$3')"">3</a></td>
1174                                                 </tr>
1175                                                 </table></td>
1176                                                 </tr>
1177                                                 </table>
1178                                                 </div>";
1179    
1180                                                         
1181                         HtmlDiff.AssertAreEqual (origHtmlValue, newHtmlValue, "RenderDataFields");
1182                 }
1183
1184                 [Test]
1185                 [Category ("NunitWeb")]
1186                 [Category ("NotWorking")] 
1187                 public void DetailsView_PagingPostback ()
1188                 {
1189                         WebTest t = new WebTest ("DetailsViewDataActions.aspx");
1190                         string pageHTML = t.Run ();
1191                         pageHTML = pageHTML.Substring (pageHTML.IndexOf ("starttest") + 9, pageHTML.IndexOf ("endtest") - pageHTML.IndexOf ("starttest") - 9);
1192                         string origHtmlValue = @" <div>
1193                                                  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
1194                                                  <div>
1195                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1196                                                 <tr>
1197                                                 <td>ID</td><td>1001</td>
1198                                                 </tr><tr>
1199                                                 <td>FName</td><td>Mahesh</td>
1200                                                 </tr><tr>
1201                                                 <td>LName</td><td>Chand</td>
1202                                                 </tr><tr>
1203                                                 <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView1','Edit$0')"">Edit</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','Delete$0')"">Delete</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','New$0')"">New</a></td>
1204                                                 </tr><tr>
1205                                                 <td colspan=""2""><table border=""0"">
1206                                                 <tr>
1207                                                 <td><span>1</span></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$3')"">3</a></td>
1208                                                 </tr>
1209                                                 </table></td>
1210                                                 </tr>
1211                                                 </table>
1212                                                 </div>     
1213                                                   </div>";
1214                         HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "BeforePagingDataPostback");
1215                         FormRequest fr = new FormRequest (t.Response, "form1");
1216                         fr.Controls.Add ("__EVENTTARGET");
1217                         fr.Controls.Add ("__EVENTARGUMENT");            
1218                         fr.Controls["__EVENTTARGET"].Value = "DetailsView1";
1219                         fr.Controls["__EVENTARGUMENT"].Value = "Page$2";
1220                         t.Request = fr;
1221                         pageHTML = t.Run ();
1222                         pageHTML = pageHTML.Substring (pageHTML.IndexOf ("starttest") + 9, pageHTML.IndexOf ("endtest") - pageHTML.IndexOf ("starttest") - 9);
1223                         origHtmlValue = @" <div>
1224                                         &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
1225                                         <div>
1226                                         <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1227                                         <tr>
1228                                         <td>ID</td><td>1002</td>
1229                                         </tr><tr>
1230                                         <td>FName</td><td>Melanie</td>
1231                                         </tr><tr>
1232                                         <td>LName</td><td>Talmadge</td>
1233                                         </tr><tr>
1234                                         <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView1','Edit$1')"">Edit</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','Delete$1')"">Delete</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','New$1')"">New</a></td>
1235                                         </tr><tr>
1236                                         <td colspan=""2""><table border=""0"">
1237                                         <tr>
1238                                         <td><a href=""javascript:__doPostBack('DetailsView1','Page$1')"">1</a></td><td><span>2</span></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$3')"">3</a></td>
1239                                         </tr>
1240                                         </table></td>
1241                                         </tr>
1242                                         </table>
1243                                         </div>    
1244                                         </div>";
1245                         HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "AfterPagingDataPostback");
1246
1247                 }
1248
1249                 [Test]
1250                 [Category ("NunitWeb")]
1251                 [Category ("NotWorking")] 
1252                 public void DetailsView_EditPostback ()
1253                 {                       
1254                         WebTest t = new WebTest ("DetailsViewDataActions.aspx");
1255                         string pageHTML = t.Run ();
1256                         Assert.AreEqual (true, pageHTML.Contains ("Edit"), "BeforeEditPostback");
1257                         FormRequest fr = new FormRequest (t.Response, "form1");
1258                         fr.Controls.Add ("__EVENTTARGET");
1259                         fr.Controls.Add ("__EVENTARGUMENT");
1260                         fr.Controls["__EVENTTARGET"].Value = "DetailsView1";
1261                         fr.Controls["__EVENTARGUMENT"].Value = "Edit$0";
1262                         t.Request = fr;                 
1263                         pageHTML = t.Run ();
1264                         pageHTML = pageHTML.Substring (pageHTML.IndexOf ("starttest") + 9, pageHTML.IndexOf ("endtest") - pageHTML.IndexOf ("starttest") - 9);
1265                         string origHtmlValue = @" <div>
1266                                                 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
1267                                                 <div>
1268                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1269                                                 <tr>
1270                                                 <td>ID</td><td>1001</td>
1271                                                 </tr><tr>
1272                                                 <td>FName</td><td>Mahesh</td>
1273                                                 </tr><tr>
1274                                                 <td>LName</td><td>Chand</td>
1275                                                 </tr><tr>
1276                                                 <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView1$ctl01','')"">Update</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','Cancel$0')"">Cancel</a></td>
1277                                                 </tr><tr>
1278                                                 <td colspan=""2""><table border=""0"">
1279                                                 <tr>
1280                                                 <td><span>1</span></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$2')"">2</a></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$3')"">3</a></td>
1281                                                 </tr>
1282                                                 </table></td>
1283                                                 </tr>
1284                                                 </table>
1285                                                 </div>     
1286                                                 </div>";
1287                                         HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "AfterEditPostback");
1288                           
1289
1290                 }
1291
1292                 [Test]
1293                 [Category ("NunitWeb")]
1294                 [Category ("NotWorking")] 
1295                 public void DetailsView_DeletePostback ()
1296                 {                       
1297                         WebTest t = new WebTest ("DetailsViewDataActions.aspx");                        
1298                         string pageHTML = t.Run ();
1299                         Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDeletePostback");
1300                         FormRequest fr = new FormRequest (t.Response, "form1");
1301                         fr.Controls.Add ("__EVENTTARGET");
1302                         fr.Controls.Add ("__EVENTARGUMENT");
1303                         fr.Controls["__EVENTTARGET"].Value = "DetailsView1";
1304                         fr.Controls["__EVENTARGUMENT"].Value = "Delete$0";
1305                         t.Request = fr;
1306                         pageHTML = t.Run ();
1307                         pageHTML = pageHTML.Substring (pageHTML.IndexOf ("starttest") + 9, pageHTML.IndexOf ("endtest") - pageHTML.IndexOf ("starttest") - 9);
1308                         string origHtmlValue = @"   <div>
1309                                                    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
1310                                                  <div>
1311                                                 <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1312                                                 <tr>
1313                                                 <td>ID</td><td>1002</td>
1314                                                 </tr><tr>
1315                                                 <td>FName</td><td>Melanie</td>
1316                                                 </tr><tr>
1317                                                 <td>LName</td><td>Talmadge</td>
1318                                                 </tr><tr>
1319                                                 <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView1','Edit$0')"">Edit</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','Delete$0')"">Delete</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','New$0')"">New</a></td>
1320                                                 </tr><tr>
1321                                                 <td colspan=""2""><table border=""0"">
1322                                                 <tr>
1323                                                 <td><span>1</span></td><td><a href=""javascript:__doPostBack('DetailsView1','Page$2')"">2</a></td>
1324                                                 </tr>
1325                                                 </table></td>
1326                                                 </tr>
1327                                                 </table>
1328                                                 </div>    
1329                                                 </div>";
1330
1331                         HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "DeleteDataPostback");
1332                         Assert.AreEqual (false, pageHTML.Contains ("1001"), "AfterDeletePostback");
1333                         
1334                         
1335
1336                 }
1337
1338                 [Test]
1339                 [Category ("NunitWeb")]
1340                 [Category ("NotWorking")] 
1341                 public void DetailsView_InsertPostback ()
1342                 {
1343
1344                         WebTest t = new WebTest ("DetailsViewDataActions.aspx");
1345                         string pageHTML = t.Run ();
1346                         Assert.AreEqual (true, pageHTML.Contains ("1001"), "BeforeDeletePostback");
1347                         FormRequest fr = new FormRequest (t.Response, "form1");
1348                         fr.Controls.Add ("__EVENTTARGET");
1349                         fr.Controls.Add ("__EVENTARGUMENT");
1350                         fr.Controls["__EVENTTARGET"].Value = "DetailsView1";
1351                         fr.Controls["__EVENTARGUMENT"].Value = "New$0";
1352                         t.Request = fr;                 
1353                         pageHTML = t.Run ();
1354                         pageHTML = pageHTML.Substring (pageHTML.IndexOf ("starttest") + 9, pageHTML.IndexOf ("endtest") - pageHTML.IndexOf ("starttest") - 9);
1355                         string origHtmlValue = @" <div>
1356                         &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;
1357                          <div>
1358                         <table cellspacing=""0"" rules=""all"" border=""1"" id=""DetailsView1"" style=""height:50px;width:125px;border-collapse:collapse;"">
1359                         <tr>
1360                         <td>ID</td><td><input name=""DetailsView1$ctl01"" type=""text"" title=""ID"" /></td>
1361                         </tr><tr>
1362                         <td>FName</td><td><input name=""DetailsView1$ctl02"" type=""text"" title=""FName"" /></td>
1363                         </tr><tr>
1364                         <td>LName</td><td><input name=""DetailsView1$ctl03"" type=""text"" title=""LName"" /></td>
1365                         </tr><tr>
1366                         <td colspan=""2""><a href=""javascript:__doPostBack('DetailsView1$ctl04','')"">Insert</a>&nbsp;<a href=""javascript:__doPostBack('DetailsView1','Cancel$-1')"">Cancel</a></td>
1367                         </tr>
1368                         </table>
1369                         </div>    
1370                         </div>";    
1371
1372                         HtmlDiff.AssertAreEqual (origHtmlValue, pageHTML, "InsertDataPostback");
1373                 }
1374
1375
1376                 [Test]
1377                 [Category ("NotWorking")] 
1378                 public void DetailsView_ViewState ()
1379                 {
1380                         PokerDetailsView dv = new PokerDetailsView ();
1381                         PokerDetailsView copy = new PokerDetailsView ();
1382                         dv.HeaderText = "Header";
1383                         dv.GridLines = GridLines.Vertical;
1384                         dv.CssClass = "style.css";
1385                         object state = dv.SaveState ();
1386                         copy.LoadState (state);
1387                         Assert.AreEqual ("Header", copy.HeaderText, "ViewStateHeaderText");
1388                         Assert.AreEqual (GridLines.Vertical, copy.GridLines, "ViewStateGridLines");
1389                         Assert.AreEqual ("style.css", copy.CssClass, "ViewStateCssClass");
1390                 }
1391
1392                 [Test]
1393                 [Category ("NotWorking")] 
1394                 public void DetailsView_ControlState ()
1395                 {
1396
1397                         PokerDetailsView dv = new PokerDetailsView ();
1398                         PokerDetailsView copy = new PokerDetailsView ();
1399                         string[] keys = new String[2];
1400                         keys[0] = "key1";
1401                         keys[1] = "key2";
1402                         dv.DataKeyNames = keys;
1403                         dv.BackImageUrl = "photo.jpg";
1404                         dv.DefaultMode = DetailsViewMode.Insert;
1405                         object state = dv.DoSaveControlState ();
1406                         copy.DoLoadControlState (state);
1407                         Assert.AreEqual ("key1", copy.DataKeyNames[0], "ControlStateDataKeyValue");
1408                         Assert.AreEqual ("key2", copy.DataKeyNames[1], "ControlStateDataKeyValue2");
1409                         Assert.AreEqual (DetailsViewMode.Insert, copy.DefaultMode, "ControlStateDefaultMode");
1410
1411                 }
1412
1413                 //events
1414                 private bool init;
1415                 private bool itemCommand;
1416                 private bool itemCreated;
1417                 private bool itemDeleted;
1418                 private bool itemDeleting;
1419                 private bool itemInserted;
1420                 private bool itemInserting;
1421                 private bool itemUpdated;
1422                 private bool itemUpdating;
1423                 private bool modeChanged;
1424                 private bool modeChanging;
1425                 private bool pageIndexChanged;
1426                 private bool pageIndexChanging;
1427                 private bool pagePreLoad;
1428                 private bool dataSourceViewChanged;
1429                 private bool preRender;
1430                 private bool unload;
1431                 private int newPageIndex;
1432
1433                 public void ResetEvents ()
1434                 {
1435                         init = false;
1436                         itemCommand = false;
1437                         itemCreated = false;
1438                         itemDeleted = false;
1439                         itemDeleting = false;
1440                         itemInserted = false;
1441                         itemInserting = false;
1442                         itemUpdated = false;
1443                         itemUpdating = false;
1444                         modeChanged = false;
1445                         modeChanging = false;
1446                         pageIndexChanged = false;
1447                         pageIndexChanging = false;
1448                         pagePreLoad = false;
1449                         dataSourceViewChanged = false;
1450                         preRender = false;
1451                         unload = false;         
1452                 }
1453
1454                 [Test]
1455                 [Category ("NotWorking")] 
1456                 public void DetailsView_BubbleEvents ()
1457                 {
1458                         ResetEvents ();
1459                         DetailsViewCommandEventArgs com;
1460                         PokerDetailsView dv = new PokerDetailsView ();\r
1461                         dv.DataSource = TableObject.CreateDataTable ();
1462                         Page page = new Page ();
1463                         Button bt = new Button ();
1464                         dv.AllowPaging = true;
1465                         page.Controls.Add (dv);         
1466                         dv.ItemCommand += new DetailsViewCommandEventHandler (dv_ItemCommand );
1467                         dv.ItemDeleted += new DetailsViewDeletedEventHandler (dv_ItemDeleted );
1468                         //Delete
1469                         dv.ItemDeleting += new DetailsViewDeleteEventHandler (dv_ItemDeleting );
1470                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Delete", null));
1471                         Assert.AreEqual (false, itemCommand, "BeforeDeleteCommandBubbleEvent");
1472                         Assert.AreEqual (false, itemDeleting, "BeforeDeleteBubbleEvent");                       
1473                         dv.DoOnBubbleEvent (bt, com);
1474                         Assert.AreEqual (true, itemDeleting, "AfterDeleteBubbleEvent");                 
1475                         Assert.AreEqual (true, itemCommand, "AfterDeleteCommandBubbleEvent");
1476
1477                         //Insert
1478                         itemCommand = false;
1479                         dv.ItemInserting += new DetailsViewInsertEventHandler (dv_ItemInserting);
1480                         dv.ChangeMode (DetailsViewMode.Insert);
1481                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Insert", null));
1482                         Assert.AreEqual (false, itemCommand, "BeforeInsertCommandBubbleEvent");
1483                         Assert.AreEqual (false, itemInserting, "BeforeInsertBubbleEvent");
1484                         dv.DoOnBubbleEvent (bt, com);
1485                         Assert.AreEqual (true, itemCommand, "AfterInsertCommandBubbleEvent");
1486                         Assert.AreEqual (true, itemInserting, "AfterInsertBubbleEvent");
1487
1488                         //Update
1489                         itemCommand = false;
1490                         dv.ItemUpdating += new DetailsViewUpdateEventHandler (dv_ItemUpdating);
1491                         dv.ChangeMode (DetailsViewMode.Edit);
1492                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Update", null));
1493                         Assert.AreEqual (false, itemUpdating, "BeforeUpdateEvent");
1494                         Assert.AreEqual (false, itemCommand, "BeforeUpdateCommandEvent");
1495                         dv.DoOnBubbleEvent (bt, com);
1496                         Assert.AreEqual (true, itemCommand, "AfterUpdateCommandBubbleEvent");
1497                         Assert.AreEqual (true, itemUpdating, "AfterUpdateBubbleEvent");
1498
1499                         //Cancel 
1500                         itemCommand = false;
1501                         dv.ModeChanging += new DetailsViewModeEventHandler (dv_ModeChanging);
1502                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Cancel", null));
1503                         Assert.AreEqual (false, itemCommand, "BeforeCancelCommandBubbleEvent");
1504                         Assert.AreEqual (false, modeChanging, "BeforeCancelBubbleEvent");
1505                         dv.DoOnBubbleEvent (bt, com);
1506                         Assert.AreEqual (true, itemCommand, "AfterCancelCommandBubbleEvent");
1507                         Assert.AreEqual (true, modeChanging, "AfterCancelBubbleEvent");
1508
1509                         //Edit
1510                         itemCommand = false;
1511                         modeChanging = false;
1512                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Edit", null));
1513                         Assert.AreEqual (false, itemCommand, "BeforeEditCommandBubbleEvent");
1514                         Assert.AreEqual (false, modeChanging, "BeforeEditBubbleEvent");
1515                         dv.DoOnBubbleEvent (bt, com);
1516                         Assert.AreEqual (true, itemCommand, "AfterEditCommandBubbleEvent");
1517                         Assert.AreEqual (true, modeChanging, "AfterEditBubbleEvent");
1518
1519                         //New
1520                         itemCommand = false;
1521                         modeChanging = false;
1522                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("New", null));
1523                         Assert.AreEqual (false, itemCommand, "BeforeNewCommandBubbleEvent");
1524                         Assert.AreEqual (false, modeChanging, "BeforeNewBubbleEvent");
1525                         dv.DoOnBubbleEvent (bt, com);
1526                         Assert.AreEqual (true, itemCommand, "AfterNewCommandBubbleEvent");
1527                         Assert.AreEqual (true, modeChanging, "AfterNewBubbleEvent");
1528
1529                         //Page Index default
1530                         itemCommand = false;
1531                         dv.PageIndexChanging += new DetailsViewPageEventHandler (dv_PageIndexChanging );
1532                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", null));
1533                         Assert.AreEqual (false, itemCommand, "BeforePageCommandBubbleEvent");
1534                         Assert.AreEqual (false, pageIndexChanging, "BeforePageBubbleEvent");
1535                         dv.DoOnBubbleEvent (bt, com);
1536                         Assert.AreEqual (true, itemCommand, "AfterPageCommandBubbleEvent");
1537                         Assert.AreEqual (true, pageIndexChanging, "AfterPageBubbleEvent");
1538
1539                         //Next Page
1540                         itemCommand = false;
1541                         pageIndexChanging = false;
1542                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Next"));
1543                         Assert.AreEqual (false, itemCommand, "BeforeNextPageCommandBubbleEvent");
1544                         Assert.AreEqual (false, pageIndexChanging, "BeforeNextPageBubbleEvent");
1545                         dv.DoOnBubbleEvent (bt, com);
1546                         Assert.AreEqual (true, itemCommand, "AfterNextPageCommandBubbleEvent");
1547                         Assert.AreEqual (true, pageIndexChanging, "AfterNextPageBubbleEvent");
1548                         Assert.AreEqual (1, newPageIndex, "NextPageIndex");
1549
1550                         //Prev Page
1551                         itemCommand = false;
1552                         pageIndexChanging = false;
1553                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Prev"));
1554                         Assert.AreEqual (false, itemCommand, "BeforePrevPageCommandBubbleEvent");
1555                         Assert.AreEqual (false, pageIndexChanging, "BeforePrevPageBubbleEvent");
1556                         dv.DoOnBubbleEvent (bt, com);
1557                         Assert.AreEqual (true, itemCommand, "AfterPrevPageCommandBubbleEvent");
1558                         Assert.AreEqual (true, pageIndexChanging, "AfterPrevPageBubbleEvent");
1559                         Assert.AreEqual (-1, newPageIndex, "PrevPageIndex");
1560
1561                         //First Page
1562                         itemCommand = false;
1563                         pageIndexChanging = false;
1564                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "First"));
1565                         Assert.AreEqual (false, itemCommand, "BeforeFirstPageCommandBubbleEvent");
1566                         Assert.AreEqual (false, pageIndexChanging, "BeforeFirstPageBubbleEvent");
1567                         dv.DoOnBubbleEvent (bt, com);
1568                         Assert.AreEqual (true, itemCommand, "AfterFirstPageCommandBubbleEvent");
1569                         Assert.AreEqual (true, pageIndexChanging, "AfterFirstPageBubbleEvent");
1570                         Assert.AreEqual (0, newPageIndex, "FirstPageIndex");
1571
1572                         //Last Page
1573                         itemCommand = false;
1574                         pageIndexChanging = false;
1575                         com = new DetailsViewCommandEventArgs (bt, new CommandEventArgs ("Page", "Last"));
1576                         Assert.AreEqual (false, itemCommand, "BeforeLastPageCommandBubbleEvent");
1577                         Assert.AreEqual (false, pageIndexChanging, "BeforeLastPageBubbleEvent");
1578                         dv.DoOnBubbleEvent (bt, com);
1579                         Assert.AreEqual (true, itemCommand, "AfterLastPageCommandBubbleEvent");
1580                         Assert.AreEqual (true, pageIndexChanging, "AfterLastPageBubbleEvent");
1581                         Assert.AreEqual (-1, newPageIndex, "FirstPageIndex");
1582
1583                 }
1584
1585                 [Test]
1586                 [Category ("NotWorking")] 
1587                 public void DetailsView_Events ()
1588                 {
1589                         ResetEvents ();
1590                         PokerDetailsView dv = new PokerDetailsView ();
1591                         Button bt = new Button ();
1592                         Page pg = new Page ();\r
1593                         dv.Page = pg;
1594                         dv.Init += new EventHandler (dv_Init);
1595                         dv.ItemCommand += new DetailsViewCommandEventHandler (dv_ItemCommand);
1596                         dv.ItemCreated += new EventHandler (dv_ItemCreated);
1597                         dv.ItemDeleted += new DetailsViewDeletedEventHandler (dv_ItemDeleted);
1598                         dv.ItemDeleting += new DetailsViewDeleteEventHandler (dv_ItemDeleting);
1599                         dv.ItemInserted += new DetailsViewInsertedEventHandler (dv_ItemInserted);
1600                         dv.ItemInserting += new DetailsViewInsertEventHandler (dv_ItemInserting);
1601                         dv.ItemUpdated += new DetailsViewUpdatedEventHandler (dv_ItemUpdated);
1602                         dv.ItemUpdating += new DetailsViewUpdateEventHandler (dv_ItemUpdating);
1603                         dv.ModeChanged += new EventHandler (dv_ModeChanged);
1604                         dv.ModeChanging += new DetailsViewModeEventHandler (dv_ModeChanging);
1605                         dv.PageIndexChanged += new EventHandler (dv_PageIndexChanged);
1606                         dv.PageIndexChanging += new DetailsViewPageEventHandler (dv_PageIndexChanging);
1607                         dv.DataBound += new EventHandler (dv_DataBound);
1608                         dv.PreRender += new EventHandler (dv_PreRender);
1609                         dv.Unload += new EventHandler (dv_Unload);                      
1610                         Assert.AreEqual (false, init, "BeforeInit");
1611                         dv.DoOnInit (new EventArgs ());
1612                         Assert.AreEqual (true, init, "AfterInit");
1613                         Assert.AreEqual (false, itemCommand, "BeforeItemCommand");
1614                         dv.DoOnItemCommand (new DetailsViewCommandEventArgs (bt,new CommandEventArgs ("",null)));
1615                         Assert.AreEqual (true, itemCommand , "AfterItemCommand");
1616                         Assert.AreEqual (false, itemCreated, "BeforeItemCreated");
1617                         dv.DoOnItemCreated (new EventArgs ());
1618                         Assert.AreEqual (true, itemCreated, "AfterItemCreated");
1619                         Assert.AreEqual (false, itemDeleted, "BeforeItemDeleted");
1620                         dv.DoOnItemDeleted (new DetailsViewDeletedEventArgs (3, new Exception ()));
1621                         Assert.AreEqual (true, itemDeleted, "AfterItemDeleted");
1622                         Assert.AreEqual (false, itemDeleting, "BeforeItemDeleting");
1623                         dv.DoOnItemDeleting(new DetailsViewDeleteEventArgs (2)); 
1624                         Assert.AreEqual (true, itemDeleting, "AfterItemDeleting");
1625                         Assert.AreEqual (false, itemInserted, "BeforeItemInserted");
1626                         dv.DoOnItemInserted (new DetailsViewInsertedEventArgs (3,new Exception()));
1627                         Assert.AreEqual (true, itemInserted, "AfterItemInserted");
1628                         Assert.AreEqual (false, itemInserting, "BeforeItemInserting");
1629                         dv.DoOnItemInserting (new DetailsViewInsertEventArgs (bt));
1630                         Assert.AreEqual (true, itemInserting, "AfterItemInserting");
1631                         Assert.AreEqual (false, itemUpdated, "BeforeItemUpdated");
1632                         dv.DoOnItemUpdated (new DetailsViewUpdatedEventArgs (2,new Exception()));
1633                         Assert.AreEqual (true, itemUpdated, "AfterItemUpdated");
1634                         Assert.AreEqual (false, itemUpdating, "BeforeItemUpdating");
1635                         dv.DoOnItemUpdating (new DetailsViewUpdateEventArgs (bt));
1636                         Assert.AreEqual (true, itemUpdating, "AfterItemUpdating");
1637                         Assert.AreEqual (false, modeChanged, "BeforeModeChanged");
1638                         dv.DoOnModeChanged (new EventArgs ());
1639                         Assert.AreEqual (true, modeChanged, "AfterModeChanged");
1640                         Assert.AreEqual (false, modeChanging, "BeforeModeChanging");
1641                         dv.DoOnModeChanging (new DetailsViewModeEventArgs (DetailsViewMode.Insert ,false));
1642                         Assert.AreEqual (true, modeChanging, "AfterModeChanging");
1643                         Assert.AreEqual (false, pageIndexChanged, "BeforePageIndexChanged");
1644                         dv.DoOnPageIndexChanged (new EventArgs ());
1645                         Assert.AreEqual (true, pageIndexChanged, "AfterPageIndexChanged");
1646                         Assert.AreEqual (false, pageIndexChanging, "BeforePageIndexChanging");
1647                         dv.DoOnPageIndexChanging (new DetailsViewPageEventArgs (2));
1648                         Assert.AreEqual (true, pageIndexChanging, "AfterPageIndexChanging");
1649                         //Assert.AreEqual (false, pagePreLoad, "BeforePagePreLoad");
1650                         //dv.DoOnPagePreLoad (pg, new EventArgs ());
1651                         //Assert.AreEqual (true, pagePreLoad, "AfterPagePreLoad");
1652                         Assert.AreEqual (false, preRender, "BeforePreRender");                  
1653                         dv.DoOnPreRender(new EventArgs ());
1654                         Assert.AreEqual (true, preRender, "AfterPreRender");
1655                         Assert.AreEqual (false, unload, "BeforeUnload");
1656                         dv.DoOnUnload (new EventArgs ());
1657                         Assert.AreEqual (true, unload, "AfterUnload");
1658                         //Assert.AreEqual (false, dataSourceViewChanged, "BeforeDataSourceViewChanged");
1659                         //dv.DoOnDataSourceViewChanged (bt, new EventArgs ());
1660                         //Assert.AreEqual (true, dataSourceViewChanged, "AfterDataSourceViewChanged");
1661
1662
1663
1664                         
1665                 }
1666
1667                 void dv_DataBound(object sender, EventArgs e)
1668                 {
1669                         dataSourceViewChanged = true;
1670                 }
1671
1672                 
1673                 void dv_Unload (object sender, EventArgs e)
1674                 {
1675                         unload = true;
1676                 }
1677
1678                 void dv_PreRender (object sender, EventArgs e)
1679                 {
1680                         preRender = true;                       
1681                 }
1682
1683                 void dv_PageIndexChanging (object sender, DetailsViewPageEventArgs e)
1684                 {
1685                         pageIndexChanging = true;
1686                         newPageIndex = e.NewPageIndex;
1687                 }
1688
1689                 void dv_PageIndexChanged (object sender, EventArgs e)
1690                 {
1691                         pageIndexChanged = true;
1692                 }
1693
1694                 void dv_ModeChanging (object sender, DetailsViewModeEventArgs e)
1695                 {
1696                         modeChanging = true;
1697                 }
1698
1699                 void dv_ModeChanged (object sender, EventArgs e)
1700                 {
1701                         modeChanged = true;
1702
1703                 }
1704
1705                 
1706
1707                 void dv_ItemUpdating (object sender, DetailsViewUpdateEventArgs e)
1708                 {
1709                         itemUpdating = true;
1710                 }
1711
1712                 void dv_ItemUpdated (object sender, DetailsViewUpdatedEventArgs e)
1713                 {
1714                         itemUpdated = true;
1715                 }
1716
1717                 void dv_ItemInserting (object sender, DetailsViewInsertEventArgs e)
1718                 {
1719                         itemInserting = true;
1720                 }
1721
1722                 void dv_ItemInserted (object sender, DetailsViewInsertedEventArgs e)
1723                 {
1724                         itemInserted = true;
1725                 }
1726
1727                 void dv_ItemDeleting (object sender, DetailsViewDeleteEventArgs e)
1728                 {
1729                         itemDeleting = true;
1730                 }
1731
1732                 void dv_ItemDeleted (object sender, DetailsViewDeletedEventArgs e)
1733                 {
1734                         itemDeleted = true;
1735                 }
1736
1737                 void dv_ItemCreated (object sender, EventArgs e)
1738                 {
1739                         itemCreated = true;
1740                 }
1741
1742                 void dv_ItemCommand (object sender, DetailsViewCommandEventArgs e)
1743                 {
1744                         itemCommand = true;
1745                 }
1746
1747                 void dv_Init (object sender, EventArgs e)
1748                 {
1749                         init = true;
1750                 }
1751
1752                 //Exceptions
1753
1754                 [Test]
1755                 [Category ("NotWorking")] 
1756                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
1757                 public void CellPaddingException ()
1758                 {
1759                         PokerDetailsView dv = new PokerDetailsView ();
1760                         dv.CellPadding = -2;
1761                 }
1762
1763                 [Test]
1764                 [Category ("NotWorking")] 
1765                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
1766                 public void CellSpacingException ()
1767                 {
1768                         PokerDetailsView dv = new PokerDetailsView ();
1769                         dv.CellSpacing = -5;
1770                 }
1771
1772                 [Test]
1773                 [Category ("NotWorking")] 
1774                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
1775                 public void PageIndexException ()
1776                 {
1777                         PokerDetailsView dv = new PokerDetailsView ();
1778                         dv.PageIndex = -5;
1779                 }
1780
1781                 [Test]
1782                 [Category ("NotWorking")] 
1783                 [ExpectedException (typeof (HttpException))]
1784                 public void InsertItemException ()
1785                 {
1786                         PokerDetailsView dv = new PokerDetailsView ();
1787                         dv.InsertItem (true);
1788                 }
1789
1790                 [Test]
1791                 [Category ("NotWorking")] 
1792                 [ExpectedException (typeof (HttpException))]
1793                 public void UpdateItemException ()
1794                 {
1795                         PokerDetailsView dv = new PokerDetailsView ();
1796                         dv.UpdateItem (true);
1797                 }
1798
1799
1800
1801         }
1802
1803         public class DTemplate : ITemplate
1804         {
1805
1806                 Label l = new Label ();
1807 #region ITemplate Members
1808
1809                 public void InstantiateIn (Control container)
1810                 {
1811                         container.Controls.Add (l);
1812
1813                 }
1814
1815                 public void SetDataItem (object value)
1816                 {
1817                         l.Text = value.ToString ();
1818                 }
1819
1820                 #endregion
1821         }
1822
1823         public class TableObject
1824         {
1825                 public static DataTable ds = CreateDataTable ();
1826                 public static DataTable GetMyData ()
1827                 {
1828                         return ds;
1829                 }
1830
1831                 public static DataTable Delete (string ID, string FName, string LName)
1832                 {
1833                         DataRow dr = ds.Rows.Find (ID);\r
1834                         Assert.IsNotNull (dr);\r
1835                         int oldCount = ds.Rows.Count;
1836                         ds.Rows.Remove (dr);\r
1837                         Assert.AreEqual (oldCount - 1, ds.Rows.Count);
1838                         return ds;
1839
1840                 }
1841
1842                 public static DataTable Update (string ID, string FName, string LName)
1843                 {
1844                         DataRow dr = ds.Rows.Find (ID);
1845                         if (dr == null) {
1846                                 Label lbl = new Label ();
1847                                 lbl.Text = "ID doesn't exist. update only FName and LName";
1848                                 return ds;
1849                         }
1850                         dr["FName"] = FName;
1851                         dr["LName"] = LName;
1852                         return ds;
1853
1854                 }
1855
1856                 public static DataTable Insert (string ID, string FName, string LName)
1857                 {
1858                         DataRow dr = ds.NewRow ();
1859                         dr["ID"] = ID;
1860                         dr["FName"] = FName;
1861                         dr["LName"] = LName;\r
1862                         int oldCount = ds.Rows.Count;\r
1863                         ds.Rows.Add (dr);\r
1864                         Assert.AreEqual (oldCount + 1, ds.Rows.Count);\r
1865                         return ds;
1866                 }
1867
1868
1869                 public static DataTable CreateDataTable ()
1870                 {
1871
1872                         DataTable aTable = new DataTable ("A");
1873                         DataColumn dtCol;
1874                         DataRow dtRow;
1875
1876                         // Create ID column and add to the DataTable.
1877
1878                         dtCol = new DataColumn ();
1879                         dtCol.DataType = Type.GetType ("System.Int32");
1880                         dtCol.ColumnName = "ID";
1881                         dtCol.AutoIncrement = true;
1882                         dtCol.Caption = "ID";
1883                         dtCol.ReadOnly = true;
1884                         dtCol.Unique = true;
1885
1886                         // Add the column to the DataColumnCollection.
1887
1888                         aTable.Columns.Add (dtCol);
1889
1890                         // Create Name column and add to the table
1891
1892                         dtCol = new DataColumn ();
1893                         dtCol.DataType = Type.GetType ("System.String");
1894                         dtCol.ColumnName = "FName";
1895                         dtCol.AutoIncrement = false;
1896                         dtCol.Caption = "First Name";
1897                         dtCol.ReadOnly = false;
1898                         dtCol.Unique = false;
1899                         aTable.Columns.Add (dtCol);
1900
1901
1902                         // Create Last Name column and add to the table.
1903
1904                         dtCol = new DataColumn ();
1905                         dtCol.DataType = Type.GetType ("System.String");
1906                         dtCol.ColumnName = "LName";
1907                         dtCol.AutoIncrement = false;
1908                         dtCol.Caption = "Last Name";
1909                         dtCol.ReadOnly = false;
1910                         dtCol.Unique = false;
1911                         aTable.Columns.Add (dtCol);
1912
1913
1914                         // Create three rows to the table
1915                         dtRow = aTable.NewRow ();
1916                         dtRow["ID"] = 1001;
1917                         dtRow["FName"] = "Mahesh";
1918                         dtRow["LName"] = "Chand";
1919                         aTable.Rows.Add (dtRow);
1920
1921
1922                         dtRow = aTable.NewRow ();
1923                         dtRow["ID"] = 1002;
1924                         dtRow["FName"] = "Melanie";
1925                         dtRow["LName"] = "Talmadge";
1926                         aTable.Rows.Add (dtRow);
1927
1928                         dtRow = aTable.NewRow ();
1929                         dtRow["ID"] = 1003;
1930                         dtRow["FName"] = "Vinay";
1931                         dtRow["LName"] = "Bansal";
1932                         aTable.Rows.Add (dtRow);
1933
1934                         aTable.PrimaryKey = new DataColumn[] { aTable.Columns["ID"] };                  
1935                         return aTable;
1936
1937                 }
1938         }
1939 }
1940 #endif
1941