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