2 // Tests for System.Web.UI.WebControls.Button.cs
5 // Jordi Mas i Hernandez (jordi@ximian.com)
6 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
10 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
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:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
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.
32 using NUnit.Framework;
35 using System.Globalization;
38 using System.Web.UI.WebControls;
39 using MonoTests.SystemWeb.Framework;
40 using MonoTests.stand_alone.WebHarness;
42 namespace MonoTests.System.Web.UI.WebControls
44 class PokerButton : Button {
50 public object SaveState ()
52 return SaveViewState ();
55 public void LoadState (object o)
60 public string Render ()
62 StringWriter sw = new StringWriter ();
64 HtmlTextWriter writer = new HtmlTextWriter (sw);
66 return writer.InnerWriter.ToString ();
69 public new PostBackOptions GetPostBackOptions ()
71 return base.GetPostBackOptions ();
74 public new void OnPreRender (EventArgs e)
79 public new void RaisePostBackEvent (string eventArgument)
81 base.RaisePostBackEvent (eventArgument);
88 public class ButtonTest {
91 public void Button_DefaultValues ()
93 Button b = new Button ();
94 Assert.AreEqual (true, b.CausesValidation, "CausesValidation");
95 Assert.AreEqual (string.Empty, b.CommandArgument, "CommandArgument");
96 Assert.AreEqual (string.Empty, b.CommandName, "CommandName");
98 Assert.AreEqual (string.Empty, b.ValidationGroup, "ValidationGroup");
99 Assert.AreEqual (string.Empty, b.OnClientClick, "OnClientClick");
100 Assert.AreEqual (string.Empty, b.PostBackUrl, "PostBackUrl");
101 Assert.AreEqual (true, b.UseSubmitBehavior, "UseSubmitBehavior");
106 public void AssignProperties ()
108 Button b = new Button ();
110 Assert.AreEqual (string.Empty, b.OnClientClick, "OnClientClick#1");
111 b.OnClientClick = "Test()";
112 Assert.AreEqual ("Test()", b.OnClientClick, "OnClientClick#2");
113 Assert.AreEqual (string.Empty, b.PostBackUrl, "PostBackUrl");
114 b.PostBackUrl = "Test";
115 Assert.AreEqual ("Test", b.PostBackUrl, "PostBackUrl");
116 Assert.AreEqual (true, b.UseSubmitBehavior, "UseSubmitBehavior#1");
117 b.UseSubmitBehavior = false;
118 Assert.AreEqual (false, b.UseSubmitBehavior, "UseSubmitBehavior#2");
119 Assert.AreEqual (string.Empty, b.ValidationGroup, "ValidationGroup#1");
120 b.ValidationGroup = "test";
121 Assert.AreEqual ("test", b.ValidationGroup, "ValidationGroup#2");
126 public void Button_ViewState ()
128 PokerButton p = new PokerButton ();
130 Assert.AreEqual (p.Text, "", "A1");
132 Assert.AreEqual (p.Text, "Hello", "A2");
135 p.ValidationGroup = "VG1";
136 p.UseSubmitBehavior = false;
137 p.OnClientClick = "ClientClick()";
138 p.PostBackUrl = "PostBackUrl";
139 Assert.AreEqual (p.ValidationGroup, "VG1", "A3");
140 Assert.AreEqual (false, p.UseSubmitBehavior, "ViewState_UseSubmitBehavior#original");
141 Assert.AreEqual ("ClientClick()", p.OnClientClick, "ViewState_OnClientClick#original");
142 Assert.AreEqual ("PostBackUrl", p.PostBackUrl, "ViewState_PostBackUrl#original");
145 object state = p.SaveState ();
147 PokerButton copy = new PokerButton ();
148 copy.LoadState (state);
149 Assert.AreEqual (copy.Text, "Hello", "A4");
152 Assert.AreEqual (copy.ValidationGroup, "VG1", "A5");
153 Assert.AreEqual (false, copy.UseSubmitBehavior, "ViewState_UseSubmitBehavior#copy");
154 Assert.AreEqual ("ClientClick()", p.OnClientClick, "ViewState_OnClientClick#copy");
155 Assert.AreEqual ("PostBackUrl", p.PostBackUrl, "ViewState_PostBackUrl#copy");
160 public void Button_Render ()
162 StringWriter sw = new StringWriter ();
163 HtmlTextWriter tw = new HtmlTextWriter (sw);
165 Button b = new Button ();
167 b.RenderControl (tw);
169 Assert.AreEqual (true, sw.ToString().IndexOf ("value=\"Hello\"") != -1, "A4");
170 Assert.AreEqual (true, sw.ToString().IndexOf ("<input") != -1, "A5");
171 Assert.AreEqual (true, sw.ToString().IndexOf ("type=\"submit\"") != -1, "A6");
175 public void IgnoresChildren ()
177 Button b = new Button ();
178 b.Controls.Add (new LiteralControl ("hola"));
179 Assert.AreEqual (1, b.Controls.Count, "controls");
180 StringWriter sw = new StringWriter ();
181 HtmlTextWriter tw = new HtmlTextWriter (sw);
182 b.RenderControl (tw);
183 string str = tw.ToString ();
184 Assert.AreEqual (-1, str.IndexOf ("hola"), "hola");
189 public void Button_Render2 () {
190 StringWriter sw = new StringWriter ();
191 HtmlTextWriter tw = new HtmlTextWriter (sw);
193 Button b = new Button ();
196 b.UseSubmitBehavior = false;
198 b.ToolTip = "Hello_ToolTip";
199 b.RenderControl (tw);
201 string strTarget = "<input type=\"button\" name=\"MyButton\" value=\"Hello\" disabled=\"disabled\" title=\"Hello_ToolTip\" />";
202 string str = sw.ToString();
203 HtmlDiff.AssertAreEqual (strTarget, str, "Button_Render2");
207 public void GetPostBackOptions ()
209 PokerButton b = new PokerButton ();
210 PostBackOptions opt = b.GetPostBackOptions ();
211 Assert.AreEqual (typeof (PokerButton), opt.TargetControl.GetType (), "GetPostBackOptions#1");
215 public void OnPreRender ()
217 PokerButton b = new PokerButton ();
218 b.PreRender += new EventHandler (b_PreRender);
219 Assert.AreEqual (false, eventPreRender, "Before PreRender");
220 b.OnPreRender (new EventArgs ());
221 Assert.AreEqual (true, eventPreRender, "After PreRender");
225 void b_PreRender (object sender, EventArgs e)
227 eventPreRender = true;
231 [Category("NunitWeb")]
232 public void PostBackUrl ()
234 WebTest t = new WebTest (PageInvoker.CreateOnLoad (PostBackUrl_Load));
235 string html = t.Run ();
236 if (html.IndexOf ("onclick") == -1)
237 Assert.Fail ("Button Postback script not created fail");
238 if (html.IndexOf ("MyPageWithMaster.aspx") == -1)
239 Assert.Fail ("Link to postback page not created fail");
240 if (html.IndexOf ("__PREVIOUSPAGE") == -1)
241 Assert.Fail ("Previos page hidden control not created fail");
244 public static void PostBackUrl_Load (Page p)
246 PokerButton b = new PokerButton ();
247 b.PostBackUrl = "~/MyPageWithMaster.aspx";
248 p.Form.Controls.Add (b);
252 public void RaisePostBackEvent ()
254 Page p = new Page ();
255 PokerButton b = new PokerButton ();
256 b.Click += new EventHandler (b_Click);
258 Assert.AreEqual (false, eventRaisePostBackEvent, "RaisePostBackEvent#1");
259 b.RaisePostBackEvent ("Click");
260 Assert.AreEqual (true, eventRaisePostBackEvent, "RaisePostBackEvent#2");
263 bool eventRaisePostBackEvent;
264 void b_Click (object sender, EventArgs e)
266 eventRaisePostBackEvent = true;
270 [Category ("NunitWeb")]
271 public void UseSubmitBehavior ()
273 WebTest t = new WebTest (PageInvoker.CreateOnLoad (UseSubmitBehavior_Load));
274 string html = t.Run ();
275 if (html.IndexOf ("onclick") == -1)
276 Assert.Fail ("Button Postback script not created fail");
279 public static void UseSubmitBehavior_Load (Page p)
281 PokerButton b = new PokerButton ();
282 b.UseSubmitBehavior = false;
287 public void ValidationGroup ()
292 [TestFixtureTearDown]
293 public void TearDown ()