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