1 //
2 // HyperLinkTest.cs
3 //	- Unit tests for (Ben's) System.Web.UI.WebControls.HyperLink
4 //
5 // Author:
6 //	Sebastien Pouliot  <sebastien@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;
33 using System.Web.UI;
34 using System.Web.UI.WebControls;
35 
36 using NUnit.Framework;
37 
38 namespace MonoTests.System.Web.UI.WebControls {
39 
40 	public class TestHyperLink : HyperLink {
41 
42 		public string Tag {
43 			get { return base.TagName; }
44 		}
45 
46 		public StateBag StateBag {
47 			get { return base.ViewState; }
48 		}
49 
Render()50 		public string Render ()
51 		{
52 			StringWriter sw = new StringWriter ();
53 			sw.NewLine = "\n";
54 			HtmlTextWriter writer = new HtmlTextWriter (sw);
55 			base.Render (writer);
56 			return writer.InnerWriter.ToString ();
57 		}
58 
GetStyle()59 		public Style GetStyle ()
60 		{
61 			return base.CreateControlStyle ();
62 		}
63 	}
64 
65 	[TestFixture]
66 	public class HyperLinkTest {
67 
68 		private const string imageUrl = "http://www.mono-project.com/stylesheets/images.wiki.png";
69 
70 		[Test]
Empty()71 		public void Empty ()
72 		{
73 			TestHyperLink hl = new TestHyperLink ();
74 			Assert.AreEqual (String.Empty, hl.ImageUrl, "ImageUrl");
75 			Assert.AreEqual (String.Empty, hl.NavigateUrl, "NavigateUrl");
76 			Assert.AreEqual (String.Empty, hl.Target, "Target");
77 			Assert.AreEqual (String.Empty, hl.Text, "Text");
78 			Assert.AreEqual ("<a></a>", hl.Render (), "Empty");
79 		}
80 
81 		[Test]
ImageUrlWithoutText()82 		public void ImageUrlWithoutText ()
83 		{
84 			string origHtml = "<a><img src=\"http://www.mono-project.com/stylesheets/images.wiki.png\" alt=\"\" /></a>";
85 			TestHyperLink hl = new TestHyperLink ();
86 			hl.ImageUrl = imageUrl;
87 			Assert.AreEqual (imageUrl, hl.ImageUrl, "ImageUrl");
88 			Assert.AreEqual (String.Empty, hl.NavigateUrl, "NavigateUrl");
89 			Assert.AreEqual (String.Empty, hl.Target, "Target");
90 			Assert.AreEqual (String.Empty, hl.Text, "Text");
91 			// an empty alt attribute is begin added
92 
93 			string renderedHtml = hl.Render ();
94 			Assert.AreEqual (origHtml, renderedHtml, "Empty");
95 		}
96 
97 		[Test]
ImageUrlWithoutText_ToolTip()98 		public void ImageUrlWithoutText_ToolTip ()
99 		{
100 			string origHtml = "<a title=\"Some message\"><img title=\"Some message\" src=\"http://www.mono-project.com/stylesheets/images.wiki.png\" alt=\"\" /></a>";
101 			TestHyperLink hl = new TestHyperLink ();
102 			hl.ImageUrl = imageUrl;
103 			hl.ToolTip = "Some message";
104 
105 			Assert.AreEqual (imageUrl, hl.ImageUrl, "ImageUrl");
106 			Assert.AreEqual (String.Empty, hl.NavigateUrl, "NavigateUrl");
107 			Assert.AreEqual (String.Empty, hl.Target, "Target");
108 			Assert.AreEqual (String.Empty, hl.Text, "Text");
109 			// an empty alt attribute is begin added
110 
111 			string renderedHtml = hl.Render ();
112 			Assert.AreEqual (origHtml, renderedHtml, "Empty");
113 		}
114 
115 		[Test]
NavigateUrl_NO_ResolveUrl()116 		public void NavigateUrl_NO_ResolveUrl ()
117 		{
118 			TestHyperLink hl = new TestHyperLink ();
119 			hl.NavigateUrl = "~/index.html";
120 			Assert.AreEqual (String.Empty, hl.ImageUrl, "ImageUrl");
121 			Assert.AreEqual ("~/index.html", hl.NavigateUrl, "NavigateUrl");
122 			Assert.AreEqual (String.Empty, hl.Target, "Target");
123 			Assert.AreEqual (String.Empty, hl.Text, "Text");
124 			// Note: resolve only occurs inside a Page
125 			Assert.AreEqual ("<a href=\"~/index.html\"></a>", hl.Render (), "Resolve");
126 		}
127 
128 		[Test]
ImageUrl_NO_ResolveUrl()129 		public void ImageUrl_NO_ResolveUrl ()
130 		{
131 			string origHtml = "<a><img src=\"~/ben.jpeg\" alt=\"\" /></a>";
132 			TestHyperLink hl = new TestHyperLink ();
133 			hl.ImageUrl = "~/ben.jpeg";
134 			Assert.AreEqual ("~/ben.jpeg", hl.ImageUrl, "ImageUrl");
135 			Assert.AreEqual (String.Empty, hl.NavigateUrl, "NavigateUrl");
136 			Assert.AreEqual (String.Empty, hl.Target, "Target");
137 			Assert.AreEqual (String.Empty, hl.Text, "Text");
138 			// Note: resolve only occurs inside a Page
139 
140 			string renderedHtml = hl.Render ();
141 			Assert.AreEqual (origHtml, renderedHtml, "Resolve");
142 		}
143 	}
144 }
145