2007-01-30 Adar Wesley <adarw@mainsofot.com>
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.WebControls / TreeNodeTest.cs
1 //\r
2 // Tests for System.Web.UI.WebControls.ImageMap.cs\r
3 //\r
4 // Author:\r
5 //  Hagit Yidov (hagity@mainsoft.com\r
6 //\r
7 // (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)\r
8 //\r
9 // Permission is hereby granted, free of charge, to any person obtaining\r
10 // a copy of this software and associated documentation files (the\r
11 // "Software"), to deal in the Software without restriction, including\r
12 // without limitation the rights to use, copy, modify, merge, publish,\r
13 // distribute, sublicense, and/or sell copies of the Software, and to\r
14 // permit persons to whom the Software is furnished to do so, subject to\r
15 // the following conditions:\r
16 // \r
17 // The above copyright notice and this permission notice shall be\r
18 // included in all copies or substantial portions of the Software.\r
19 // \r
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
27 //\r
28 \r
29 #if NET_2_0\r
30 using NUnit.Framework;\r
31 using System;\r
32 using System.IO;\r
33 using System.Globalization;\r
34 using System.Web;\r
35 using System.Web.UI;\r
36 using System.Web.UI.WebControls;\r
37 using MonoTests.stand_alone.WebHarness;\r
38 using MonoTests.SystemWeb.Framework;\r
39 using System.Threading;\r
40 \r
41 namespace MonoTests.System.Web.UI.WebControls {\r
42         class PokerTreeNode : TreeNode {\r
43                 // View state Stuff\r
44                 public PokerTreeNode () {\r
45                         TrackViewState ();\r
46                 }\r
47 \r
48                 public object SaveState () {\r
49                         return SaveViewState ();\r
50                 }\r
51 \r
52                 public void LoadState (object o) {\r
53                         LoadViewState (o);\r
54                 }\r
55 \r
56                 public bool IsTrackingViewStateBase { get { return (base.IsTrackingViewState); } }\r
57 \r
58                 public virtual object CloneBase () {\r
59                         return (base.Clone ());\r
60                 }\r
61 \r
62                 public virtual void RenderPostTextBase (HtmlTextWriter writer) {\r
63                         base.RenderPostText (writer);\r
64                 }\r
65 \r
66                 public virtual void RenderPreTextBase (HtmlTextWriter writer) {\r
67                         base.RenderPreText (writer);\r
68                 }\r
69 \r
70         }\r
71 \r
72         [TestFixture]\r
73         public class TreeNodeTest {\r
74 \r
75                 [Test]\r
76                 public void TreeNode_DefaultProperties () {\r
77                         PokerTreeNode tn = new PokerTreeNode ();\r
78                         Assert.AreEqual (false, tn.Checked, "Checked");\r
79                         Assert.AreEqual (0, tn.ChildNodes.Count, "ChildNodes.Count");\r
80                         Assert.AreEqual (false, tn.DataBound, "DataBound");\r
81                         Assert.AreEqual (null, tn.DataItem, "DataItem");\r
82                         Assert.AreEqual (string.Empty, tn.DataPath, "DataPath");\r
83                         Assert.AreEqual (0, tn.Depth, "Depth");\r
84                         Assert.AreEqual (null, tn.Expanded, "Expanded");\r
85                         Assert.AreEqual (string.Empty, tn.ImageToolTip, "ImageToolTip");\r
86                         Assert.AreEqual (string.Empty, tn.ImageUrl, "ImageUrl");\r
87                         Assert.AreEqual (string.Empty, tn.NavigateUrl, "NavigateUrl");\r
88                         Assert.AreEqual (null, tn.Parent, "Parent");\r
89                         Assert.AreEqual (false, tn.PopulateOnDemand, "PopulateOnDemand");\r
90                         Assert.AreEqual (TreeNodeSelectAction.Select, tn.SelectAction, "SelectAction");\r
91                         Assert.AreEqual (false, tn.Selected, "Selected");\r
92                         Assert.AreEqual (null, tn.ShowCheckBox, "ShowCheckBox");\r
93                         Assert.AreEqual (string.Empty, tn.Target, "Target");\r
94                         Assert.AreEqual (string.Empty, tn.Text, "Text");\r
95                         Assert.AreEqual (string.Empty, tn.Value, "Value");\r
96                         Assert.AreEqual (string.Empty, tn.ToolTip, "ToolTip");\r
97                         Assert.AreEqual (string.Empty, tn.ValuePath, "ValuePath");\r
98                         Assert.AreEqual (true, tn.IsTrackingViewStateBase, "IsTrackingViewState");\r
99                 }\r
100 \r
101                 [Test]\r
102                 public void TreeNode_AssignToDefaultProperties ()\r
103                 {\r
104                         PokerTreeNode tn = new PokerTreeNode ();\r
105                         tn.Checked = false;\r
106                         Assert.AreEqual (false, tn.Checked, "Checked");\r
107                         tn.ChildNodes.Add (new TreeNode ());\r
108                         Assert.AreEqual (1, tn.ChildNodes.Count, "ChildNodes.Count");\r
109                         tn.Expanded = false;\r
110                         Assert.AreEqual (false, tn.Expanded, "Expanded");\r
111                         tn.ImageToolTip = string.Empty;\r
112                         Assert.AreEqual (string.Empty, tn.ImageToolTip, "ImageToolTip");\r
113                         tn.ImageUrl = string.Empty;\r
114                         Assert.AreEqual (string.Empty, tn.ImageUrl, "ImageUrl");\r
115                         tn.NavigateUrl = string.Empty;\r
116                         Assert.AreEqual (string.Empty, tn.NavigateUrl, "NavigateUrl");\r
117                         tn.PopulateOnDemand = false;\r
118                         Assert.AreEqual (false, tn.PopulateOnDemand, "PopulateOnDemand");\r
119                         tn.SelectAction = TreeNodeSelectAction.Select;\r
120                         Assert.AreEqual (TreeNodeSelectAction.Select, tn.SelectAction, "SelectAction");\r
121                         tn.Selected = false;\r
122                         Assert.AreEqual (false, tn.Selected, "Selected");\r
123                         tn.ShowCheckBox = false;\r
124                         Assert.AreEqual (false, tn.ShowCheckBox, "ShowCheckBox");\r
125                         tn.Target = string.Empty;\r
126                         Assert.AreEqual (string.Empty, tn.Target, "Target");\r
127                         tn.Text = string.Empty;\r
128                         Assert.AreEqual (string.Empty, tn.Text, "Text");\r
129                         tn.Value = string.Empty;\r
130                         Assert.AreEqual (string.Empty, tn.Value, "Value");\r
131                         tn.ToolTip = string.Empty;\r
132                         Assert.AreEqual (string.Empty, tn.ToolTip, "ToolTip");\r
133                 }\r
134 \r
135                 [Test]\r
136                 public void TreeNode_Method_Select () {\r
137                         PokerTreeNode tn = new PokerTreeNode ();\r
138                         Assert.AreEqual (false, tn.Selected, "BeforeSelect");\r
139                         tn.Select ();\r
140                         Assert.AreEqual (true, tn.Selected, "AfterSelect");\r
141                 }\r
142 \r
143                 [Test]\r
144                 public void TreeNode_Method_Clone () {\r
145                         PokerTreeNode tn1 = new PokerTreeNode ();\r
146                         TreeNode tn2 = new TreeNode ();\r
147                         tn1.Text = "CloneThisNode";\r
148                         tn1.Value = "111";\r
149                         Assert.AreEqual (string.Empty, tn2.Text, "BeforeClone1");\r
150                         Assert.AreEqual (string.Empty, tn2.Value, "BeforeClone2");\r
151                         tn2 = (TreeNode) tn1.CloneBase ();\r
152                         Assert.AreEqual ("CloneThisNode", tn2.Text, "AfterClone1");\r
153                         Assert.AreEqual ("111", tn2.Value, "AfterClone2");\r
154                 }\r
155 \r
156                 [Test]\r
157                 [Category ("NunitWeb")]\r
158                 public void TreeNode_NavigateUrl () {\r
159                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadNavigateUrl));\r
160                         string strTarget =\r
161 @"<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
162         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">\r
163                 <tr>\r
164                         <td><img src=""/NunitWeb/WebResource.axd?d=edXX1vkoy5lI0CekgaZ5zZhMbc1ZCZv4nlS9J-l53l41&amp;t=632883840303269703"" alt="""" /></td><td style=""white-space:nowrap;""><a class=""treeview1_0"" href=""NavigateUrl"" id=""treeview1t0"">TreeNode1</a></td>\r
165                 </tr>\r
166         </table>\r
167 </div><a id=""treeview1_SkipLink""></a>";\r
168                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());\r
169                         HtmlDiff.AssertAreEqual (strTarget, str, "PostbackNavigate");\r
170                 }\r
171                 public static void pageLoadNavigateUrl (Page page) {\r
172                         TreeView tv = new TreeView ();\r
173                         tv.ID = "treeview1";\r
174                         PokerTreeNode tn1 = new PokerTreeNode ();\r
175                         tn1.Text = "TreeNode1";\r
176                         tn1.NavigateUrl = "NavigateUrl";\r
177                         tv.Nodes.Add (tn1);\r
178                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);\r
179                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);\r
180                         page.Form.Controls.Add (lcb);\r
181                         page.Form.Controls.Add (tv);\r
182                         page.Form.Controls.Add (lce);\r
183                 }\r
184 \r
185                 static void tv_SelectedNodeChanged (object sender, EventArgs e) {\r
186                         TreeView tv = (TreeView) sender;\r
187                         WebTest.CurrentTest.UserData = tv.SelectedNode.Text;\r
188                 }\r
189 \r
190                 [Test]\r
191                 [Category ("NunitWeb")]\r
192                 public void TreeNode_Render () {\r
193                         WebTest t = new WebTest (PageInvoker.CreateOnLoad (pageLoadRender));\r
194                         string strTarget =\r
195 @"<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
196         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">\r
197                 <tr>\r
198                         <td><a id=""treeview1n0"" href=""javascript:TreeView_ToggleNode(treeview1_Data,0,treeview1n0,' ',treeview1n0Nodes)""><img src=""/NunitWeb/WebResource.axd?d=edXX1vkoy5lI0CekgaZ5zW7-1Af97Wq_r6fRK7PDqP81&amp;t=632883840303269703"" alt=""Collapse text"" style=""border-width:0;"" /></a></td><td><a href=""navigateUrl"" target=""target"" onclick=""javascript:TreeView_SelectNode(treeview1_Data, this,'treeview1t0');javascript:TreeView_ToggleNode(treeview1_Data,0,treeview1n0,' ',treeview1n0Nodes)"" title=""ToolTip"" id=""treeview1t0i""><img src=""imageUrl"" alt=""ImageToolTip"" style=""border-width:0;"" /></a></td><td style=""white-space:nowrap;""><input type=""checkbox"" name=""treeview1n0CheckBox"" id=""treeview1n0CheckBox"" checked=""checked"" title=""text"" /><a class=""treeview1_0"" href=""navigateUrl"" target=""target"" onclick=""javascript:TreeView_SelectNode(treeview1_Data, this,'treeview1t0');javascript:TreeView_ToggleNode(treeview1_Data,0,treeview1n0,' ',treeview1n0Nodes)"" title=""ToolTip"" id=""treeview1t0"">text</a></td>\r
199                 </tr>\r
200         </table>\r
201         <table cellpadding=""0"" cellspacing=""0"" style=""border-width:0;"">\r
202                 <tr>\r
203                         <td><div style=""width:20px;height:1px""></div></td><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','svalue\\childenode')"" onclick=""TreeView_SelectNode(treeview1_Data, this,'treeview1t1');"" id=""treeview1t1"">childenode</a></td>\r
204                 </tr>\r
205         </table>\r
206 </div><a id=""treeview1_SkipLink""></a>";\r
207                         string str = HtmlDiff.GetControlFromPageHtml (t.Run ());\r
208                         HtmlDiff.AssertAreEqual (strTarget, str, "Render");\r
209                 }\r
210                 public static void pageLoadRender (Page page) {\r
211                         TreeView tv = new TreeView ();\r
212                         tv.EnableClientScript = false;\r
213                         tv.ID = "treeview1";\r
214                         TreeNode tn = new TreeNode\r
215                                 ("text", "value", "imageUrl", "navigateUrl", "target");\r
216                         tn.Checked = true;\r
217                         tn.ChildNodes.Add (new TreeNode ("childenode"));\r
218                         tn.Expanded = true;\r
219                         tn.ImageToolTip = "ImageToolTip";\r
220                         tn.PopulateOnDemand = false;\r
221                         tn.SelectAction = TreeNodeSelectAction.SelectExpand;\r
222                         tn.Selected = true;\r
223                         tn.ShowCheckBox = true;\r
224                         tn.ToolTip = "ToolTip";\r
225                         tv.Nodes.Add (tn);\r
226                         tv.DataBind ();\r
227                         LiteralControl lcb = new LiteralControl (HtmlDiff.BEGIN_TAG);\r
228                         LiteralControl lce = new LiteralControl (HtmlDiff.END_TAG);\r
229                         page.Form.Controls.Add (lcb);\r
230                         page.Form.Controls.Add (tv);\r
231                         page.Form.Controls.Add (lce);\r
232                 }\r
233 \r
234                 [Test]\r
235                 public void TreeNode_ToggleExpandState ()\r
236                 {\r
237                         TreeNode node = new TreeNode ("node");\r
238                         Assert.AreEqual (null, node.Expanded, "TreeNode_ToggleExpandState#1");\r
239                         node.ToggleExpandState ();\r
240                         Assert.AreEqual (true, node.Expanded, "TreeNode_ToggleExpandState#2");\r
241                         node.ToggleExpandState ();\r
242                         Assert.AreEqual (false, node.Expanded, "TreeNode_ToggleExpandState#3");\r
243                 }\r
244         }\r
245 }\r
246 \r
247 \r
248 #endif\r