New test.
[mono.git] / mcs / class / System.Web / Test / System.Web.UI.HtmlControls / HtmlButtonTest.cs
1 //
2 // HtmlButtonTest.cs
3 //      - Unit tests for System.Web.UI.HtmlControls.HtmlButton
4 //
5 // Author:
6 //      Jackson Harper  (jackson@ximian.com)
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 using System;
31 using System.IO;
32 using System.Web.UI;
33 using System.Web.UI.HtmlControls;
34
35 using NUnit.Framework;
36
37 namespace MonoTests.System.Web.UI.HtmlControls {
38
39         public class HtmlButtonPoker : HtmlButton {
40
41                 public HtmlButtonPoker ()
42                 {
43                         TrackViewState ();
44                 }
45
46                 public object SaveState ()
47                 {
48                         return SaveViewState ();
49                 }
50
51                 public void LoadState (object state)
52                 {
53                         LoadViewState (state);
54                 }
55
56                 public void DoRenderAttributes (HtmlTextWriter writer)
57                 {
58                         RenderAttributes (writer);
59                 }
60         }
61
62         [TestFixture]
63         public class HtmlButtonTest {
64
65                 [Test]
66                 public void Defaults ()
67                 {
68                         HtmlButtonPoker p = new HtmlButtonPoker ();
69
70                         Assert.IsTrue (p.CausesValidation, "A1");
71 #if NET_2_0
72                         Assert.AreEqual ("", p.ValidationGroup, "A2");
73 #endif
74                 }
75
76                 [Test]
77                 public void CleanProperties ()
78                 {
79                         HtmlButtonPoker p = new HtmlButtonPoker ();
80
81                         p.CausesValidation = false;
82                         Assert.IsFalse (p.CausesValidation, "A1");
83
84                         p.CausesValidation = true;
85                         Assert.IsTrue (p.CausesValidation, "A2");
86
87                         p.CausesValidation = false;
88                         Assert.IsFalse (p.CausesValidation, "A3");
89                 }
90
91                 [Test]
92                 public void ViewState ()
93                 {
94                         HtmlButtonPoker p = new HtmlButtonPoker ();
95                         p.CausesValidation = true;
96 #if NET_2_0
97                         p.ValidationGroup = "VG";
98 #endif
99                         object state = p.SaveState();
100
101                         HtmlButtonPoker copy = new HtmlButtonPoker ();
102                         copy.LoadState (state);
103 #if NET_2_0
104                         Assert.AreEqual ("VG", copy.ValidationGroup, "A1");
105 #endif
106                         Assert.IsTrue (copy.CausesValidation, "A2");
107                 }
108
109                 [Test]
110                 public void RenderAttributes ()
111                 {
112                         StringWriter sw = new StringWriter ();
113                         HtmlTextWriter tw = new HtmlTextWriter (sw);
114
115                         HtmlButtonPoker p = new HtmlButtonPoker ();
116
117                         Assert.AreEqual (p.Attributes.Count, 0, "A1");
118
119                         p.DoRenderAttributes (tw);
120                         Assert.AreEqual (sw.ToString (), String.Empty, "A2");
121
122                         p.ServerClick += new EventHandler (EmptyHandler);
123
124                         p.DoRenderAttributes (tw);
125                         // This is empty because the control doesn't have
126                         // its Page property initialized
127                         Assert.AreEqual (sw.ToString (), String.Empty, "A3");
128                 }
129
130                 private static void EmptyHandler (object sender, EventArgs e)
131                 {
132                 }
133         }       
134 }
135