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
93 WebTest.CopyResource (GetType (), "ButtonColor_Bug325489.aspx", "ButtonColor_Bug325489.aspx");
97 public void ButtonColor_Bug325489 ()
99 WebTest t = new WebTest ("ButtonColor_Bug325489.aspx");
100 string origHtml = @"<input type=""submit"" name=""button1"" value="""" id=""button1"" style=""background-color:#316AC5;"" />";
101 string html = t.Run ();
102 string renderedHtml = HtmlDiff.GetControlFromPageHtml (html);
104 HtmlDiff.AssertAreEqual (origHtml, renderedHtml, "#A1");
108 public void Button_DefaultValues ()
110 Button b = new Button ();
111 Assert.AreEqual (true, b.CausesValidation, "CausesValidation");
112 Assert.AreEqual (string.Empty, b.CommandArgument, "CommandArgument");
113 Assert.AreEqual (string.Empty, b.CommandName, "CommandName");
115 Assert.AreEqual (string.Empty, b.ValidationGroup, "ValidationGroup");
116 Assert.AreEqual (string.Empty, b.OnClientClick, "OnClientClick");
117 Assert.AreEqual (string.Empty, b.PostBackUrl, "PostBackUrl");
118 Assert.AreEqual (true, b.UseSubmitBehavior, "UseSubmitBehavior");
123 public void AssignProperties ()
125 Button b = new Button ();
127 Assert.AreEqual (string.Empty, b.OnClientClick, "OnClientClick#1");
128 b.OnClientClick = "Test()";
129 Assert.AreEqual ("Test()", b.OnClientClick, "OnClientClick#2");
130 Assert.AreEqual (string.Empty, b.PostBackUrl, "PostBackUrl");
131 b.PostBackUrl = "Test";
132 Assert.AreEqual ("Test", b.PostBackUrl, "PostBackUrl");
133 Assert.AreEqual (true, b.UseSubmitBehavior, "UseSubmitBehavior#1");
134 b.UseSubmitBehavior = false;
135 Assert.AreEqual (false, b.UseSubmitBehavior, "UseSubmitBehavior#2");
136 Assert.AreEqual (string.Empty, b.ValidationGroup, "ValidationGroup#1");
137 b.ValidationGroup = "test";
138 Assert.AreEqual ("test", b.ValidationGroup, "ValidationGroup#2");
143 public void Button_ViewState ()
145 PokerButton p = new PokerButton ();
147 Assert.AreEqual (p.Text, "", "A1");
149 Assert.AreEqual (p.Text, "Hello", "A2");
152 p.ValidationGroup = "VG1";
153 p.UseSubmitBehavior = false;
154 p.OnClientClick = "ClientClick()";
155 p.PostBackUrl = "PostBackUrl";
156 Assert.AreEqual (p.ValidationGroup, "VG1", "A3");
157 Assert.AreEqual (false, p.UseSubmitBehavior, "ViewState_UseSubmitBehavior#original");
158 Assert.AreEqual ("ClientClick()", p.OnClientClick, "ViewState_OnClientClick#original");
159 Assert.AreEqual ("PostBackUrl", p.PostBackUrl, "ViewState_PostBackUrl#original");
162 object state = p.SaveState ();
164 PokerButton copy = new PokerButton ();
165 copy.LoadState (state);
166 Assert.AreEqual (copy.Text, "Hello", "A4");
169 Assert.AreEqual (copy.ValidationGroup, "VG1", "A5");
170 Assert.AreEqual (false, copy.UseSubmitBehavior, "ViewState_UseSubmitBehavior#copy");
171 Assert.AreEqual ("ClientClick()", p.OnClientClick, "ViewState_OnClientClick#copy");
172 Assert.AreEqual ("PostBackUrl", p.PostBackUrl, "ViewState_PostBackUrl#copy");
177 public void Button_Render ()
179 StringWriter sw = new StringWriter ();
180 HtmlTextWriter tw = new HtmlTextWriter (sw);
182 Button b = new Button ();
184 b.RenderControl (tw);
186 Assert.AreEqual (true, sw.ToString().IndexOf ("value=\"Hello\"") != -1, "A4");
187 Assert.AreEqual (true, sw.ToString().IndexOf ("<input") != -1, "A5");
188 Assert.AreEqual (true, sw.ToString().IndexOf ("type=\"submit\"") != -1, "A6");
192 public void IgnoresChildren ()
194 Button b = new Button ();
195 b.Controls.Add (new LiteralControl ("hola"));
196 Assert.AreEqual (1, b.Controls.Count, "controls");
197 StringWriter sw = new StringWriter ();
198 HtmlTextWriter tw = new HtmlTextWriter (sw);
199 b.RenderControl (tw);
200 string str = tw.ToString ();
201 Assert.AreEqual (-1, str.IndexOf ("hola"), "hola");
206 public void Button_Render2 () {
207 StringWriter sw = new StringWriter ();
208 HtmlTextWriter tw = new HtmlTextWriter (sw);
210 Button b = new Button ();
213 b.UseSubmitBehavior = false;
215 b.ToolTip = "Hello_ToolTip";
216 b.RenderControl (tw);
218 string strTarget = "<input type=\"button\" name=\"MyButton\" value=\"Hello\" disabled=\"disabled\" title=\"Hello_ToolTip\" />";
219 string str = sw.ToString();
220 HtmlDiff.AssertAreEqual (strTarget, str, "Button_Render2");
224 public void GetPostBackOptions ()
226 PokerButton b = new PokerButton ();
227 PostBackOptions opt = b.GetPostBackOptions ();
228 Assert.AreEqual (typeof (PokerButton), opt.TargetControl.GetType (), "GetPostBackOptions#1");
232 public void OnPreRender ()
234 PokerButton b = new PokerButton ();
235 b.PreRender += new EventHandler (b_PreRender);
236 Assert.AreEqual (false, eventPreRender, "Before PreRender");
237 b.OnPreRender (new EventArgs ());
238 Assert.AreEqual (true, eventPreRender, "After PreRender");
242 void b_PreRender (object sender, EventArgs e)
244 eventPreRender = true;
248 [Category("NunitWeb")]
249 public void PostBackUrl ()
251 WebTest t = new WebTest (PageInvoker.CreateOnLoad (PostBackUrl_Load));
252 string html = t.Run ();
253 if (html.IndexOf ("onclick") == -1)
254 Assert.Fail ("Button Postback script not created fail");
255 if (html.IndexOf ("MyPageWithMaster.aspx") == -1)
256 Assert.Fail ("Link to postback page not created fail");
257 if (html.IndexOf ("__PREVIOUSPAGE") == -1)
258 Assert.Fail ("Previos page hidden control not created fail");
261 public static void PostBackUrl_Load (Page p)
263 PokerButton b = new PokerButton ();
264 b.PostBackUrl = "~/MyPageWithMaster.aspx";
265 p.Form.Controls.Add (b);
269 public void RaisePostBackEvent ()
271 Page p = new Page ();
272 PokerButton b = new PokerButton ();
273 b.Click += new EventHandler (b_Click);
275 Assert.AreEqual (false, eventRaisePostBackEvent, "RaisePostBackEvent#1");
276 b.RaisePostBackEvent ("Click");
277 Assert.AreEqual (true, eventRaisePostBackEvent, "RaisePostBackEvent#2");
280 bool eventRaisePostBackEvent;
281 void b_Click (object sender, EventArgs e)
283 eventRaisePostBackEvent = true;
287 [Category ("NunitWeb")]
288 public void UseSubmitBehavior ()
290 WebTest t = new WebTest (PageInvoker.CreateOnLoad (UseSubmitBehavior_Load));
291 string html = t.Run ();
292 if (html.IndexOf ("onclick") == -1)
293 Assert.Fail ("Button Postback script not created fail");
296 public static void UseSubmitBehavior_Load (Page p)
298 PokerButton b = new PokerButton ();
299 b.UseSubmitBehavior = false;
304 public void ValidationGroup ()
309 [TestFixtureTearDown]
310 public void TearDown ()