2010-01-20 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / TreeViewTest.cs
1 //
2 // System.Web.UI.WebControls.TreeViewTest.cs
3 //      - Unit tests for System.Web.UI.Webcontrols.TreeView
4 // 
5 //
6 // Authors:
7 //      Chris Toshok (toshok@ximian.com)
8 //  Hagit Yidov (hagity@mainsoft.com
9 //
10 // (C) 2005 Novell, Inc (http://www.novell.com)
11 //
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
19 // 
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
22 // 
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 //
31 //
32
33 #if NET_2_0
34 using System;
35 using System.IO;
36 using System.Globalization;
37 using System.Web;
38 using System.Web.UI;
39 using System.Web.UI.WebControls;
40 using MonoTests.stand_alone.WebHarness;
41 using MonoTests.SystemWeb.Framework;
42 using System.Xml;
43 using System.Collections.Specialized;
44 using System.Threading;
45
46 using NUnit.Framework;
47
48 namespace MonoTests.System.Web.UI.WebControls {
49         public class TreeViewPoker : TreeView {
50         }
51         class PokerTreeView : TreeView {
52                 // View state Stuff
53                 public PokerTreeView () {
54                         TrackViewState ();
55                 }
56                 public object SaveState () {
57                         return SaveViewState ();
58                 }
59                 public void LoadState (object o) {
60                         LoadViewState (o);
61                 }
62                 public StateBag StateBag {
63                         get { return base.ViewState; }
64                 }
65
66                 public HtmlTextWriterTag TagKeyFromBase {
67                         get { return base.TagKey; }
68                 }
69
70                 // Protected Methods
71                 public void DataBindFromBase (bool raiseOnDataBinding) {
72                         base.DataBind (raiseOnDataBinding);
73                 }
74                 public void AddAttributesToRenderBase (HtmlTextWriter writer) {
75                         base.AddAttributesToRender (writer);
76                 }
77                 public ControlCollection CreateControlCollectionBase () {
78                         return (base.CreateControlCollection ());
79                 }
80                 public TreeNode CreateNodeBase () {
81                         TreeNode tn = base.CreateNode ();
82                         tn.Text = "New Tree Node";
83                         return (tn);
84                 }
85                 public void RaiseCallbackEventBase (string eventArgument) {
86                         base.RaiseCallbackEvent (eventArgument);
87                 }
88                 public string GetCallbackResultBase () {
89                         return (base.GetCallbackResult ());
90                 }
91                 public void SetNodeDataBoundBase (TreeNode node, bool dataBound) {
92                         base.SetNodeDataBound (node, dataBound);
93                 }
94                 public void SetNodeDataItemBase (TreeNode node, object dataItem) {
95                         base.SetNodeDataItem (node, dataItem);
96                 }
97                 public void SetNodeDataPathBase (TreeNode node, string dataPath) {
98                         base.SetNodeDataPath (node, dataPath);
99                 }
100                 public void PerformDataBindingBase () {
101                         base.PerformDataBinding ();
102                 }
103
104                 // Events
105                 public void OnInitBase (EventArgs e) { base.OnInit (e); }
106                 public void OnPreRenderBase (EventArgs e) { base.OnPreRender (e); }
107                 public void OnSelectedNodeChangedBase (EventArgs e) { base.OnSelectedNodeChanged (e); }
108                 public void OnTreeNodeCheckChangedBase (TreeNodeEventArgs e) { base.OnTreeNodeCheckChanged (e); }
109                 public void OnTreeNodeCollapsedBase (TreeNodeEventArgs e) { base.OnTreeNodeCollapsed (e); }
110                 public void OnTreeNodeDataBoundBase (TreeNodeEventArgs e) { base.OnTreeNodeDataBound (e); }
111                 public void OnTreeNodeExpandedBase (TreeNodeEventArgs e) { base.OnTreeNodeExpanded (e); }
112                 public void OnTreeNodePopulateBase (TreeNodeEventArgs e) { base.OnTreeNodePopulate (e); }
113                 public void OnBubbleEventBase (Object o, EventArgs e) { base.OnBubbleEvent (o, e); }
114         }
115
116         [TestFixture]
117         public class TreeViewTest {
118
119                 [TestFixtureSetUp]
120                 public void SetUp ()
121                 {
122                         WebTest.CopyResource (GetType (), "NoEventValidation.aspx", "NoEventValidation.aspx");
123                 }
124
125                 [Test]
126                 public void Defaults () {
127                         TreeViewPoker p = new TreeViewPoker ();
128
129                         Assert.AreEqual ("Collapse {0}", p.CollapseImageToolTip, "A1");
130                         Assert.IsTrue (p.AutoGenerateDataBindings, "A2");
131                         Assert.AreEqual ("", p.CollapseImageUrl, "A3");
132                         Assert.IsNotNull (p.DataBindings, "A4");
133                         Assert.AreEqual (0, p.DataBindings.Count, "A4.1");
134                         Assert.IsTrue (p.EnableClientScript, "A5");
135                         Assert.AreEqual (-1, p.ExpandDepth, "A6");
136                         Assert.AreEqual ("Expand {0}", p.ExpandImageToolTip, "A7");
137                         Assert.AreEqual ("", p.ExpandImageUrl, "A8");
138                         Assert.IsNotNull (p.HoverNodeStyle, "A9");
139                         Assert.AreEqual (TreeViewImageSet.Custom, p.ImageSet, "A10");
140                         Assert.IsNotNull (p.LeafNodeStyle, "A11");
141                         Assert.IsNotNull (p.LevelStyles, "A12");
142                         Assert.AreEqual (0, p.LevelStyles.Count, "A12.1");
143                         Assert.AreEqual ("", p.LineImagesFolder, "A13");
144                         Assert.AreEqual (-1, p.MaxDataBindDepth, "A14");
145                         Assert.AreEqual (20, p.NodeIndent, "A15");
146                         Assert.IsNotNull (p.Nodes, "A16");
147                         Assert.AreEqual (0, p.Nodes.Count, "A16.1");
148                         Assert.IsNotNull (p.NodeStyle, "A17");
149                         Assert.IsFalse (p.NodeWrap, "A18");
150                         Assert.AreEqual ("", p.NoExpandImageUrl, "A19");
151                         Assert.IsNotNull (p.ParentNodeStyle, "A20");
152                         Assert.AreEqual ('/', p.PathSeparator, "A21");
153                         Assert.IsTrue (p.PopulateNodesFromClient, "A22");
154                         Assert.IsNotNull (p.RootNodeStyle, "A23");
155                         Assert.IsNotNull (p.SelectedNodeStyle, "A24");
156                         Assert.AreEqual (TreeNodeTypes.None, p.ShowCheckBoxes, "A25");
157                         Assert.IsTrue (p.ShowExpandCollapse, "A26");
158                         Assert.AreEqual ("Skip Navigation Links.", p.SkipLinkText, "A27");
159                         Assert.IsNull (p.SelectedNode, "A28");
160                         Assert.AreEqual ("", p.SelectedValue, "A29");
161                         Assert.AreEqual ("", p.Target, "A30");
162                         Assert.IsTrue (p.Visible, "A31");
163                 }
164
165                 [Test]
166                 public void TreeView_DefaultProperties () {
167                         PokerTreeView tv = new PokerTreeView ();
168                         Assert.AreEqual (0, tv.StateBag.Count, "ViewState.Count");
169                         // Public Properties
170                         Assert.AreEqual (true, tv.AutoGenerateDataBindings, "AutoGenerateDataBindings");
171                         Assert.AreEqual (0, tv.CheckedNodes.Count, "CheckedNodes");
172                         Assert.AreEqual ("Collapse {0}", tv.CollapseImageToolTip, "CollapseImageToolTip");
173                         Assert.AreEqual (string.Empty, tv.CollapseImageUrl, "CollapseImageUrl");
174                         Assert.AreEqual (0, tv.DataBindings.Count, "DataBindings");
175                         Assert.AreEqual (true, tv.EnableClientScript, "EnableClientScript");
176                         Assert.AreEqual (-1, tv.ExpandDepth, "ExpandDepth");
177                         Assert.AreEqual ("Expand {0}", tv.ExpandImageToolTip, "ExpandImageToolTip");
178                         Assert.AreEqual (string.Empty, tv.ExpandImageUrl, "ExpandImageUrl");
179                         Assert.AreEqual (TreeViewImageSet.Custom, tv.ImageSet, "ImageSet");
180                         Assert.AreEqual (0, tv.LevelStyles.Count, "LevelStyles");
181                         Assert.AreEqual (string.Empty, tv.LineImagesFolder, "LineImagesFolder");
182                         Assert.AreEqual (-1, tv.MaxDataBindDepth, "MaxDataBindDepth");
183                         Assert.AreEqual (20, tv.NodeIndent, "NodeIndent");
184                         Assert.AreEqual (0, tv.Nodes.Count, "Nodes");
185                         Assert.AreEqual (false, tv.NodeWrap, "NodeWrap");
186                         Assert.AreEqual (string.Empty, tv.NoExpandImageUrl, "NoExpandImageUrl");
187                         Assert.AreEqual (true, tv.PopulateNodesFromClient, "PopulateNodesFromClient");
188                         Assert.AreEqual (null, tv.SelectedNode, "SelectedNode");
189                         Assert.AreEqual (string.Empty, tv.SelectedValue, "SelectedValue");
190                         Assert.AreEqual (TreeNodeTypes.None, tv.ShowCheckBoxes, "ShowCheckBoxes");
191                         Assert.AreEqual (true, tv.ShowExpandCollapse, "ShowExpandCollapse");
192                         Assert.AreEqual (false, tv.ShowLines, "ShowLines");
193                         Assert.AreEqual ("Skip Navigation Links.", tv.SkipLinkText, "SkipLinkText");
194                         Assert.AreEqual (string.Empty, tv.Target, "Target");
195                         Assert.AreEqual (true, tv.Visible, "Visible");
196                         // Protected Properties
197                         Assert.AreEqual (HtmlTextWriterTag.Div, tv.TagKeyFromBase, "TagKey");
198                 }
199
200                 [Test]
201                 public void Treeview_AssignToDefaultProperties () {
202                         PokerTreeView tv = new PokerTreeView ();
203                         Assert.AreEqual (0, tv.StateBag.Count, "ViewState.Count");
204
205                         tv.AutoGenerateDataBindings = true;
206                         Assert.AreEqual (true, tv.AutoGenerateDataBindings, "AutoGenerateDataBindings");
207                         Assert.AreEqual (1, tv.StateBag.Count, "ViewState.Count-1");
208
209                         //tv.CheckedNodes.Add (new TreeNode ());
210                         //Assert.AreEqual (1, tv.CheckedNodes.Count, "CheckedNodes");
211                         //Assert.AreEqual (1, tv.StateBag.Count, "ViewState.Count-2");
212
213                         tv.CollapseImageToolTip = "Collapse {0}";
214                         Assert.AreEqual ("Collapse {0}", tv.CollapseImageToolTip, "CollapseImageToolTip");
215                         Assert.AreEqual (2, tv.StateBag.Count, "ViewState.Count-3");
216
217                         tv.CollapseImageUrl = string.Empty;
218                         Assert.AreEqual (string.Empty, tv.CollapseImageUrl, "CollapseImageUrl");
219                         Assert.AreEqual (3, tv.StateBag.Count, "ViewState.Count-4");
220
221                         tv.DataBindings.Add (new TreeNodeBinding ());
222                         Assert.AreEqual (1, tv.DataBindings.Count, "DataBindings");
223                         Assert.AreEqual (3, tv.StateBag.Count, "ViewState.Count-5");
224
225                         tv.EnableClientScript = true;
226                         Assert.AreEqual (true, tv.EnableClientScript, "EnableClientScript");
227                         Assert.AreEqual (4, tv.StateBag.Count, "ViewState.Count-6");
228
229                         tv.ExpandDepth = -1;
230                         Assert.AreEqual (-1, tv.ExpandDepth, "ExpandDepth");
231                         Assert.AreEqual (5, tv.StateBag.Count, "ViewState.Count-7");
232
233                         tv.ExpandImageToolTip = "Expand {0}";
234                         Assert.AreEqual ("Expand {0}", tv.ExpandImageToolTip, "ExpandImageToolTip");
235                         Assert.AreEqual (6, tv.StateBag.Count, "ViewState.Count-8");
236
237                         tv.ExpandImageUrl = string.Empty;
238                         Assert.AreEqual (string.Empty, tv.ExpandImageUrl, "ExpandImageUrl");
239                         Assert.AreEqual (7, tv.StateBag.Count, "ViewState.Count-9");
240
241                         tv.ImageSet = TreeViewImageSet.Custom;
242                         Assert.AreEqual (TreeViewImageSet.Custom, tv.ImageSet, "ImageSet");
243                         Assert.AreEqual (8, tv.StateBag.Count, "ViewState.Count-10");
244
245                         tv.LevelStyles.Add (new TreeNodeStyle ());
246                         Assert.AreEqual (1, tv.LevelStyles.Count, "LevelStyles");
247                         Assert.AreEqual (8, tv.StateBag.Count, "ViewState.Count-11");
248
249                         tv.LineImagesFolder = string.Empty;
250                         Assert.AreEqual (string.Empty, tv.LineImagesFolder, "LineImagesFolder");
251                         Assert.AreEqual (9, tv.StateBag.Count, "ViewState.Count-12");
252
253                         tv.MaxDataBindDepth = -1;
254                         Assert.AreEqual (-1, tv.MaxDataBindDepth, "MaxDataBindDepth");
255                         Assert.AreEqual (10, tv.StateBag.Count, "ViewState.Count-13");
256
257                         tv.NodeIndent = 20;
258                         Assert.AreEqual (20, tv.NodeIndent, "NodeIndent");
259                         Assert.AreEqual (11, tv.StateBag.Count, "ViewState.Count-14");
260
261                         tv.Nodes.Add (new TreeNode ());
262                         Assert.AreEqual (1, tv.Nodes.Count, "Nodes");
263                         Assert.AreEqual (11, tv.StateBag.Count, "ViewState.Count-15");
264
265                         tv.NodeWrap = false;
266                         Assert.AreEqual (false, tv.NodeWrap, "NodeWrap");
267                         Assert.AreEqual (12, tv.StateBag.Count, "ViewState.Count-16");
268
269                         tv.NoExpandImageUrl = string.Empty;
270                         Assert.AreEqual (string.Empty, tv.NoExpandImageUrl, "NoExpandImageUrl");
271                         Assert.AreEqual (13, tv.StateBag.Count, "ViewState.Count-17");
272
273                         tv.PopulateNodesFromClient = true;
274                         Assert.AreEqual (true, tv.PopulateNodesFromClient, "PopulateNodesFromClient");
275                         Assert.AreEqual (14, tv.StateBag.Count, "ViewState.Count-18");
276
277                         tv.ShowCheckBoxes = TreeNodeTypes.None;
278                         Assert.AreEqual (TreeNodeTypes.None, tv.ShowCheckBoxes, "ShowCheckBoxes");
279                         Assert.AreEqual (15, tv.StateBag.Count, "ViewState.Count-19");
280
281                         tv.ShowExpandCollapse = true;
282                         Assert.AreEqual (true, tv.ShowExpandCollapse, "ShowExpandCollapse");
283                         Assert.AreEqual (16, tv.StateBag.Count, "ViewState.Count-20");
284
285                         tv.ShowLines = false;
286                         Assert.AreEqual (false, tv.ShowLines, "ShowLines");
287                         Assert.AreEqual (17, tv.StateBag.Count, "ViewState.Count-21");
288
289                         tv.SkipLinkText = "Skip Navigation Links.";
290                         Assert.AreEqual ("Skip Navigation Links.", tv.SkipLinkText, "SkipLinkText");
291                         Assert.AreEqual (18, tv.StateBag.Count, "ViewState.Count-22");
292
293                         tv.Target = string.Empty;
294                         Assert.AreEqual (string.Empty, tv.Target, "Target");
295                         Assert.AreEqual (19, tv.StateBag.Count, "ViewState.Count-23");
296
297                         tv.Visible = true;
298                         Assert.AreEqual (true, tv.Visible, "Visible");
299                         Assert.AreEqual (19, tv.StateBag.Count, "ViewState.Count-24");
300                 }
301
302                 [Test]
303                 public void Treeview_ViewState () {
304                         PokerTreeView tv = new PokerTreeView ();
305                         tv.AutoGenerateDataBindings = true;
306                         Assert.AreEqual (true, tv.AutoGenerateDataBindings, "AutoGenerateDataBindings-beforecopy");
307                         TreeNode node = new TreeNode ();
308                         node.Checked = true;
309                         tv.Nodes.Add (node);
310                         tv.Nodes.Add (new TreeNode ());
311                         Assert.AreEqual (2, tv.Nodes.Count, "Nodes-beforecopy");
312                         Assert.AreEqual (1, tv.CheckedNodes.Count, "CheckedNodes-beforecopy");
313                         tv.CollapseImageToolTip = "Collapse {0}";
314                         Assert.AreEqual ("Collapse {0}", tv.CollapseImageToolTip, "CollapseImageToolTip-beforecopy");
315                         tv.CollapseImageUrl = string.Empty;
316                         Assert.AreEqual (string.Empty, tv.CollapseImageUrl, "CollapseImageUrl-beforecopy");
317                         tv.DataBindings.Add (new TreeNodeBinding ());
318                         Assert.AreEqual (1, tv.DataBindings.Count, "DataBindings-beforecopy");
319                         tv.EnableClientScript = true;
320                         Assert.AreEqual (true, tv.EnableClientScript, "EnableClientScript-beforecopy");
321                         tv.ExpandDepth = -1;
322                         Assert.AreEqual (-1, tv.ExpandDepth, "ExpandDepth-beforecopy");
323                         tv.ExpandImageToolTip = "Expand {0}";
324                         Assert.AreEqual ("Expand {0}", tv.ExpandImageToolTip, "ExpandImageToolTip-beforecopy");
325                         tv.ExpandImageUrl = string.Empty;
326                         Assert.AreEqual (string.Empty, tv.ExpandImageUrl, "ExpandImageUrl-beforecopy");
327                         tv.ImageSet = TreeViewImageSet.Custom;
328                         Assert.AreEqual (TreeViewImageSet.Custom, tv.ImageSet, "ImageSet-beforecopy");
329                         tv.LevelStyles.Add (new TreeNodeStyle ());
330                         Assert.AreEqual (1, tv.LevelStyles.Count, "LevelStyles-beforecopy");
331                         tv.LineImagesFolder = string.Empty;
332                         Assert.AreEqual (string.Empty, tv.LineImagesFolder, "LineImagesFolder-beforecopy");
333                         tv.MaxDataBindDepth = -1;
334                         Assert.AreEqual (-1, tv.MaxDataBindDepth, "MaxDataBindDepth-beforecopy");
335                         tv.NodeIndent = 20;
336                         Assert.AreEqual (20, tv.NodeIndent, "NodeIndent-beforecopy");
337                         tv.NodeWrap = false;
338                         Assert.AreEqual (false, tv.NodeWrap, "NodeWrap-beforecopy");
339                         tv.NoExpandImageUrl = string.Empty;
340                         Assert.AreEqual (string.Empty, tv.NoExpandImageUrl, "NoExpandImageUrl-beforecopy");
341                         tv.PopulateNodesFromClient = true;
342                         Assert.AreEqual (true, tv.PopulateNodesFromClient, "PopulateNodesFromClient-beforecopy");
343                         tv.ShowCheckBoxes = TreeNodeTypes.None;
344                         Assert.AreEqual (TreeNodeTypes.None, tv.ShowCheckBoxes, "ShowCheckBoxes-beforecopy");
345                         tv.ShowExpandCollapse = true;
346                         Assert.AreEqual (true, tv.ShowExpandCollapse, "ShowExpandCollapse-beforecopy");
347                         tv.ShowLines = false;
348                         Assert.AreEqual (false, tv.ShowLines, "ShowLines-beforecopy");
349                         tv.SkipLinkText = "Skip Navigation Links.";
350                         Assert.AreEqual ("Skip Navigation Links.", tv.SkipLinkText, "SkipLinkText-beforecopy");
351                         tv.Target = string.Empty;
352                         Assert.AreEqual (string.Empty, tv.Target, "Target-beforecopy");
353                         tv.Visible = true;
354                         Assert.AreEqual (true, tv.Visible, "Visible-beforecopy");
355                         object state = tv.SaveState ();
356                         PokerTreeView copy = new PokerTreeView ();
357                         copy.LoadState (state);
358                         Assert.AreEqual (true, copy.AutoGenerateDataBindings, "AutoGenerateDataBindings-aftercopy");
359                         Assert.AreEqual ("Collapse {0}", copy.CollapseImageToolTip, "CollapseImageToolTip-aftercopy");
360                         Assert.AreEqual (string.Empty, copy.CollapseImageUrl, "CollapseImageUrl-aftercopy");
361                         Assert.AreEqual (true, copy.EnableClientScript, "EnableClientScript-aftercopy");
362                         Assert.AreEqual (-1, copy.ExpandDepth, "ExpandDepth-aftercopy");
363                         Assert.AreEqual ("Expand {0}", copy.ExpandImageToolTip, "ExpandImageToolTip-aftercopy");
364                         Assert.AreEqual (string.Empty, copy.ExpandImageUrl, "ExpandImageUrl-aftercopy");
365                         Assert.AreEqual (TreeViewImageSet.Custom, copy.ImageSet, "ImageSet-aftercopy");
366                         Assert.AreEqual (1, copy.LevelStyles.Count, "LevelStyles-aftercopy");
367                         Assert.AreEqual (string.Empty, copy.LineImagesFolder, "LineImagesFolder-aftercopy");
368                         Assert.AreEqual (-1, copy.MaxDataBindDepth, "MaxDataBindDepth-aftercopy");
369                         Assert.AreEqual (20, copy.NodeIndent, "NodeIndent-aftercopy");
370                         Assert.AreEqual (2, copy.Nodes.Count, "Nodes-aftercopy");
371                         Assert.AreEqual (false, copy.NodeWrap, "NodeWrap-aftercopy");
372                         Assert.AreEqual (string.Empty, copy.NoExpandImageUrl, "NoExpandImageUrl-aftercopy");
373                         Assert.AreEqual (true, copy.PopulateNodesFromClient, "PopulateNodesFromClient-aftercopy");
374                         Assert.AreEqual (TreeNodeTypes.None, copy.ShowCheckBoxes, "ShowCheckBoxes-aftercopy");
375                         Assert.AreEqual (true, copy.ShowExpandCollapse, "ShowExpandCollapse-aftercopy");
376                         Assert.AreEqual (false, copy.ShowLines, "ShowLines-aftercopy");
377                         Assert.AreEqual ("Skip Navigation Links.", copy.SkipLinkText, "SkipLinkText-aftercopy");
378                         Assert.AreEqual (string.Empty, copy.Target, "Target-aftercopy");
379                         Assert.AreEqual (true, copy.Visible, "Visible-aftercopy");
380                 }
381
382                 [Test]
383                 public void TreeView_ViewStateNodes () {
384                         PokerTreeView tv = new PokerTreeView ();
385                         TreeNode R = new TreeNode ("root", "value-root");
386                         TreeNode N1 = new TreeNode ("node1", "value-node1");
387                         TreeNode N2 = new TreeNode ("node2", "value-node2");
388                         R.ChildNodes.Add (N1);
389                         R.ChildNodes.Add (N2);
390                         tv.Nodes.Add (R);
391                         PokerTreeView copy = new PokerTreeView ();
392                         object state = tv.SaveState ();
393                         copy.LoadState (state);
394                         Assert.AreEqual (1, tv.Nodes.Count, "ViewStateNodes-1");
395                         Assert.AreEqual (2, tv.Nodes[0].ChildNodes.Count, "ViewStateNodes-1");
396                         Assert.AreEqual (0, tv.Nodes[0].ChildNodes[0].ChildNodes.Count, "ViewStateNodes-2");
397                         Assert.AreEqual ("node1", tv.Nodes[0].ChildNodes[0].Text, "ViewStateNodes-3");
398                         Assert.AreEqual ("value-node1", tv.Nodes[0].ChildNodes[0].Value, "ViewStateNodes-4");
399                         Assert.AreEqual (false, tv.Nodes[0].ChildNodes[0].DataBound, "ViewStateNodes-5");
400                         Assert.AreEqual ("", tv.Nodes[0].ChildNodes[0].DataPath, "ViewStateNodes-6");
401                 }
402
403                 private static string xmlDataBind = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Book Title=\"Book Title\"><Chapter Heading=\"Chapter 1\"><Section Heading=\"Section 1\"></Section><Section Heading=\"Section 2\"></Section></Chapter><Chapter Heading=\"Chapter 2\"><Section Heading=\"Section 1\"></Section></Chapter></Book>";
404                 private static string xmlDataBindSmall = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Book Title=\"Book Title\"></Book>";
405
406                 [Test]
407                 public void TreeView_ViewStateDataBoundNodes () {
408                         PokerTreeView b = new PokerTreeView ();
409                         SetDataBindings (b);
410                         b.DataSource = CreateXmlDataSource ();
411                         b.DataBind ();
412                         PokerTreeView copy = new PokerTreeView ();
413                         object state = b.SaveState ();
414                         copy.LoadState (state);
415                         CheckTreeNodes (copy);
416                 }
417
418                 private static void CheckTreeNodes (TreeView m) {
419                         Assert.AreEqual (1, m.Nodes.Count, "CheckTreeNodes#1");
420                         Assert.AreEqual (10, m.Nodes[0].ChildNodes.Count, "CheckTreeNodes#2");
421                         Assert.AreEqual (0, m.Nodes[0].ChildNodes[0].ChildNodes.Count, "CheckTreeNodes#3");
422                         Assert.AreEqual (true, m.Nodes[0].ChildNodes[0].DataBound, "CheckTreeNodes#4");
423                         Assert.AreEqual ("/*[position()=1]/*[position()=1]", m.Nodes[0].ChildNodes[0].DataPath, "CheckTreeNodes#5");
424
425                         Assert.AreEqual ("img#root", m.Nodes[0].ImageUrl, "CheckTreeNodes_ImageUrl#1");
426                         Assert.AreEqual ("img#1", m.Nodes[0].ChildNodes[0].ImageUrl, "CheckTreeNodes_ImageUrl#2");
427                         Assert.AreEqual ("img#2", m.Nodes[0].ChildNodes[1].ImageUrl, "CheckTreeNodes_ImageUrl#3");
428                         Assert.AreEqual ("img#default", m.Nodes[0].ChildNodes[2].ImageUrl, "CheckTreeNodes_ImageUrl#4");
429                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[2].ChildNodes[0].ImageUrl, "CheckTreeNodes_ImageUrl#5");
430
431                         Assert.AreEqual ("url#root", m.Nodes[0].NavigateUrl, "CheckTreeNodes_NavigateUrl#1");
432                         Assert.AreEqual ("url#1", m.Nodes[0].ChildNodes[0].NavigateUrl, "CheckTreeNodes_NavigateUrl#2");
433                         Assert.AreEqual ("url#2", m.Nodes[0].ChildNodes[1].NavigateUrl, "CheckTreeNodes_NavigateUrl#3");
434                         Assert.AreEqual ("url#default", m.Nodes[0].ChildNodes[2].NavigateUrl, "CheckTreeNodes_NavigateUrl#4");
435                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[2].ChildNodes[0].NavigateUrl, "CheckTreeNodes_NavigateUrl#5");
436
437                         Assert.AreEqual ("target#root", m.Nodes[0].Target, "CheckTreeNodes_Target#1");
438                         Assert.AreEqual ("target#1", m.Nodes[0].ChildNodes[0].Target, "CheckTreeNodes_Target#2");
439                         Assert.AreEqual ("target#2", m.Nodes[0].ChildNodes[1].Target, "CheckTreeNodes_Target#3");
440                         Assert.AreEqual ("target#default", m.Nodes[0].ChildNodes[2].Target, "CheckTreeNodes_Target#4");
441                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[2].ChildNodes[0].Target, "CheckTreeNodes_Target#5");
442
443                         Assert.AreEqual ("text#root", m.Nodes[0].Text, "CheckTreeNodes_Text#1");
444                         Assert.AreEqual ("text#1", m.Nodes[0].ChildNodes[0].Text, "CheckTreeNodes_Text#2");
445                         Assert.AreEqual ("text#2", m.Nodes[0].ChildNodes[1].Text, "CheckTreeNodes_Text#3");
446                         Assert.AreEqual ("text#", m.Nodes[0].ChildNodes[2].Text, "CheckTreeNodes_Text#4");
447                         Assert.AreEqual ("subnode", m.Nodes[0].ChildNodes[2].ChildNodes[0].Text, "CheckTreeNodes_Text#5");
448
449                         Assert.AreEqual ("tooltip#root", m.Nodes[0].ToolTip, "CheckTreeNodes_ToolTip#1");
450                         Assert.AreEqual ("tooltip#1", m.Nodes[0].ChildNodes[0].ToolTip, "CheckTreeNodes_ToolTip#2");
451                         Assert.AreEqual ("tooltip#2", m.Nodes[0].ChildNodes[1].ToolTip, "CheckTreeNodes_ToolTip#3");
452                         Assert.AreEqual ("tooltip#default", m.Nodes[0].ChildNodes[2].ToolTip, "CheckTreeNodes_ToolTip#4");
453                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[2].ChildNodes[0].ToolTip, "CheckTreeNodes_ToolTip#5");
454
455                         Assert.AreEqual ("imagetooltip#root", m.Nodes[0].ImageToolTip, "CheckTreeNodes_ImageToolTip#1");
456                         Assert.AreEqual ("imagetooltip#1", m.Nodes[0].ChildNodes[0].ImageToolTip, "CheckTreeNodes_ImageToolTip#2");
457                         Assert.AreEqual ("imagetooltip#2", m.Nodes[0].ChildNodes[1].ImageToolTip, "CheckTreeNodes_ImageToolTip#3");
458                         Assert.AreEqual ("imagetooltip#default", m.Nodes[0].ChildNodes[2].ImageToolTip, "CheckTreeNodes_ImageToolTip#4");
459                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[2].ChildNodes[0].ImageToolTip, "CheckTreeNodes_ImageToolTip#5");
460
461                         Assert.AreEqual ("value#root", m.Nodes[0].Value, "CheckTreeNodes_Value#1");
462                         Assert.AreEqual ("value#1", m.Nodes[0].ChildNodes[0].Value, "CheckTreeNodes_Value#2");
463                         Assert.AreEqual ("value#2", m.Nodes[0].ChildNodes[1].Value, "CheckTreeNodes_Value#3");
464                         Assert.AreEqual ("value#default", m.Nodes[0].ChildNodes[2].Value, "CheckTreeNodes_Value#4");
465                         Assert.AreEqual ("subnode", m.Nodes[0].ChildNodes[2].ChildNodes[0].Value, "CheckTreeNodes_Value#5");
466
467                         Assert.AreEqual ("text#extra1", m.Nodes[0].ChildNodes[3].Text, "CheckTreeNodes_Extra1#1");
468                         Assert.AreEqual ("text#extra1", m.Nodes[0].ChildNodes[3].Value, "CheckTreeNodes_Extra1#2");
469
470                         Assert.AreEqual ("value#extra2", m.Nodes[0].ChildNodes[4].Text, "CheckTreeNodes_Extra2#1");
471                         Assert.AreEqual ("value#extra2", m.Nodes[0].ChildNodes[4].Value, "CheckTreeNodes_Extra2#2");
472
473                         Assert.AreEqual ("text#extra3", m.Nodes[0].ChildNodes[5].Text, "CheckTreeNodes_Extra3#1");
474                         Assert.AreEqual ("text#extra3", m.Nodes[0].ChildNodes[5].Value, "CheckTreeNodes_Extra3#2");
475                         Assert.AreEqual ("value#extra3", m.Nodes[0].ChildNodes[6].Text, "CheckTreeNodes_Extra3#3");
476                         Assert.AreEqual ("value#extra3", m.Nodes[0].ChildNodes[6].Value, "CheckTreeNodes_Extra3#4");
477                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[7].Text, "CheckTreeNodes_Extra3#5");
478                         Assert.AreEqual ("", m.Nodes[0].ChildNodes[7].Value, "CheckTreeNodes_Extra3#6");
479
480                         Assert.AreEqual ("text#extra4", m.Nodes[0].ChildNodes[8].Text, "CheckTreeNodes_Extra4#1");
481                         Assert.AreEqual ("text#default", m.Nodes[0].ChildNodes[8].Value, "CheckTreeNodes_Extra4#2");
482
483                         Assert.AreEqual ("value#default", m.Nodes[0].ChildNodes[9].Text, "CheckTreeNodes_Extra5#1");
484                         Assert.AreEqual ("value#extra5", m.Nodes[0].ChildNodes[9].Value, "CheckTreeNodes_Extra5#2");
485
486                         m.Nodes [0].ChildNodes [5].Text = "TTT";
487                         Assert.AreEqual ("TTT", m.Nodes [0].ChildNodes [5].Value, "");
488                         
489                         m.Nodes [0].ChildNodes [6].Value = "VVV";
490                         Assert.AreEqual ("VVV", m.Nodes [0].ChildNodes [6].Text, "");
491                 }
492
493                 void SetDataBindings (TreeView tv) {
494                         TreeNodeBinding b = new TreeNodeBinding ();
495                         b.DataMember = "node";
496                         b.ImageUrlField = "img";
497                         b.ImageUrl = "img#default";
498                         b.NavigateUrlField = "url";
499                         b.NavigateUrl = "url#default";
500                         b.TargetField = "target";
501                         b.Target = "target#default";
502                         b.FormatString = "text#{0}";
503                         b.TextField = "text";
504                         b.Text = "text#default";
505                         b.ToolTipField = "tooltip";
506                         b.ToolTip = "tooltip#default";
507                         b.ImageToolTipField = "imagetooltip";
508                         b.ImageToolTip = "imagetooltip#default";
509                         b.ValueField = "value";
510                         b.Value = "value#default";
511                         tv.DataBindings.Add (b);
512
513                         b = new TreeNodeBinding ();
514                         b.DataMember = "root";
515                         b.ImageUrl = "img#root";
516                         b.NavigateUrl = "url#root";
517                         b.Target = "target#root";
518                         b.Text = "text#root";
519                         b.ToolTip = "tooltip#root";
520                         b.ImageToolTip = "imagetooltip#root";
521                         b.Value = "value#root";
522                         tv.DataBindings.Add (b);
523
524                         b = new TreeNodeBinding ();
525                         b.DataMember = "extra1";
526                         b.Text = "text#extra1";
527                         tv.DataBindings.Add (b);
528
529                         b = new TreeNodeBinding ();
530                         b.DataMember = "extra2";
531                         b.Value = "value#extra2";
532                         tv.DataBindings.Add (b);
533
534                         b = new TreeNodeBinding ();
535                         b.DataMember = "extra3";
536                         b.TextField = "text";
537                         b.ValueField = "value";
538                         tv.DataBindings.Add (b);
539
540                         b = new TreeNodeBinding ();
541                         b.DataMember = "extra4";
542                         b.TextField = "text";
543                         b.Text = "text#default";
544                         b.ValueField = "value";
545                         tv.DataBindings.Add (b);
546
547                         b = new TreeNodeBinding ();
548                         b.DataMember = "extra5";
549                         b.TextField = "text";
550                         b.Value = "value#default";
551                         b.ValueField = "value";
552                         tv.DataBindings.Add (b);
553                 }
554
555                 XmlDataSource CreateXmlDataSource () {
556                         XmlDataSource xmlDs = new XmlDataSource ();
557                         xmlDs.EnableCaching = false;
558                         xmlDs.ID = "XmlDataSource";
559                         xmlDs.Data = "<root>" +
560                                 "<node url=\"url#1\" img=\"img#1\" selectable=\"true\" popoutimg=\"popoutimg#1\" separatorimg=\"separatorimg#1\" target=\"target#1\" text=\"1\" tooltip=\"tooltip#1\" imagetooltip=\"imagetooltip#1\" value=\"value#1\" />" +
561                                 "<node url=\"url#2\" img=\"img#2\" selectable=\"false\" popoutimg=\"popoutimg#2\" separatorimg=\"separatorimg#2\" target=\"target#2\" text=\"2\" tooltip=\"tooltip#2\" imagetooltip=\"imagetooltip#2\" value=\"value#2\" />" +
562                                 "<node url=\"\" img=\"\" selectable=\"\" popoutimg=\"\" separatorimg=\"\" target=\"\" text=\"\" tooltip=\"\" imagetooltip=\"\" value=\"\">" +
563                                 "<subnode url=\"url#unreachable\" img=\"img#unreachable\" selectable=\"false\" popoutimg=\"popoutimg#unreachable\" separatorimg=\"separatorimg#unreachable\" target=\"target#unreachable\" text=\"text#unreachable\" tooltip=\"tooltip#unreachable\" imagetooltip=\"imagetooltip#unreachable\" value=\"value#unreachable\" />" +
564                                 "<subnode /></node>" +
565                                 "<extra1 /><extra2 />" +
566                                 "<extra3 text=\"text#extra3\" value=\"\" />" +
567                                 "<extra3 text=\"\" value=\"value#extra3\" />" +
568                                 "<extra3 text=\"\" value=\"\" />" +
569                                 "<extra4 text=\"text#extra4\" value=\"\" />" +
570                                 "<extra5 text=\"\" value=\"value#extra5\" />" +
571                                 "</root>";
572                         return xmlDs;
573                 }
574
575                 [Test]
576                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
577                 public void TreeView_Exp_ImageSet () {
578                         // The specified image set is not one of the TreeViewImageSet values.
579                         PokerTreeView tv = new PokerTreeView ();
580                         tv.ImageSet = (TreeViewImageSet) 16;
581                 }
582
583                 [Test]
584                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
585                 public void TreeView_Exp_ShowCheckBoxes () {
586                         // The bitwise combination value is outside the range of the TreeNodeTypes enumeration.
587                         PokerTreeView tv = new PokerTreeView ();
588                         tv.ShowCheckBoxes = (TreeNodeTypes) 8;
589                 }
590
591                 [Test]
592                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
593                 public void TreeView_Exp_Nodes () {
594                         // Trying to access nonexisting node.
595                         PokerTreeView tv = new PokerTreeView ();
596                         int depth = tv.Nodes[1].Depth;
597                 }
598
599                 [Test]
600                 public void TreeView_Method_DataBindDataSource () {
601                         PokerTreeView tv = new PokerTreeView ();
602                         XmlDataSource xmlds = new XmlDataSource ();
603                         xmlds.EnableCaching = false;
604                         xmlds.Data = xmlDataBind;
605                         tv.DataSource = xmlds;
606                         _TreeNodeDataBoundCount = 0;
607                         tv.TreeNodeDataBound += new TreeNodeEventHandler (TreeView_TreeNodeDataBound);
608                         Assert.AreEqual (0, tv.Nodes.Count, "BeforeDataBind1");
609                         tv.DataBind ();
610                         Assert.AreEqual (1, tv.Nodes.Count, "AfterDataBind1-a");
611                         Assert.AreEqual ("Book", tv.Nodes[0].Text, "AfterDataBind1-b");
612                         Assert.AreEqual (2, tv.Nodes[0].ChildNodes.Count, "AfterDataBind1-c");
613                         Assert.AreEqual (2, tv.Nodes [0].ChildNodes [0].ChildNodes.Count, "AfterDataBind1-d");
614                         Assert.AreEqual (6, _TreeNodeDataBoundCount, "AfterDataBind1-TreeNodeDataBoundCount");
615                 }
616
617                 [Test]
618                 public void TreeView_MaxDataBindDepth () {
619                         TreeView tv = new TreeView ();
620                         XmlDataSource xmlds = new XmlDataSource ();
621                         xmlds.EnableCaching = false;
622                         xmlds.Data = xmlDataBind;
623                         tv.DataSource = xmlds;
624                         tv.MaxDataBindDepth = 1;
625                         _TreeNodeDataBoundCount = 0;
626                         tv.TreeNodeDataBound += new TreeNodeEventHandler (TreeView_TreeNodeDataBound);
627                         Assert.AreEqual (0, tv.Nodes.Count, "BeforeDataBind1");
628                         tv.DataBind ();
629                         Assert.AreEqual (1, tv.Nodes.Count, "AfterDataBind1-a");
630                         Assert.AreEqual ("Book", tv.Nodes [0].Text, "AfterDataBind1-b");
631                         Assert.AreEqual (2, tv.Nodes [0].ChildNodes.Count, "AfterDataBind1-c");
632                         Assert.AreEqual (0, tv.Nodes [0].ChildNodes [0].ChildNodes.Count, "AfterDataBind1-d");
633                         Assert.AreEqual (3, _TreeNodeDataBoundCount, "AfterDataBind1-TreeNodeDataBoundCount");
634                 }
635
636                 int _TreeNodeDataBoundCount;
637                 private void TreeView_TreeNodeDataBound (object sender, TreeNodeEventArgs e) {
638                         _TreeNodeDataBoundCount++;
639                 }
640
641                 [Test]
642                 public void TreeView_Method_DataBindStatic () {
643                         PokerTreeView tv = new PokerTreeView ();
644                         TreeNode R = new TreeNode ("root", "value-root");
645                         TreeNode N1 = new TreeNode ("node1", "value-node1");
646                         TreeNode N2 = new TreeNode ("node2", "value-node2");
647                         R.ChildNodes.Add (N1);
648                         R.ChildNodes.Add (N2);
649                         tv.Nodes.Add (R);
650                         tv.DataBind ();
651                         Assert.AreEqual (1, tv.Nodes.Count, "DataBindStatic-1");
652                         Assert.AreEqual (2, tv.Nodes[0].ChildNodes.Count, "DataBindStatic-1");
653                         Assert.AreEqual (0, tv.Nodes[0].ChildNodes[0].ChildNodes.Count, "DataBindStatic-2");
654                         Assert.AreEqual ("node1", tv.Nodes[0].ChildNodes[0].Text, "DataBindStatic-3");
655                         Assert.AreEqual ("value-node1", tv.Nodes[0].ChildNodes[0].Value, "DataBindStatic-4");
656                         Assert.AreEqual (false, tv.Nodes[0].ChildNodes[0].DataBound, "DataBindStatic-5");
657                         Assert.AreEqual ("", tv.Nodes[0].ChildNodes[0].DataPath, "DataBindStatic-6");
658                 }
659
660                 [Test]
661                 public void TreeView_Method_DataBind () {
662                         PokerTreeView tv = new PokerTreeView ();
663                         SetDataBindings (tv);
664                         tv.DataSource = CreateXmlDataSource ();
665                         tv.DataBind ();
666                         CheckTreeNodes (tv);
667                 }
668
669                 [Test]
670                 public void TreeView_Method_FindNode () {
671                         PokerTreeView tv = new PokerTreeView ();
672                         XmlDataSource xmlds = new XmlDataSource ();
673                         xmlds.EnableCaching = false;
674                         xmlds.Data = xmlDataBind;
675                         tv.DataSource = xmlds;
676                         tv.DataBind ();
677                         TreeNode tn = new TreeNode ();
678                         Assert.AreEqual (0, tn.ChildNodes.Count, "BeforeFindNode");
679                         tn = tv.FindNode ("Book" + tv.PathSeparator + "Chapter");
680                         Assert.AreEqual ("Chapter", tn.Text, "AfterFindNode1");
681                         Assert.AreEqual (2, tn.ChildNodes.Count, "AfterFindNode2");
682                         Assert.AreEqual ("Section", tn.ChildNodes[0].Text, "AfterFindNode3");
683                 }
684
685                 [Test]
686                 [Category ("NunitWeb")]
687                 public void TreeView_Render_Defaults () {
688                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadRenderDefaults));
689                         #region HTML
690                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
691         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
692                 <tr>
693                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
694                 </tr>
695         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
696                 <tr>
697                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
698                 </tr>
699         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
700                 <tr>
701                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
702                 </tr>
703         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
704                 <tr>
705                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
706                 </tr>
707         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
708                 <tr>
709                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
710                 </tr>
711         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
712                 <tr>
713                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
714                 </tr>
715         </table>
716 </div><a id=""treeview1_SkipLink""></a>";
717                         #endregion
718                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
719                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderDefaults");
720                 }
721                 public static void pageLoadRenderDefaults (Page page) {
722                         TreeView tv = new TreeView ();
723                         tv.EnableClientScript = false;
724                         tv.ID = "treeview1";
725                         XmlDataSource xmlds = new XmlDataSource ();
726                         xmlds.EnableCaching = false;
727                         xmlds.Data = xmlDataBind;
728                         tv.DataSource = xmlds;
729                         tv.DataBind ();
730                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
731                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
732                         page.Form.Controls.Add (lcb);
733                         page.Form.Controls.Add (tv);
734                         page.Form.Controls.Add (lce);
735                 }
736
737                 [Test]
738                 [Category ("NunitWeb")]
739                 public void TreeView_Method_RenderTags () {
740                         new WebTest (PageInvoker.CreateOnLoad (pageLoadRenderTags)).Run ();
741                 }
742                 public static void pageLoadRenderTags (Page page) {
743                         TreeView tv = new TreeView ();
744                         tv.ID = "treeview1";
745                         page.Form.Controls.Add (tv);
746                         StringWriter sw = new StringWriter ();
747                         HtmlTextWriter tw = new HtmlTextWriter (sw);
748                         tv.RenderBeginTag (tw);
749                         tv.RenderEndTag (tw);
750                         string str = sw.ToString ();
751                         string strTarget = "<a href=\"#treeview1_SkipLink\"><img alt=\"Skip Navigation Links.\" src=\"/NunitWeb/WebResource.axd?d=kffkK8wYLPknq-W8AKNdNQ2&amp;t=632883840303269703\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"treeview1\">\r\n\r\n</div><a id=\"treeview1_SkipLink\"></a>";
752                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderTags");
753                 }
754
755                 [Test]
756                 [Category ("NunitWeb")]
757                 public void TreeView_Method_ExpandAll () {
758                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadExpandAll));
759                         #region HTML
760                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
761         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
762                 <tr>
763                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
764                 </tr>
765         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
766                 <tr>
767                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
768                 </tr>
769         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
770                 <tr>
771                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
772                 </tr>
773         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
774                 <tr>
775                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
776                 </tr>
777         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
778                 <tr>
779                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
780                 </tr>
781         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
782                 <tr>
783                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
784                 </tr>
785         </table>
786 </div><a id=""treeview1_SkipLink""></a>";
787                         #endregion
788                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
789                         HtmlDiff.AssertAreEqual (strTarget, str, "ExpandAll");
790                 }
791                 public static void pageLoadExpandAll (Page page) {
792                         TreeView tv = new TreeView ();
793                         tv.EnableClientScript = false;
794                         tv.ID = "treeview1";
795                         XmlDataSource xmlds = new XmlDataSource ();
796                         xmlds.EnableCaching = false;
797                         xmlds.Data = xmlDataBind;
798                         tv.DataSource = xmlds;
799                         tv.DataBind ();
800                         tv.ExpandAll ();
801                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
802                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
803                         page.Form.Controls.Add (lcb);
804                         page.Form.Controls.Add (tv);
805                         page.Form.Controls.Add (lce);
806                 }
807
808                 [Test]
809                 [Category ("NunitWeb")]
810                 public void TreeView_Method_NodeExpand () {
811                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeExpand));
812                         #region HTML
813                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
814         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
815                 <tr>
816                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
817                 </tr>
818         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
819                 <tr>
820                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
821                 </tr>
822         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
823                 <tr>
824                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
825                 </tr>
826         </table>
827 </div><a id=""treeview1_SkipLink""></a>";
828                         #endregion
829                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
830                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeExpand");
831                 }
832                 public static void pageLoadNodeExpand (Page page) {
833                         TreeView tv = new TreeView ();
834                         tv.EnableClientScript = false;
835                         tv.ID = "treeview1";
836                         XmlDataSource xmlds = new XmlDataSource ();
837                         xmlds.EnableCaching = false;
838                         xmlds.Data = xmlDataBind;
839                         tv.DataSource = xmlds;
840                         tv.DataBind ();
841                         tv.CollapseAll ();
842                         tv.Nodes[0].Expand ();
843                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
844                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
845                         page.Form.Controls.Add (lcb);
846                         page.Form.Controls.Add (tv);
847                         page.Form.Controls.Add (lce);
848                 }
849
850                 [Test]
851                 [Category ("NunitWeb")]
852                 public void TreeView_Method_NodeExpandAll () {
853                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeExpandAll));
854                         #region HTML
855                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
856         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
857                 <tr>
858                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
859                 </tr>
860         </table>
861 </div><a id=""treeview1_SkipLink""></a>";
862                         #endregion
863                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
864                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeExpandAll");
865                 }
866                 public static void pageLoadNodeExpandAll (Page page) {
867                         TreeView tv = new TreeView ();
868                         tv.EnableClientScript = false;
869                         tv.ID = "treeview1";
870                         XmlDataSource xmlds = new XmlDataSource ();
871                         xmlds.EnableCaching = false;
872                         xmlds.Data = xmlDataBind;
873                         tv.DataSource = xmlds;
874                         tv.DataBind ();
875                         tv.CollapseAll ();
876                         tv.Nodes[0].ChildNodes[0].ExpandAll ();
877                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
878                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
879                         page.Form.Controls.Add (lcb);
880                         page.Form.Controls.Add (tv);
881                         page.Form.Controls.Add (lce);
882                 }
883
884                 [Test]
885                 [Category ("NunitWeb")]
886                 public void TreeView_Method_CollapseAll () {
887                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadCollapseAll));
888                         #region HTML
889                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
890         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
891                 <tr>
892                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
893                 </tr>
894         </table>
895 </div><a id=""treeview1_SkipLink""></a>";
896                         #endregion
897                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
898                         HtmlDiff.AssertAreEqual (strTarget, str, "CollapseAll");
899                 }
900                 public static void pageLoadCollapseAll (Page page) {
901                         TreeView tv = new TreeView ();
902                         tv.EnableClientScript = false;
903                         tv.ID = "treeview1";
904                         XmlDataSource xmlds = new XmlDataSource ();
905                         xmlds.EnableCaching = false;
906                         xmlds.Data = xmlDataBind;
907                         tv.DataSource = xmlds;
908                         tv.DataBind ();
909                         tv.CollapseAll ();
910                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
911                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
912                         page.Form.Controls.Add (lcb);
913                         page.Form.Controls.Add (tv);
914                         page.Form.Controls.Add (lce);
915                 }
916
917                 [Test]
918                 [Category ("NunitWeb")]
919                 public void TreeView_Method_NodeCollapse () {
920                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeCollapse));
921                         #region HTML
922                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
923         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
924                 <tr>
925                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
926                 </tr>
927         </table>
928 </div><a id=""treeview1_SkipLink""></a>";
929                         #endregion
930                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
931                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeCollapse");
932                 }
933                 public static void pageLoadNodeCollapse (Page page) {
934                         TreeView tv = new TreeView ();
935                         tv.EnableClientScript = false;
936                         tv.ID = "treeview1";
937                         XmlDataSource xmlds = new XmlDataSource ();
938                         xmlds.EnableCaching = false;
939                         xmlds.Data = xmlDataBind;
940                         tv.DataSource = xmlds;
941                         tv.DataBind ();
942                         tv.Nodes[0].Collapse ();
943                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
944                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
945                         page.Form.Controls.Add (lcb);
946                         page.Form.Controls.Add (tv);
947                         page.Form.Controls.Add (lce);
948                 }
949
950                 [Test]
951                 [Category ("NunitWeb")]
952                 public void TreeView_Method_NodeCollapseAll () {
953                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeCollapseAll));
954                         #region HTML
955                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
956         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
957                 <tr>
958                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
959                 </tr>
960         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
961                 <tr>
962                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
963                 </tr>
964         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
965                 <tr>
966                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
967                 </tr>
968         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
969                 <tr>
970                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
971                 </tr>
972         </table>
973 </div><a id=""treeview1_SkipLink""></a>";
974                         #endregion
975                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
976                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeCollapseAll");
977                 }
978                 public static void pageLoadNodeCollapseAll (Page page) {
979                         TreeView tv = new TreeView ();
980                         tv.EnableClientScript = false;
981                         tv.ID = "treeview1";
982                         XmlDataSource xmlds = new XmlDataSource ();
983                         xmlds.EnableCaching = false;
984                         xmlds.Data = xmlDataBind;
985                         tv.DataSource = xmlds;
986                         tv.DataBind ();
987                         tv.Nodes[0].ChildNodes[0].CollapseAll ();
988                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
989                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
990                         page.Form.Controls.Add (lcb);
991                         page.Form.Controls.Add (tv);
992                         page.Form.Controls.Add (lce);
993                 }
994
995                 [Test]
996                 [Category ("NunitWeb")]
997                 public void TreeView_Method_NodeToggleExpandState1 () {
998                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeToggleExpandState1));
999                         #region HTML
1000                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1001         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1002                 <tr>
1003                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1004                 </tr>
1005         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1006                 <tr>
1007                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1008                 </tr>
1009         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1010                 <tr>
1011                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
1012                 </tr>
1013         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1014                 <tr>
1015                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
1016                 </tr>
1017         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1018                 <tr>
1019                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1020                 </tr>
1021         </table>
1022 </div><a id=""treeview1_SkipLink""></a>";
1023                         #endregion
1024                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1025                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeToggleExpandState1");
1026                 }
1027                 public static void pageLoadNodeToggleExpandState1 (Page page) {
1028                         TreeView tv = new TreeView ();
1029                         tv.EnableClientScript = false;
1030                         tv.ID = "treeview1";
1031                         XmlDataSource xmlds = new XmlDataSource ();
1032                         xmlds.EnableCaching = false;
1033                         xmlds.Data = xmlDataBind;
1034                         tv.DataSource = xmlds;
1035                         tv.DataBind ();
1036                         tv.ExpandAll ();
1037                         tv.Nodes[0].ChildNodes[1].ToggleExpandState ();
1038                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1039                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1040                         page.Form.Controls.Add (lcb);
1041                         page.Form.Controls.Add (tv);
1042                         page.Form.Controls.Add (lce);
1043                 }
1044                 [Test]
1045                 [Category ("NunitWeb")]
1046                 public void TreeView_Method_NodeToggleExpandState2 () {
1047                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeToggleExpandState2));
1048                         #region HTML
1049                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1050         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1051                 <tr>
1052                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1053                 </tr>
1054         </table>
1055 </div><a id=""treeview1_SkipLink""></a>";
1056                         #endregion
1057                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1058                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeToggleExpandState2");
1059                 }
1060                 public static void pageLoadNodeToggleExpandState2 (Page page) {
1061                         TreeView tv = new TreeView ();
1062                         tv.EnableClientScript = false;
1063                         tv.ID = "treeview1";
1064                         XmlDataSource xmlds = new XmlDataSource ();
1065                         xmlds.EnableCaching = false;
1066                         xmlds.Data = xmlDataBind;
1067                         tv.DataSource = xmlds;
1068                         tv.DataBind ();
1069                         tv.CollapseAll ();
1070                         tv.Nodes [0].ChildNodes [0].ToggleExpandState ();
1071                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1072                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1073                         page.Form.Controls.Add (lcb);
1074                         page.Form.Controls.Add (tv);
1075                         page.Form.Controls.Add (lce);
1076                 }
1077
1078                 [Test]
1079                 [Category ("NunitWeb")]
1080                 public void TreeView_PopulateNode () {
1081                         PageDelegates delegates = new PageDelegates ();
1082                         delegates.Load = new PageDelegate (TreeView_PopulateNode_Load);
1083                         delegates.PreRender = new PageDelegate (TreeView_PopulateNode_PreRender);
1084                         delegates.PreRenderComplete = new PageDelegate (TreeView_PopulateNode_PreRenderComplete);
1085                         PageInvoker invoker = new PageInvoker (delegates);
1086                         WebTest test = new WebTest (invoker);
1087                         test.Run ();
1088                 }
1089
1090                 public static void TreeView_PopulateNode_Load (Page page) {
1091                         TreeView tv = new TreeView ();
1092                         tv.ID = "TreeView";
1093                         tv.TreeNodePopulate += new TreeNodeEventHandler (tv_TreeNodePopulate);
1094                         tv.ExpandDepth = 3;
1095                         TreeNode rootNode = new TreeNode ("root");
1096                         rootNode.PopulateOnDemand = true;
1097                         tv.Nodes.Add (rootNode);
1098                         page.Form.Controls.Add (tv);
1099
1100                         // root node still not populated
1101                         Assert.AreEqual (null, rootNode.Expanded, "TreeView_PopulateNode_Load#1");
1102                         Assert.AreEqual (0, rootNode.ChildNodes.Count, "TreeView_PopulateNode_Load#2");
1103                         
1104                         // root node was populated after set Expanded=true
1105                         rootNode.Expanded = true;
1106                         Assert.AreEqual (1, rootNode.ChildNodes.Count, "TreeView_PopulateNode_Load#3");
1107                         
1108                         // node1 was populated because was added with Expanded=true whan root was populated
1109                         Assert.AreEqual (true, rootNode.ChildNodes [0].Expanded, "TreeView_PopulateNode_Load#4");
1110                         Assert.AreEqual (1, rootNode.ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_Load#5");
1111                         
1112                         // node2 not populated because Expanded not set
1113                         Assert.AreEqual (null, rootNode.ChildNodes [0].ChildNodes [0].Expanded, "TreeView_PopulateNode_Load#6");
1114                         Assert.AreEqual (0, rootNode.ChildNodes [0].ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_Load#7");
1115                 }
1116
1117                 public static void TreeView_PopulateNode_PreRender (Page page) {
1118                         TreeView tv = (TreeView) page.Form.FindControl ("TreeView");
1119                         TreeNode rootNode = tv.Nodes [0];
1120
1121                         // state of nodes remain the same
1122                         // root
1123                         Assert.AreEqual (true, rootNode.Expanded, "TreeView_PopulateNode_PreRender#1");
1124                         Assert.AreEqual (1, rootNode.ChildNodes.Count, "TreeView_PopulateNode_PreRender#3");
1125                         // node1
1126                         Assert.AreEqual (true, rootNode.ChildNodes [0].Expanded, "TreeView_PopulateNode_PreRender#4");
1127                         Assert.AreEqual (1, rootNode.ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_PreRender#5");
1128                         // node2
1129                         Assert.AreEqual (null, rootNode.ChildNodes [0].ChildNodes [0].Expanded, "TreeView_PopulateNode_PreRender#6");
1130                         Assert.AreEqual (0, rootNode.ChildNodes [0].ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_PreRender#7");
1131                 }
1132
1133                 public static void TreeView_PopulateNode_PreRenderComplete (Page page) {
1134                         TreeView tv = (TreeView) page.Form.FindControl ("TreeView");
1135                         TreeNode rootNode = tv.Nodes [0];
1136
1137                         // All nodes were expanded and populated up to ExpandDepth
1138                         // root
1139                         Assert.AreEqual (true, rootNode.Expanded, "TreeView_PopulateNode_PreRenderComplete#1");
1140                         Assert.AreEqual (1, rootNode.ChildNodes.Count, "TreeView_PopulateNode_PreRenderComplete#3");
1141                         // node1
1142                         Assert.AreEqual (true, rootNode.ChildNodes [0].Expanded, "TreeView_PopulateNode_PreRenderComplete#4");
1143                         Assert.AreEqual (1, rootNode.ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_PreRenderComplete#5");
1144                         // node2
1145                         Assert.AreEqual (true, rootNode.ChildNodes [0].ChildNodes [0].Expanded, "TreeView_PopulateNode_PreRenderComplete#6");
1146                         Assert.AreEqual (1, rootNode.ChildNodes [0].ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_PreRenderComplete#7");
1147                         // node3
1148                         Assert.AreEqual (null, rootNode.ChildNodes [0].ChildNodes [0].ChildNodes [0].Expanded, "TreeView_PopulateNode_PreRenderComplete#6");
1149                         Assert.AreEqual (0, rootNode.ChildNodes [0].ChildNodes [0].ChildNodes [0].ChildNodes.Count, "TreeView_PopulateNode_PreRenderComplete#7");
1150                 }
1151
1152                 static void tv_TreeNodePopulate (object sender, TreeNodeEventArgs e) {
1153                         TreeNode node = new TreeNode ("node" + (e.Node.Depth + 1));
1154                         node.PopulateOnDemand = true;
1155                         if (e.Node.Depth < 1)
1156                                 node.Expanded = true;
1157                         e.Node.ChildNodes.Add (node);
1158                 }
1159
1160                 [Test]
1161                 [Category ("NunitWeb")]
1162                 public void TreeView_ExpandDepth () {
1163                         PageDelegates delegates = new PageDelegates ();
1164                         delegates.Init = pageInitExpandDepth;
1165                         delegates.Load = pageLoadExpandDepth;
1166                         PageInvoker invoker = new PageInvoker (delegates);
1167                         WebTest t = new WebTest (invoker);
1168                         #region HTML
1169                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1170         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1171                 <tr>
1172                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1173                 </tr>
1174         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1175                 <tr>
1176                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1177                 </tr>
1178         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1179                 <tr>
1180                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1181                 </tr>
1182         </table>
1183 </div><a id=""treeview1_SkipLink""></a>";
1184                         #endregion
1185                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1186                         HtmlDiff.AssertAreEqual (strTarget, str, "NodeToggleExpandState2");
1187                 }
1188                 public static void pageInitExpandDepth (Page page) {
1189                         TreeView tv = new TreeView ();
1190                         tv.EnableClientScript = false;
1191                         tv.ID = "treeview1";
1192                         tv.ExpandDepth = 1;
1193                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1194                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1195                         page.Form.Controls.Add (lcb);
1196                         page.Form.Controls.Add (tv);
1197                         page.Form.Controls.Add (lce);
1198                 }
1199                 public static void pageLoadExpandDepth (Page page) {
1200                         TreeView tv = (TreeView)page.Form.FindControl("treeview1");
1201                         XmlDataSource xmlds = new XmlDataSource ();
1202                         xmlds.EnableCaching = false;
1203                         xmlds.Data = xmlDataBind;
1204                         tv.DataSource = xmlds;
1205                         tv.DataBind ();
1206                 }
1207
1208                 [Test]
1209                 public void TreeView_Method_CreateControlCollection () {
1210                         PokerTreeView tv = new PokerTreeView ();
1211                         ControlCollection cc = tv.CreateControlCollectionBase ();
1212                         Assert.AreEqual (0, cc.Count, "AfterCreateControlCollection");
1213                 }
1214                 [Test]
1215                 public void TreeView_Method_CreateNode () {
1216                         PokerTreeView tv = new PokerTreeView ();
1217                         TreeNode tn = tv.CreateNodeBase ();
1218                         Assert.AreEqual ("New Tree Node", tn.Text, "AfterCreateNode");
1219                 }
1220
1221                 [Test]
1222                 public void TreeView_Method_PerformDataBinding () {
1223                         PokerTreeView tv = new PokerTreeView ();
1224                         XmlDataSource xmlds = new XmlDataSource ();
1225                         xmlds.EnableCaching = false;
1226                         xmlds.Data = xmlDataBind;
1227                         tv.DataSource = xmlds;
1228                         Assert.AreEqual (0, tv.Nodes.Count, "BeforePerformDataBinding");
1229                         tv.PerformDataBindingBase ();
1230                         Assert.AreEqual (1, tv.Nodes.Count, "AfterPerformDataBinding-a");
1231                         Assert.AreEqual ("Book", tv.Nodes[0].Text, "AfterPerformDataBinding-b");
1232                         Assert.AreEqual (2, tv.Nodes[0].ChildNodes.Count, "AfterPerformDataBinding-c");
1233                 }
1234
1235                 // Render Bindings
1236                 [Test]
1237                 [Category ("NunitWeb")]
1238                 public void TreeView_Render_Bindings () {
1239                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadBindings));
1240                         #region HTML
1241                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1242         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1243                 <tr>
1244                         <td><a href=""javascript:__doPostBack('treeview1','tBook Title')""><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvPWfVVXMf-ioilxt_CauIRc1&amp;t=632900536532114160"" alt=""Collapse Book Title"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook Title')"" id=""treeview1t0"">Book Title</a></td>
1245                 </tr>
1246         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1247                 <tr>
1248                         <td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvNJinrRt8LmxJBdwpNumnBQ1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook Title\\Chapter 1')"" id=""treeview1t1"">Chapter 1</a></td>
1249                 </tr>
1250         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1251                 <tr>
1252                         <td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvNJinrRt8LmxJBdwpNumnBQ1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook Title\\Chapter 2')"" id=""treeview1t2"">Chapter 2</a></td>
1253                 </tr>
1254         </table>
1255 </div><a id=""treeview1_SkipLink""></a>";
1256                         #endregion
1257                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1258                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderBindings");
1259                 }
1260                 public static void pageLoadBindings (Page page) {
1261                         TreeView tv = new TreeView ();
1262                         tv.EnableClientScript = false;
1263                         tv.ID = "treeview1";
1264                         tv.ImageSet = TreeViewImageSet.Arrows;
1265                         tv.AutoGenerateDataBindings = false;
1266                         tv.MaxDataBindDepth = 1;
1267                         tv.DataBindings.Add (new TreeNodeBinding ());
1268                         tv.DataBindings[0].DataMember = "Book";
1269                         tv.DataBindings[0].TextField = "Title";
1270                         tv.DataBindings.Add (new TreeNodeBinding ());
1271                         tv.DataBindings[1].DataMember = "Chapter";
1272                         tv.DataBindings[1].TextField = "Heading";
1273                         tv.DataBindings.Add (new TreeNodeBinding ());
1274                         tv.DataBindings[2].DataMember = "Section";
1275                         tv.DataBindings[2].TextField = "Heading";
1276                         XmlDataSource xmlds = new XmlDataSource ();
1277                         xmlds.EnableCaching = false;
1278                         xmlds.Data = xmlDataBind;
1279                         tv.DataSource = xmlds;
1280                         tv.DataBind ();
1281                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1282                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1283                         page.Form.Controls.Add (lcb);
1284                         page.Form.Controls.Add (tv);
1285                         page.Form.Controls.Add (lce);
1286                 }
1287
1288                 // Render Navigate
1289                 [Test]
1290                 [Category ("NunitWeb")]
1291                 public void TreeView_Render_Navigate () {
1292                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNavigate));
1293                         #region HTML
1294                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1295         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1296                 <tr>
1297                         <td><a href=""javascript:__doPostBack('treeview1','tmyNode0')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse myNode0"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""myUrl0"" target=""myTarget"" id=""treeview1t0"">myNode0</a></td>
1298                 </tr>
1299         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1300                 <tr>
1301                         <td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""myUrl00"" target=""myTarget"" id=""treeview1t1"">myNode00</a></td>
1302                 </tr>
1303         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1304                 <tr>
1305                         <td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""myUrl1"" target=""myTarget"" id=""treeview1t2"">myNode1</a></td>
1306                 </tr>
1307         </table>
1308 </div><a id=""treeview1_SkipLink""></a>";
1309                         #endregion
1310                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1311                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderNavigate");
1312                 }
1313                 public static void pageLoadNavigate (Page page) {
1314                         TreeView tv = new TreeView ();
1315                         tv.EnableClientScript = false;
1316                         tv.ID = "treeview1";
1317                         tv.Target = "myTarget";
1318                         tv.Nodes.Add (new TreeNode ());
1319                         tv.Nodes[0].NavigateUrl = "myUrl0";
1320                         tv.Nodes[0].Text = "myNode0";
1321                         tv.Nodes[0].ChildNodes.Add (new TreeNode ());
1322                         tv.Nodes[0].ChildNodes[0].NavigateUrl = "myUrl00";
1323                         tv.Nodes[0].ChildNodes[0].Text = "myNode00";
1324                         tv.Nodes.Add (new TreeNode ());
1325                         tv.Nodes[1].NavigateUrl = "myUrl1";
1326                         tv.Nodes[1].Text = "myNode1";
1327                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1328                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1329                         page.Form.Controls.Add (lcb);
1330                         page.Form.Controls.Add (tv);
1331                         page.Form.Controls.Add (lce);
1332                 }
1333
1334                 // Render Checkboxes
1335                 [Test]
1336                 [Category ("NunitWeb")]
1337                 public void TreeView_Render_Checkboxes () {
1338                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadCheckboxes));
1339                         #region HTML
1340                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1341         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1342                 <tr>
1343                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n0CheckBox"" id=""treeview1n0CheckBox"" title=""Book"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1344                 </tr>
1345         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1346                 <tr>
1347                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n1CheckBox"" id=""treeview1n1CheckBox"" title=""Chapter"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1348                 </tr>
1349         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1350                 <tr>
1351                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n2CheckBox"" id=""treeview1n2CheckBox"" title=""Section"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
1352                 </tr>
1353         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1354                 <tr>
1355                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n3CheckBox"" id=""treeview1n3CheckBox"" title=""Section"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
1356                 </tr>
1357         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1358                 <tr>
1359                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n4CheckBox"" id=""treeview1n4CheckBox"" title=""Chapter"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1360                 </tr>
1361         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1362                 <tr>
1363                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n5CheckBox"" id=""treeview1n5CheckBox"" title=""Section"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
1364                 </tr>
1365         </table>
1366 </div><a id=""treeview1_SkipLink""></a>";
1367                         #endregion
1368                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1369                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderCheckboxes");
1370                 }
1371                 public static void pageLoadCheckboxes (Page page) {
1372                         TreeView tv = new TreeView ();
1373                         tv.EnableClientScript = false;
1374                         tv.ID = "treeview1";
1375                         tv.ShowCheckBoxes = TreeNodeTypes.All;
1376                         XmlDataSource xmlds = new XmlDataSource ();
1377                         xmlds.EnableCaching = false;
1378                         xmlds.Data = xmlDataBind;
1379                         tv.DataSource = xmlds;
1380                         tv.DataBind ();
1381                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1382                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1383                         page.Form.Controls.Add (lcb);
1384                         page.Form.Controls.Add (tv);
1385                         page.Form.Controls.Add (lce);
1386                 }
1387
1388                 // Render Values
1389                 [Test]
1390                 [Category ("NunitWeb")]
1391                 public void TreeView_Render_Values () {
1392                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadValues));
1393                         #region HTML
1394                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""mySkipLinkText"" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1395         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1396                 <tr>
1397                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvPWfVVXMf-ioilxt_CauIRc1&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1398                 </tr>
1399         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1400                 <tr>
1401                         <td><div style=""width:30px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvPWfVVXMf-ioilxt_CauIRc1&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1402                 </tr>
1403         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1404                 <tr>
1405                         <td><div style=""width:30px;height:1px""></div></td><td><div style=""width:30px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvNJinrRt8LmxJBdwpNumnBQ1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
1406                 </tr>
1407         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1408                 <tr>
1409                         <td><div style=""width:30px;height:1px""></div></td><td><div style=""width:30px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvNJinrRt8LmxJBdwpNumnBQ1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
1410                 </tr>
1411         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1412                 <tr>
1413                         <td><div style=""width:30px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvPWfVVXMf-ioilxt_CauIRc1&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1414                 </tr>
1415         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1416                 <tr>
1417                         <td><div style=""width:30px;height:1px""></div></td><td><div style=""width:30px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=tM_G_fTuPrZTezUsMMFtvNJinrRt8LmxJBdwpNumnBQ1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
1418                 </tr>
1419         </table>
1420 </div><a id=""treeview1_SkipLink""></a>";
1421                         #endregion
1422                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1423                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderValues");
1424                 }
1425                 public static void pageLoadValues (Page page) {
1426                         TreeView tv = new TreeView ();
1427                         tv.EnableClientScript = false;
1428                         tv.ID = "treeview1";
1429                         tv.ImageSet = TreeViewImageSet.Arrows;
1430                         tv.SkipLinkText = "mySkipLinkText";
1431                         tv.NodeIndent = 30;
1432                         tv.ExpandDepth = 3;
1433                         XmlDataSource xmlds = new XmlDataSource ();
1434                         xmlds.EnableCaching = false;
1435                         xmlds.Data = xmlDataBind;
1436                         tv.DataSource = xmlds;
1437                         tv.DataBind ();
1438                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1439                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1440                         page.Form.Controls.Add (lcb);
1441                         page.Form.Controls.Add (tv);
1442                         page.Form.Controls.Add (lce);
1443                 }
1444
1445                 // Render Images
1446                 [Test]
1447                 [Category ("NunitWeb")]
1448                 public void TreeView_Render_ImagesOn () {
1449                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadImagesOn));
1450                         #region HTML
1451                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1452         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1453                 <tr>
1454                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""Test666/dashminus.gif"" alt=""Test111"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1455                 </tr>
1456         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1457                 <tr>
1458                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""Test666/tminus.gif"" alt=""Test111"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1459                 </tr>
1460         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1461                 <tr>
1462                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""><img src=""Test666/i.gif"" alt="""" /></div></td><td><img src=""Test666/t.gif"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
1463                 </tr>
1464         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1465                 <tr>
1466                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""><img src=""Test666/i.gif"" alt="""" /></div></td><td><img src=""Test666/l.gif"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
1467                 </tr>
1468         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1469                 <tr>
1470                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""Test666/lminus.gif"" alt=""Test111"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1471                 </tr>
1472         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1473                 <tr>
1474                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""Test666/l.gif"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
1475                 </tr>
1476         </table>
1477 </div><a id=""treeview1_SkipLink""></a>";
1478                         #endregion
1479                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1480                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderImagesOn");
1481                 }
1482                 [Test]
1483                 [Category ("NunitWeb")]
1484                 public void TreeView_Render_ImagesOff () {
1485                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadImagesOff));
1486                         #region HTML
1487                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1488         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1489                 <tr>
1490                         <td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1n0"">Book</a></td>
1491                 </tr>
1492         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1493                 <tr>
1494                         <td><div style=""width:20px;height:1px""></div></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1n1"">Chapter</a></td>
1495                 </tr>
1496         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1497                 <tr>
1498                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1n2"">Section</a></td>
1499                 </tr>
1500         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1501                 <tr>
1502                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1n3"">Section</a></td>
1503                 </tr>
1504         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1505                 <tr>
1506                         <td><div style=""width:20px;height:1px""></div></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1n4"">Chapter</a></td>
1507                 </tr>
1508         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1509                 <tr>
1510                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1n5"">Section</a></td>
1511                 </tr>
1512         </table>
1513 </div><a id=""treeview1_SkipLink""></a>";
1514                         #endregion
1515                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1516                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderImagesOff");
1517                 }
1518                 public static void pageLoadImagesOn (Page page) {
1519                         TreeView tv = new TreeView ();
1520                         tv.EnableClientScript = false;
1521                         tv.ID = "treeview1";
1522                         tv.CollapseImageToolTip = "Test111";
1523                         tv.ExpandImageToolTip = "Test222";
1524                         tv.CollapseImageUrl = "Test333";
1525                         tv.ExpandImageUrl = "Test444";
1526                         tv.NoExpandImageUrl = "Test555";
1527                         tv.LineImagesFolder = "Test666";
1528                         tv.ShowLines = true;
1529                         tv.ShowExpandCollapse = true;
1530                         tv.ImageSet = TreeViewImageSet.Custom;
1531                         XmlDataSource xmlds = new XmlDataSource ();
1532                         xmlds.EnableCaching = false;
1533                         xmlds.Data = xmlDataBind;
1534                         tv.DataSource = xmlds;
1535                         tv.DataBind ();
1536                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1537                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1538                         page.Form.Controls.Add (lcb);
1539                         page.Form.Controls.Add (tv);
1540                         page.Form.Controls.Add (lce);
1541                 }
1542                 public static void pageLoadImagesOff (Page page) {
1543                         TreeView tv = new TreeView ();
1544                         tv.EnableClientScript = false;
1545                         tv.ID = "treeview1";
1546                         tv.ShowLines = false;
1547                         tv.ShowExpandCollapse = false;
1548                         XmlDataSource xmlds = new XmlDataSource ();
1549                         xmlds.EnableCaching = false;
1550                         xmlds.Data = xmlDataBind;
1551                         tv.DataSource = xmlds;
1552                         tv.DataBind ();
1553                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1554                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1555                         page.Form.Controls.Add (lcb);
1556                         page.Form.Controls.Add (tv);
1557                         page.Form.Controls.Add (lce);
1558                 }
1559
1560                 //Render Wrap
1561                 [Test]
1562                 [Category ("NunitWeb")]
1563                 public void TreeView_Render_WrapOn () {
1564                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadWrapOn));
1565                         string strTarget =
1566 @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=kffkK8wYLPknq-W8AKNdNQ2&amp;t=632883840303269703"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1567         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1568                 <tr>
1569                         <td><img src=""/NunitWeb/WebResource.axd?d=edXX1vkoy5lI0CekgaZ5zZhMbc1ZCZv4nlS9J-l53l41&amp;t=632883840303269703"" alt="""" /></td><td><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sTreeNode1')"" onclick=""TreeView_SelectNode(treeview1_Data, this,'treeview1t0');"" id=""treeview1t0"">TreeNode1</a></td>
1570                 </tr>
1571         </table>
1572 </div><a id=""treeview1_SkipLink""></a>";
1573                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1574                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderWrapOn");
1575                 }
1576                 [Test]
1577                 [Category ("NunitWeb")]
1578                 public void TreeView_Render_WrapOff () {
1579                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadWrapOff));
1580                         string strTarget =
1581 @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=kffkK8wYLPknq-W8AKNdNQ2&amp;t=632883840303269703"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1582         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1583                 <tr>
1584                         <td><img src=""/NunitWeb/WebResource.axd?d=edXX1vkoy5lI0CekgaZ5zZhMbc1ZCZv4nlS9J-l53l41&amp;t=632883840303269703"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sTreeNode1')"" onclick=""TreeView_SelectNode(treeview1_Data, this,'treeview1t0');"" id=""treeview1t0"">TreeNode1</a></td>
1585                 </tr>
1586         </table>
1587 </div><a id=""treeview1_SkipLink""></a>";
1588                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1589                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderWrapOff");
1590                 }
1591                 public static void pageLoadWrapOn (Page page) {
1592                         TreeView tv = new TreeView ();
1593                         tv.ID = "treeview1";
1594                         tv.NodeWrap = true;
1595                         tv.Nodes.Add (new TreeNode ("TreeNode1"));
1596                         tv.DataBind ();
1597                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1598                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1599                         page.Form.Controls.Add (lcb);
1600                         page.Form.Controls.Add (tv);
1601                         page.Form.Controls.Add (lce);
1602                 }
1603                 public static void pageLoadWrapOff (Page page) {
1604                         TreeView tv = new TreeView ();
1605                         tv.ID = "treeview1";
1606                         tv.NodeWrap = false;
1607                         tv.Nodes.Add (new TreeNode ("TreeNode1"));
1608                         tv.DataBind ();
1609                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1610                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1611                         page.Form.Controls.Add (lcb);
1612                         page.Form.Controls.Add (tv);
1613                         page.Form.Controls.Add (lce);
1614                 }
1615
1616                 // Render Client
1617                 [Test]
1618                 [Category ("NunitWeb")]
1619                 public void TreeView_Render_Client () {
1620                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadClient));
1621                         string strTarget = "<a href=\"#treeview1_SkipLink\"><img alt=\"Skip Navigation Links.\" src=\"/NunitWeb/WebResource.axd?d=kffkK8wYLPknq-W8AKNdNQ2&amp;t=632883840303269703\" width=\"0\" height=\"0\" style=\"border-width:0px;\" /></a><div id=\"treeview1\">\r\n\r\n</div><a id=\"treeview1_SkipLink\"></a>";
1622                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1623                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderClient");
1624                 }
1625                 public static void pageLoadClient (Page page) {
1626                         TreeView tv = new TreeView ();
1627                         tv.ID = "treeview1";
1628                         tv.EnableClientScript = false;
1629                         tv.PopulateNodesFromClient = false;
1630                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1631                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1632                         page.Form.Controls.Add (lcb);
1633                         page.Form.Controls.Add (tv);
1634                         page.Form.Controls.Add (lce);
1635                 }
1636
1637                 //Render Invisible
1638                 [Test]
1639                 [Category ("NunitWeb")]
1640                 public void TreeView_Render_Invisible () {
1641                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadInvisible));
1642                         string strTarget = "";
1643                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1644                         Assert.AreEqual (strTarget, str, "RenderInvisible");
1645                 }
1646                 public static void pageLoadInvisible (Page page) {
1647                         TreeView tv = new TreeView ();
1648                         tv.ID = "treeview1";
1649                         tv.Visible = false;
1650                         XmlDataSource xmlds = new XmlDataSource ();
1651                         xmlds.EnableCaching = false;
1652                         xmlds.Data = xmlDataBindSmall;
1653                         tv.DataSource = xmlds;
1654                         tv.DataBind ();
1655                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1656                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1657                         page.Form.Controls.Add (lcb);
1658                         page.Form.Controls.Add (tv);
1659                         page.Form.Controls.Add (lce);
1660                 }
1661
1662                 //Render Node Strings
1663                 [Test]
1664                 [Category ("NunitWeb")]
1665                 public void TreeView_Render_NodeStrings () {
1666                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeStrings));
1667                         #region HTML
1668                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1669         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1670                 <tr>
1671                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" title=""string1"" id=""treeview1t0"">Book</a></td>
1672                 </tr>
1673         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1674                 <tr>
1675                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td><a href=""string4"" id=""treeview1t1i""><img src=""string3"" alt="""" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""string4"" id=""treeview1t1"">Chapter</a></td>
1676                 </tr>
1677         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1678                 <tr>
1679                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
1680                 </tr>
1681         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1682                 <tr>
1683                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\string6')"" id=""treeview1t3"">string6</a></td>
1684                 </tr>
1685         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1686                 <tr>
1687                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\string7')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\string7')"" id=""treeview1t4"">Chapter</a></td>
1688                 </tr>
1689         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1690                 <tr>
1691                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\string7\\Section')"" id=""treeview1t5"">Section</a></td>
1692                 </tr>
1693         </table>
1694 </div><a id=""treeview1_SkipLink""></a>";
1695                         #endregion
1696                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1697                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderNodeStrings");
1698                 }
1699                 public static void pageLoadNodeStrings (Page page) {
1700                         TreeView tv = new TreeView ();
1701                         tv.EnableClientScript = false;
1702                         tv.ID = "treeview1";
1703                         XmlDataSource xmlds = new XmlDataSource ();
1704                         xmlds.EnableCaching = false;
1705                         xmlds.Data = xmlDataBind;
1706                         tv.DataSource = xmlds;
1707                         tv.DataBind ();
1708                         tv.Nodes[0].ToolTip = "string1";
1709                         tv.Nodes[0].ImageToolTip = "string2";
1710                         tv.Nodes[0].ChildNodes[0].ImageUrl = "string3";
1711                         tv.Nodes[0].ChildNodes[0].NavigateUrl = "string4";
1712                         tv.Nodes[0].ChildNodes[0].ChildNodes[0].Target = "string5";
1713                         tv.Nodes[0].ChildNodes[0].ChildNodes[1].Text = "string6";
1714                         tv.Nodes[0].ChildNodes[1].Value = "string7";
1715                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1716                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1717                         page.Form.Controls.Add (lcb);
1718                         page.Form.Controls.Add (tv);
1719                         page.Form.Controls.Add (lce);
1720                 }
1721
1722                 //Render Node States
1723                 [Test]
1724                 [Category ("NunitWeb")]
1725                 public void TreeView_Render_NodeStates1 () {
1726                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeStates1));
1727                         #region HTML
1728                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1729         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1730                 <tr>
1731                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1732                 </tr>
1733         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1734                 <tr>
1735                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1736                 </tr>
1737         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1738                 <tr>
1739                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t2"">Section</a></td>
1740                 </tr>
1741         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1742                 <tr>
1743                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n3CheckBox"" id=""treeview1n3CheckBox"" title=""Section"" /><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t3"">Section</a></td>
1744                 </tr>
1745         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1746                 <tr>
1747                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1748                 </tr>
1749         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1750                 <tr>
1751                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
1752                 </tr>
1753         </table>
1754 </div><a id=""treeview1_SkipLink""></a>";
1755                         #endregion
1756                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1757                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderNodeStates1");
1758                 }
1759                 public static void pageLoadNodeStates1 (Page page) {
1760                         TreeView tv = new TreeView ();
1761                         tv.EnableClientScript = false;
1762                         tv.ID = "treeview1";
1763                         XmlDataSource xmlds = new XmlDataSource ();
1764                         xmlds.EnableCaching = false;
1765                         xmlds.Data = xmlDataBind;
1766                         tv.DataSource = xmlds;
1767                         tv.DataBind ();
1768                         tv.Nodes[0].Checked = true;
1769                         tv.Nodes[0].ChildNodes[0].Selected = false;
1770                         tv.Nodes[0].ChildNodes[0].Expanded = true;
1771                         tv.Nodes[0].ChildNodes[0].ChildNodes[0].PopulateOnDemand = false;
1772                         tv.Nodes[0].ChildNodes[0].ChildNodes[1].ShowCheckBox = true;
1773                         tv.Nodes[0].ChildNodes[1].SelectAction = TreeNodeSelectAction.SelectExpand;
1774                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1775                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1776                         page.Form.Controls.Add (lcb);
1777                         page.Form.Controls.Add (tv);
1778                         page.Form.Controls.Add (lce);
1779                 }
1780
1781                 [Test]
1782                 [Category ("NunitWeb")]
1783                 public void TreeView_Render_NodeStates2 () {
1784                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNodeStates2));
1785                         #region HTML
1786                         string strTarget = @"<a href=""#treeview1_SkipLink""><img alt=""Skip Navigation Links."" src=""/NunitWeb/WebResource.axd?d=QxfUEifeQdL5PTiZOF8HlA2&amp;t=632900536532114160"" width=""0"" height=""0"" style=""border-width:0px;"" /></a><div id=""treeview1"">
1787         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1788                 <tr>
1789                         <td><a href=""javascript:__doPostBack('treeview1','tBook')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Book"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook')"" id=""treeview1t0"">Book</a></td>
1790                 </tr>
1791         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1792                 <tr>
1793                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKww7ErebG7jw1jueqPriNXg1&amp;t=632900536532114160"" alt=""Expand Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t1"">Chapter</a></td>
1794                 </tr>
1795         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1796                 <tr>
1797                         <td><div style=""width:20px;height:1px""></div></td><td><a href=""javascript:__doPostBack('treeview1','tBook\\Chapter')""><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCKx8id-JMenwfEutsU_5Jl881&amp;t=632900536532114160"" alt=""Collapse Chapter"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter')"" id=""treeview1t4"">Chapter</a></td>
1798                 </tr>
1799         </table><table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">
1800                 <tr>
1801                         <td><div style=""width:20px;height:1px""></div></td><td><div style=""width:20px;height:1px""></div></td><td><img src=""/NunitWeb/WebResource.axd?d=FFvd_97uOAs_RkkFT_hCK1PXgyMDQIACCdOOfDo560o1&amp;t=632900536532114160"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""javascript:__doPostBack('treeview1','sBook\\Chapter\\Section')"" id=""treeview1t5"">Section</a></td>
1802                 </tr>
1803         </table>
1804 </div><a id=""treeview1_SkipLink""></a>";
1805                         #endregion
1806                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());
1807                         HtmlDiff.AssertAreEqual (strTarget, str, "RenderNodeStates2");
1808                 }
1809                 public static void pageLoadNodeStates2 (Page page) {
1810                         TreeView tv = new TreeView ();
1811                         tv.EnableClientScript = false;
1812                         tv.ID = "treeview1";
1813                         XmlDataSource xmlds = new XmlDataSource ();
1814                         xmlds.EnableCaching = false;
1815                         xmlds.Data = xmlDataBind;
1816                         tv.DataSource = xmlds;
1817                         tv.DataBind ();
1818                         tv.Nodes[0].Checked = false;
1819                         tv.Nodes[0].ChildNodes[0].Selected = true;
1820                         tv.Nodes[0].ChildNodes[0].Expanded = false;
1821                         tv.Nodes[0].ChildNodes[0].ChildNodes[0].PopulateOnDemand = true;
1822                         tv.Nodes[0].ChildNodes[0].ChildNodes[1].ShowCheckBox = false;
1823                         tv.Nodes[0].ChildNodes[1].SelectAction = TreeNodeSelectAction.Expand;
1824                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);
1825                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);
1826                         page.Form.Controls.Add (lcb);
1827                         page.Form.Controls.Add (tv);
1828                         page.Form.Controls.Add (lce);
1829                 }
1830
1831                 [Test]
1832                 [Category ("NunitWeb")]
1833                 public void TreeView_PostBackFireEvents_1 ()
1834                 {
1835                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (PostBackFireEvents_1));
1836                         String html = t.Run ();
1837                         if (t.UserData == null)
1838                                 Assert.Fail ("Event not fired fail");
1839                         Assert.AreEqual ("TreeNodeDataBound", t.UserData.ToString (), "PostBackFireEvents_1");
1840                 }
1841
1842                 #region PostBackFireEvents_1
1843                 public static void PostBackFireEvents_1 (Page p)
1844                 {
1845                         TreeView tv = new TreeView ();
1846                         tv.TreeNodeDataBound += new TreeNodeEventHandler (tv_TreeNodeDataBound);
1847                         tv.EnableClientScript = false;
1848                         tv.ID = "treeview1";
1849                         XmlDataSource xmlds = new XmlDataSource ();
1850                         xmlds.EnableCaching = false;
1851                         xmlds.Data = xmlDataBind;
1852                         tv.DataSource = xmlds;
1853                         tv.DataBind ();
1854                         tv.Nodes[0].Checked = true;
1855                         tv.Nodes[0].ChildNodes[0].Selected = false;
1856                         tv.Nodes[0].ChildNodes[0].Expanded = true;
1857                         tv.Nodes[0].ChildNodes[0].ChildNodes[0].PopulateOnDemand = false;
1858                         tv.Nodes[0].ChildNodes[0].ChildNodes[1].ShowCheckBox = true;
1859                         tv.Nodes[0].ChildNodes[1].SelectAction = TreeNodeSelectAction.SelectExpand;
1860                         p.Form.Controls.Add (tv);
1861                 }
1862
1863                 public static void tv_TreeNodeDataBound (object sender, TreeNodeEventArgs e)
1864                 {
1865                         WebTest.CurrentTest.UserData = "TreeNodeDataBound";     
1866                 }
1867                 #endregion
1868
1869                 [Test]
1870                 [Category ("NunitWeb")]
1871                 public void TreeView_PostBackFireEvents_2 ()
1872                 {
1873                         WebTest t = new WebTest ("NoEventValidation.aspx");
1874                         t.Invoker = PageInvoker.CreateOnLoad (PostBackFireEvents_2);
1875                         string html = t.Run ();
1876                         FormRequest fr = new FormRequest (t.Response, "form1");
1877                         
1878 #if DOT_NET
1879                         fr.Controls.Add ("__EVENTTARGET");
1880                         fr.Controls.Add ("__EVENTARGUMENT");
1881                         fr.Controls.Add ("treeview1_ExpandState");
1882                         fr.Controls.Add ("treeview1_SelectedNode");
1883                         fr.Controls.Add ("treeview1_PopulateLog");
1884                         fr.Controls.Add ("treeview1n0CheckBox");
1885
1886                         fr.Controls["__EVENTTARGET"].Value = "treeview1";
1887                         fr.Controls["__EVENTARGUMENT"].Value = "sroot";
1888                         fr.Controls["treeview1_ExpandState"].Value = "n";
1889                         fr.Controls["treeview1_SelectedNode"].Value = "treeview1t0";
1890                         fr.Controls["treeview1_PopulateLog"].Value = "";
1891                         fr.Controls["treeview1n0CheckBox"].Value = "on";
1892 #else
1893                         fr.Controls.Add ("__EVENTTARGET");
1894                         fr.Controls.Add ("__EVENTARGUMENT");
1895                         //fr.Controls.Add ("treeview1_ExpandState");
1896                         //fr.Controls.Add ("treeview1_SelectedNode");
1897                         //fr.Controls.Add ("treeview1_PopulateLog");
1898                         fr.Controls.Add ("treeview1_cs_0");
1899
1900                         fr.Controls ["__EVENTTARGET"].Value = "treeview1";
1901                         fr.Controls ["__EVENTARGUMENT"].Value = "sel|0";
1902                         //fr.Controls ["treeview1_ExpandState"].Value = "n";
1903                         //fr.Controls ["treeview1_SelectedNode"].Value = "treeview1t0";
1904                         //fr.Controls ["treeview1_PopulateLog"].Value = "";
1905                         fr.Controls ["treeview1_cs_0"].Value = "on";
1906 #endif
1907
1908                         t.Request = fr;
1909                         html = t.Run ();
1910
1911                         Assert.AreEqual ("TreeNodeCheckChanged", t.UserData.ToString (), "PostBackFireEvents");
1912                 }
1913
1914                 #region PostBackFireEvents_2
1915                 public static void PostBackFireEvents_2 (Page p)
1916                 {
1917                         TreeView tv = new TreeView ();
1918                         tv.TreeNodeCheckChanged+=new TreeNodeEventHandler(tv_TreeNodeCheckChanged);
1919                         tv.EnableClientScript = false;
1920                         tv.ID = "treeview1";
1921                         TreeNode root = new TreeNode ("root", "root");
1922                         root.ShowCheckBox = true;
1923                         root.Checked = false;
1924                         tv.Nodes.Add (root);
1925                         p.Form.Controls.Add (tv);
1926                 }
1927
1928                 static void tv_TreeNodeCheckChanged (object sender, TreeNodeEventArgs e)
1929                 {
1930                         WebTest.CurrentTest.UserData = "TreeNodeCheckChanged";
1931                 }
1932                 #endregion
1933
1934                 [Test]
1935                 [Category ("NunitWeb")]
1936                 public void TreeView_PostBackFireEvents_3 ()
1937                 {
1938                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (PostBackFireEvents_3));
1939                         String html = t.Run ();
1940                         if (t.UserData == null)
1941                                 Assert.Fail ("Event not fired fail");
1942                         Assert.AreEqual ("TreeNodeExpanded", t.UserData.ToString (), "PostBackFireEvents#1");
1943
1944                         FormRequest fr = new FormRequest (t.Response, "form1");
1945                         fr.Controls.Add ("__EVENTTARGET");
1946                         fr.Controls.Add ("__EVENTARGUMENT");
1947                         fr.Controls["__EVENTTARGET"].Value = "treeview1";
1948 #if DOT_NET
1949                         fr.Controls["__EVENTARGUMENT"].Value = "tBook";
1950 #else
1951                         fr.Controls ["__EVENTARGUMENT"].Value = "ec|0";
1952 #endif
1953                         t.Request = fr;
1954                         html = t.Run ();
1955                         Assert.AreEqual ("TreeNodeCollapsed", t.UserData.ToString (), "PostBackFireEvents#2");
1956
1957                 }
1958
1959                 #region PostBackFireEvents_3
1960                 public static void PostBackFireEvents_3 (Page p)
1961                 {
1962                         TreeView tv = new TreeView ();
1963                         tv.TreeNodeCollapsed += new TreeNodeEventHandler (tv_TreeNodeCollapsed);
1964                         tv.TreeNodeExpanded +=new TreeNodeEventHandler(tv_TreeNodeExpanded);
1965                         tv.EnableClientScript = false;
1966                         tv.ID = "treeview1";
1967                         XmlDataSource xmlds = new XmlDataSource ();
1968                         xmlds.EnableCaching = false;
1969                         xmlds.Data = xmlDataBind;
1970                         tv.DataSource = xmlds;
1971                         tv.DataBind ();
1972                         tv.Nodes[0].Checked = true;
1973                         tv.Nodes[0].ChildNodes[0].Selected = false;
1974                         tv.Nodes[0].ChildNodes[0].Expanded = true;
1975                         tv.Nodes[0].ChildNodes[0].ChildNodes[0].PopulateOnDemand = false;
1976                         tv.Nodes[0].ChildNodes[0].ChildNodes[1].ShowCheckBox = true;
1977                         tv.Nodes[0].ChildNodes[1].SelectAction = TreeNodeSelectAction.SelectExpand;
1978                         p.Form.Controls.Add (tv);
1979
1980                         
1981                 }
1982
1983                 public static void tv_TreeNodeCollapsed (object sender, TreeNodeEventArgs e)
1984                 {
1985                         WebTest.CurrentTest.UserData = "TreeNodeCollapsed";
1986                 }
1987
1988                 static void tv_TreeNodeExpanded (object sender, TreeNodeEventArgs e)
1989                 {
1990                         WebTest.CurrentTest.UserData = "TreeNodeExpanded";
1991                 }
1992                 #endregion
1993
1994                 [Test]
1995                 [Category ("NunitWeb")]
1996                 public void TreeView_PostBackFireEvents_4 ()
1997                 {
1998                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (PostBackFireEvents_4));
1999                         String html = t.Run ();
2000                         Assert.AreEqual ("TreeNodePopulate", t.UserData.ToString (), "PostBackFireEvents");
2001                 }
2002
2003                 #region PostBackFireEvents_4
2004                 public static void PostBackFireEvents_4 (Page p)
2005                 {
2006                         TreeView tv = new TreeView ();
2007                         tv.TreeNodePopulate += new TreeNodeEventHandler (tv_TreeNodePopulate_1);
2008                         tv.EnableClientScript = false;
2009                         tv.ID = "treeview1";
2010                         TreeNode root = new TreeNode ("Root", "Root");
2011                         root.PopulateOnDemand = true;
2012                         root.Expanded = true;
2013                         tv.Nodes.Add (root);
2014                         p.Form.Controls.Add (tv);
2015                 }
2016
2017                 public static void tv_TreeNodePopulate_1 (object sender, TreeNodeEventArgs e)
2018                 {
2019                         WebTest.CurrentTest.UserData = "TreeNodePopulate";
2020                 }
2021                 #endregion
2022
2023                 [Test]
2024                 [Category ("NunitWeb")]
2025                 public void TreeView_PostBackFireEvents_5 ()
2026                 {
2027                         WebTest t = new WebTest ("NoEventValidation.aspx");
2028                         t.Invoker = PageInvoker.CreateOnLoad (PostBackFireEvents_5);
2029                         t.Run ();
2030                         FormRequest fr = new FormRequest (t.Response, "form1");
2031 #if DOT_NET
2032                         fr.Controls.Add ("__EVENTTARGET");
2033                         fr.Controls.Add ("__EVENTARGUMENT");
2034                         fr.Controls.Add ("TreeView2_ExpandState");
2035                         fr.Controls.Add ("TreeView2_SelectedNode");
2036                         
2037                         fr.Controls["__EVENTTARGET"].Value = "treeview1";
2038                         fr.Controls["__EVENTARGUMENT"].Value = "snode";
2039                         fr.Controls["TreeView2_ExpandState"].Value = "nn";
2040                         fr.Controls["TreeView2_SelectedNode"].Value = "treeview1t1";
2041 #else
2042                         fr.Controls.Add ("__EVENTTARGET");
2043                         fr.Controls.Add ("__EVENTARGUMENT");
2044                         //fr.Controls.Add ("TreeView2_ExpandState");
2045                         //fr.Controls.Add ("TreeView2_SelectedNode");
2046
2047                         fr.Controls ["__EVENTTARGET"].Value = "treeview1";
2048                         fr.Controls ["__EVENTARGUMENT"].Value = "sel|1";
2049                         //fr.Controls ["TreeView2_ExpandState"].Value = "nn";
2050                         //fr.Controls ["TreeView2_SelectedNode"].Value = "treeview1t1";
2051 #endif
2052                         t.Request = fr;
2053                         t.Run ();
2054                         Assert.AreEqual ("SelectedNodeChanged", t.UserData.ToString (), "PostBackFireEvents");
2055                 }
2056
2057                 #region PostBackFireEvents_5
2058                 public static void PostBackFireEvents_5 (Page p)
2059                 {
2060                         TreeView tv = new TreeView ();
2061                         tv.SelectedNodeChanged += new EventHandler (tv_SelectedNodeChanged);
2062                         tv.EnableClientScript = false;
2063                         tv.ID = "treeview1";
2064                         TreeNode root = new TreeNode ("root", "root");
2065                         root.Selected = true;
2066                         tv.Nodes.Add (root);
2067                         TreeNode node = new TreeNode ("node", "node");
2068                         tv.Nodes.Add (node);
2069                         node.Selected = false;
2070                         p.Form.Controls.Add (tv);
2071                 }
2072
2073                 static void tv_SelectedNodeChanged (object sender, EventArgs e)
2074                 {
2075                         WebTest.CurrentTest.UserData = "SelectedNodeChanged";
2076                 }
2077                 #endregion
2078
2079                 [Test]
2080                 public void TreeView_NullDS ()
2081                 {
2082                         TreeView tv = new TreeView ();
2083                         tv.DataSource = null;
2084                         tv.DataBind ();
2085                         Assert.AreEqual (0, tv.Nodes.Count, "NullDS");
2086                 }
2087
2088
2089                 // Events Stuff
2090                 private bool eventDone = false;
2091                 private string treeNodeName = string.Empty;
2092                 private void TreeViewEventHandler1 (object sender, EventArgs e) {
2093                         eventDone = true;
2094                 }
2095                 private void TreeViewEventHandler2 (object sender, TreeNodeEventArgs e) {
2096                         eventDone = true;
2097                         treeNodeName = e.Node.Text;
2098                 }
2099                 private void ResetEvents () {
2100                         eventDone = false;
2101                         treeNodeName = string.Empty;
2102                 }
2103
2104                 [Test]
2105                 public void TreeView_Event_Init () {
2106                         PokerTreeView tv = new PokerTreeView ();
2107                         ResetEvents ();
2108                         Page p = new Page ();
2109                         p.Controls.Add (tv);
2110                         tv.Init += new EventHandler (TreeViewEventHandler1);
2111                         Assert.AreEqual (false, eventDone, "BeforeInit");
2112                         tv.OnInitBase (new EventArgs ());
2113                         Assert.AreEqual (true, eventDone, "AfterInit");
2114                 }
2115                 [Test]
2116                 public void TreeView_Event_SelectedNodeChanged () {
2117                         PokerTreeView tv = new PokerTreeView ();
2118                         ResetEvents ();
2119                         tv.SelectedNodeChanged += new EventHandler (TreeViewEventHandler1);
2120                         Assert.AreEqual (false, eventDone, "BeforeSelectedNodeChanged");
2121                         tv.OnSelectedNodeChangedBase (new EventArgs ());
2122                         Assert.AreEqual (true, eventDone, "AfterSelectedNodeChanged");
2123                 }
2124                 [Test]
2125                 public void TreeView_Event_TreeNodeCheckChanged () {
2126                         string methodName = "TreeNodeCheckChanged";
2127                         PokerTreeView tv = new PokerTreeView ();
2128                         ResetEvents ();
2129                         tv.TreeNodeCheckChanged += new TreeNodeEventHandler (TreeViewEventHandler2);
2130                         Assert.AreEqual (false, eventDone, "Before1 " + methodName);
2131                         Assert.AreEqual (string.Empty, treeNodeName, "Before2 " + methodName);
2132                         tv.OnTreeNodeCheckChangedBase (new TreeNodeEventArgs (new TreeNode (methodName)));
2133                         Assert.AreEqual (true, eventDone, "After1 " + methodName);
2134                         Assert.AreEqual (methodName, treeNodeName, "After2 " + methodName);
2135                 }
2136                 [Test]
2137                 public void TreeView_Event_TreeNodeCollapsed () {
2138                         string methodName = "TreeNodeCollapsed";
2139                         PokerTreeView tv = new PokerTreeView ();
2140                         ResetEvents ();
2141                         tv.TreeNodeCollapsed += new TreeNodeEventHandler (TreeViewEventHandler2);
2142                         Assert.AreEqual (false, eventDone, "Before1 " + methodName);
2143                         Assert.AreEqual (string.Empty, treeNodeName, "Before2 " + methodName);
2144                         tv.OnTreeNodeCollapsedBase (new TreeNodeEventArgs (new TreeNode (methodName)));
2145                         Assert.AreEqual (true, eventDone, "After1 " + methodName);
2146                         Assert.AreEqual (methodName, treeNodeName, "After2 " + methodName);
2147                 }
2148                 [Test]
2149                 public void TreeView_Event_TreeNodeDataBound () {
2150                         string methodName = "TreeNodeDataBound";
2151                         PokerTreeView tv = new PokerTreeView ();
2152                         ResetEvents ();
2153                         tv.TreeNodeDataBound += new TreeNodeEventHandler (TreeViewEventHandler2);
2154                         Assert.AreEqual (false, eventDone, "Before1 " + methodName);
2155                         Assert.AreEqual (string.Empty, treeNodeName, "Before2 " + methodName);
2156                         tv.OnTreeNodeDataBoundBase (new TreeNodeEventArgs (new TreeNode (methodName)));
2157                         Assert.AreEqual (true, eventDone, "After1 " + methodName);
2158                         Assert.AreEqual (methodName, treeNodeName, "After2 " + methodName);
2159                 }
2160                 [Test]
2161                 public void TreeView_Event_TreeNodeExpanded () {
2162                         string methodName = "TreeNodeExpanded";
2163                         PokerTreeView tv = new PokerTreeView ();
2164                         ResetEvents ();
2165                         tv.TreeNodeExpanded += new TreeNodeEventHandler (TreeViewEventHandler2);
2166                         Assert.AreEqual (false, eventDone, "Before1 " + methodName);
2167                         Assert.AreEqual (string.Empty, treeNodeName, "Before2 " + methodName);
2168                         tv.OnTreeNodeExpandedBase (new TreeNodeEventArgs (new TreeNode (methodName)));
2169                         Assert.AreEqual (true, eventDone, "After1 " + methodName);
2170                         Assert.AreEqual (methodName, treeNodeName, "After2 " + methodName);
2171                 }
2172                 [Test]
2173                 public void TreeView_Event_TreeNodePopulate () {
2174                         string methodName = "TreeNodePopulate";
2175                         PokerTreeView tv = new PokerTreeView ();
2176                         ResetEvents ();
2177                         tv.TreeNodePopulate += new TreeNodeEventHandler (TreeViewEventHandler2);
2178                         Assert.AreEqual (false, eventDone, "Before1 " + methodName);
2179                         Assert.AreEqual (string.Empty, treeNodeName, "Before2 " + methodName);
2180                         tv.OnTreeNodePopulateBase (new TreeNodeEventArgs (new TreeNode (methodName)));
2181                         Assert.AreEqual (true, eventDone, "After1 " + methodName);
2182                         Assert.AreEqual (methodName, treeNodeName, "After2 " + methodName);
2183                 }
2184
2185                 [TestFixtureTearDown]
2186                 public void TearDown () {
2187                         WebTest.Unload ();
2188                 }
2189         }
2190 }
2191
2192 #endif