3 // - Unit tests for System.Web.UI.WebControls.Image
6 // Sebastien Pouliot <sebastien@ximian.com>
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
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:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
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.
34 using System.Web.UI.WebControls;
36 using NUnit.Framework;
38 namespace MonoTests.System.Web.UI.WebControls {
40 public class TestImage : Image {
43 get { return base.TagName; }
46 public StateBag StateBag {
47 get { return base.ViewState; }
50 public string Render ()
52 HtmlTextWriter writer = new HtmlTextWriter (new StringWriter ());
54 return writer.InnerWriter.ToString ();
58 public class PokerImage : Image
60 public PokerImage () {
64 public object SaveState () {
65 return SaveViewState ();
68 public void LoadState (object state) {
69 LoadViewState (state);
74 public class ImageTest {
76 private const string imageUrl = "http://www.mono-project.com/stylesheets/images.wiki.png";
79 public void DefaultProperties ()
81 TestImage i = new TestImage ();
82 Assert.AreEqual (0, i.Attributes.Count, "Attributes.Count");
84 Assert.AreEqual (String.Empty, i.AlternateText, "AlternateText");
85 Assert.IsTrue (i.Enabled, "Enabled");
86 Assert.IsNotNull (i.Font, "Font");
87 Assert.AreEqual (ImageAlign.NotSet, i.ImageAlign, "ImageAlign");
88 Assert.AreEqual (String.Empty, i.ImageUrl, "ImageUrl");
89 // this was added in Fx 1.1 SP1
90 Assert.AreEqual (String.Empty, i.DescriptionUrl, "DescriptionUrl");
91 Assert.IsFalse (i.GenerateEmptyAlternateText, "GenerateEmptyAlternateText");
92 Assert.AreEqual ("img", i.Tag, "TagName");
93 Assert.AreEqual (0, i.Attributes.Count, "Attributes.Count-2");
97 public void ViewStateTest () {
99 PokerImage src = new PokerImage ();
102 PokerImage dest = new PokerImage ();
103 dest.LoadState (src.SaveState ());
105 Assert.AreEqual (false, dest.Enabled, "Enabled");
109 public void NullProperties ()
111 TestImage i = new TestImage ();
112 i.AlternateText = null;
113 Assert.AreEqual (String.Empty, i.AlternateText, "AlternateText");
115 Assert.IsTrue (i.Enabled, "Enabled");
116 i.ImageAlign = ImageAlign.NotSet;
117 Assert.AreEqual (ImageAlign.NotSet, i.ImageAlign, "ImageAlign");
119 Assert.AreEqual (String.Empty, i.ImageUrl, "ImageUrl");
120 i.DescriptionUrl = null;
122 Assert.AreEqual (0, i.Attributes.Count, "Attributes.Count");
123 Assert.AreEqual (1, i.StateBag.Count, "ViewState.Count-1");
124 i.GenerateEmptyAlternateText = false;
125 Assert.AreEqual (2, i.StateBag.Count, "ViewState.Count-2");
129 public void CleanProperties ()
131 TestImage i = new TestImage ();
132 i.AlternateText = "alt";
133 Assert.AreEqual ("alt", i.AlternateText, "AlternateText");
135 i.ImageAlign = ImageAlign.Top;
136 i.ImageUrl = imageUrl;
137 i.DescriptionUrl = "http://www.mono-project.com/";
138 i.GenerateEmptyAlternateText = true;
139 Assert.AreEqual (5, i.StateBag.Count, "ViewState.Count");
140 Assert.AreEqual (0, i.Attributes.Count, "Attributes.Count");
142 i.AlternateText = null;
144 i.ImageAlign = ImageAlign.NotSet;
146 i.DescriptionUrl = null;
147 i.GenerateEmptyAlternateText = false;
148 // ImageAlign and GenerateEmptyAlternateText can't be removed by returning to default value
149 Assert.AreEqual (2, i.StateBag.Count, "ViewState.Count-2");
150 Assert.AreEqual (ImageAlign.NotSet, i.StateBag["ImageAlign"], "ImageAlign");
151 Assert.IsFalse ((bool)i.StateBag["GenerateEmptyAlternateText"], "GenerateEmptyAlternateText");
152 Assert.AreEqual (0, i.Attributes.Count, "Attributes.Count-2");
156 // LAMESPEC: 2.0 beta2 documents this as an ArgumentException
157 [ExpectedException (typeof (ArgumentOutOfRangeException))]
158 public void ImageAlign_Invalid ()
160 Image i = new Image ();
161 i.ImageAlign = (ImageAlign)Int32.MinValue;
165 public void RenderEnabled () {
166 TestImage img = new TestImage ();
169 string html = img.Render ();
170 Assert.IsTrue (html.IndexOf (" class=\"aspNetDisabled\"") > 0, "#");
174 public void Render ()
176 TestImage i = new TestImage ();
177 // fx 2.0 (beta2) like to add: style="border-width:0px;",
178 // while 1.x adds: border="0". Both aren't coming from Image
179 // so we're testing subparts of the string here
180 string s = i.Render ();
181 Assert.IsTrue (i.Render ().IndexOf (" src=\"\"") > 0, "src");
183 i.GenerateEmptyAlternateText = true;
185 Assert.IsTrue (i.Render ().IndexOf (" alt=\"\"") > 0, "alt/GenerateEmptyAlternateText-true");
187 i.GenerateEmptyAlternateText = false;
189 Assert.IsTrue (i.Render ().IndexOf (" alt=\"\"") < 0, "alt/GenerateEmptyAlternateText-false");
191 i.AlternateText = "alt";
193 Assert.IsTrue (i.Render ().IndexOf (" alt=\"alt\"") > 0, "alt");
194 i.AlternateText = String.Empty;
196 Assert.IsTrue (s.IndexOf (" class=\"aspNetDisabled\"") < 0, "enabled");
199 Assert.IsTrue (s.IndexOf (" class=\"aspNetDisabled\"") > 0, "disabled");
202 // note: align is in mixed-case in 1.x so we lower everything to test
203 i.ImageAlign = ImageAlign.AbsBottom;
205 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"absbottom\"") > 0, "absbottom");
206 i.ImageAlign = ImageAlign.AbsMiddle;
208 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"absmiddle\"") > 0, "absmiddle");
209 i.ImageAlign = ImageAlign.Baseline;
211 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"baseline\"") > 0, "baseline");
212 i.ImageAlign = ImageAlign.Bottom;
214 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"bottom\"") > 0, "bottom");
215 i.ImageAlign = ImageAlign.Left;
217 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"left\"") > 0, "left");
218 i.ImageAlign = ImageAlign.Middle;
220 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"middle\"") > 0, "middle");
221 i.ImageAlign = ImageAlign.Right;
223 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"right\"") > 0, "right");
224 i.ImageAlign = ImageAlign.TextTop;
226 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"texttop\"") > 0, "texttop");
227 i.ImageAlign = ImageAlign.Top;
229 Assert.IsTrue (i.Render ().ToLower ().IndexOf (" align=\"top\"") > 0, "top");
231 i.ImageAlign = ImageAlign.NotSet;
233 Assert.IsTrue (i.Render ().IndexOf (" align=\"") < 0, "align/none");
235 i.ImageUrl = imageUrl;
237 Assert.IsTrue (i.Render ().IndexOf (" src=\"" + imageUrl + "\"") > 0, "ImageUrl");