1 // 2 // System.Web.HttpBrowserCapabilitiesTest.cs - Unit tests for System.Web.HttpBrowserCapabilities 3 // 4 // Author: 5 // Adar Wesley <adarw@mainsoft.com> 6 // 7 // Copyright (C) 2007 Mainsoft, Inc (http://www.mainsoft.com) 8 // 9 // Permission is hereby granted, free of charge, to any person obtaining 10 // a copy of this software and associated documentation files (the 11 // "Software"), to deal in the Software without restriction, including 12 // without limitation the rights to use, copy, modify, merge, publish, 13 // distribute, sublicense, and/or sell copies of the Software, and to 14 // permit persons to whom the Software is furnished to do so, subject to 15 // the following conditions: 16 // 17 // The above copyright notice and this permission notice shall be 18 // included in all copies or substantial portions of the Software. 19 // 20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 // 28 using System; 29 using System.Web; 30 using System.Web.UI; 31 using NUnit.Framework; 32 using MonoTests.SystemWeb.Framework; 33 using System.Text; 34 using System.Web.Configuration; 35 36 namespace MonoTests.System.Web 37 { 38 [TestFixture] 39 public class HttpBrowserCapabilitiesTest 40 { 41 [Test] 42 [Category("NunitWeb")] DefaultCapabilities()43 public void DefaultCapabilities () 44 { 45 WebTest t = new WebTest (PageInvoker.CreateOnLoad (Page_OnLoad)); 46 t.Run (); 47 } 48 Page_OnLoad(Page p)49 public static void Page_OnLoad (Page p) 50 { 51 HttpRequest request = p.Request; 52 HttpCapabilitiesBase caps = request.Browser; 53 Assert.IsNotNull (caps, "Loaded Capabilities"); 54 } 55 56 [Test] 57 [Category ("NunitWeb")] CapabilitiesUsedBySystemWebIE7()58 public void CapabilitiesUsedBySystemWebIE7 () 59 { 60 WebTest t = new WebTest (PageInvoker.CreateOnLoad (CapabilitiesUsedBySystemWebIE7_OnLoad)); 61 // Set UserAgent string to IE7 62 t.Request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 63 t.Run (); 64 } 65 CapabilitiesUsedBySystemWebIE7_OnLoad(Page p)66 public static void CapabilitiesUsedBySystemWebIE7_OnLoad (Page p) 67 { 68 HttpRequest request = p.Request; 69 HttpCapabilitiesBase caps = request.Browser; 70 71 Assert.IsFalse (String.IsNullOrEmpty (caps.Browser), "Browser"); // Used in System.Web code 72 Assert.IsTrue (new Version (1, 2) <= caps.EcmaScriptVersion, "EcmaScriptVersion"); // Used in System.Web code 73 Assert.IsTrue (0 != caps.MajorVersion, "MajorVersion"); // Used in System.Web code 74 Assert.IsFalse (String.IsNullOrEmpty (caps.Type), "Type"); // Used in System.Web code 75 Assert.AreEqual (new Version (1, 0), caps.W3CDomVersion, "W3CDomVersion"); // Used in System.Web code 76 } 77 78 [Test] 79 [Category ("NunitWeb")] CapabilitiesUsedBySystemWebIE6()80 public void CapabilitiesUsedBySystemWebIE6 () 81 { 82 WebTest t = new WebTest (PageInvoker.CreateOnLoad (CapabilitiesUsedBySystemWebIE6_OnLoad)); 83 // Set UserAgent string to IE6 84 t.Request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"; 85 t.Run (); 86 } 87 CapabilitiesUsedBySystemWebIE6_OnLoad(Page p)88 public static void CapabilitiesUsedBySystemWebIE6_OnLoad (Page p) 89 { 90 HttpRequest request = p.Request; 91 HttpCapabilitiesBase caps = request.Browser; 92 93 Assert.IsFalse (String.IsNullOrEmpty (caps.Browser), "Browser"); // Used in System.Web code 94 Assert.IsTrue (new Version (1, 2) <= caps.EcmaScriptVersion, "EcmaScriptVersion"); // Used in System.Web code 95 Assert.IsTrue (0 != caps.MajorVersion, "MajorVersion"); // Used in System.Web code 96 Assert.IsFalse (String.IsNullOrEmpty (caps.Type), "Type"); // Used in System.Web code 97 Assert.AreEqual (new Version (1, 0), caps.W3CDomVersion, "W3CDomVersion"); // Used in System.Web code 98 } 99 100 [Test] 101 [Category ("NunitWeb")] CapabilitiesUsedBySystemWebFirefox()102 public void CapabilitiesUsedBySystemWebFirefox () 103 { 104 WebTest t = new WebTest (PageInvoker.CreateOnLoad (CapabilitiesUsedBySystemWebFirefox_OnLoad)); 105 // Set UserAgent string to IE7 106 t.Request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; 107 t.Run (); 108 } 109 CapabilitiesUsedBySystemWebFirefox_OnLoad(Page p)110 public static void CapabilitiesUsedBySystemWebFirefox_OnLoad (Page p) 111 { 112 HttpRequest request = p.Request; 113 HttpCapabilitiesBase caps = request.Browser; 114 115 Assert.IsFalse (String.IsNullOrEmpty(caps.Browser), "Browser"); // Used in System.Web code 116 Assert.IsTrue (new Version (1, 2) <= caps.EcmaScriptVersion, "EcmaScriptVersion"); // Used in System.Web code 117 Assert.IsTrue (0 != caps.MajorVersion, "MajorVersion"); // Used in System.Web code 118 Assert.IsFalse (String.IsNullOrEmpty(caps.Type), "Type"); // Used in System.Web code 119 Assert.AreEqual (new Version (1, 0), caps.W3CDomVersion, "W3CDomVersion"); // Used in System.Web code 120 } 121 122 [Test] 123 [Category ("NunitWeb")] 124 [Category ("NotWorking")] CapabilitiesValues()125 public void CapabilitiesValues () 126 { 127 WebTest t = new WebTest (PageInvoker.CreateOnLoad (CapabilitiesValues_OnLoad)); 128 t.Run (); 129 } 130 CapabilitiesValues_OnLoad(Page p)131 public static void CapabilitiesValues_OnLoad (Page p) 132 { 133 HttpRequest request = p.Request; 134 HttpCapabilitiesBase caps = request.Browser; 135 136 Assert.IsTrue (caps.ActiveXControls, "ActiveXControls"); 137 Assert.AreEqual (0, caps.Adapters.Count, "Adapters"); 138 Assert.IsFalse (caps.AOL, "AOL"); 139 Assert.IsTrue (caps.BackgroundSounds, "BackgroundSounds"); 140 Assert.IsFalse (caps.Beta, "Beta"); 141 Assert.AreEqual ("IE", caps.Browser, "Browser"); // Used in System.Web code 142 Assert.IsTrue (caps.Browsers.Count > 0, "Browsers.Count > 0"); 143 Assert.IsTrue (caps.CanCombineFormsInDeck, "CanCombineFormsInDeck"); 144 Assert.IsFalse (caps.CanInitiateVoiceCall, "CanInitiateVoiceCall"); 145 Assert.IsTrue (caps.CanRenderAfterInputOrSelectElement, "CanRenderAfterInputOrSelectElement"); 146 Assert.IsTrue (caps.CanRenderEmptySelects, "CanRenderEmptySelects"); 147 Assert.IsTrue (caps.CanRenderInputAndSelectElementsTogether, "CanRenderInputAndSelectElementsTogether"); 148 Assert.IsTrue (caps.CanRenderMixedSelects, "CanRenderMixedSelects"); 149 Assert.IsTrue (caps.CanRenderOneventAndPrevElementsTogether, "CanRenderOneventAndPrevElementsTogether"); 150 Assert.IsTrue (caps.CanRenderPostBackCards, "CanRenderPostBackCards"); 151 Assert.IsTrue (caps.CanRenderSetvarZeroWithMultiSelectionList, "CanRenderSetvarZeroWithMultiSelectionList"); 152 Assert.IsTrue (caps.CanSendMail, "CanSendMail"); 153 Assert.IsFalse (caps.CDF, "CDF"); 154 Assert.IsTrue (caps.Cookies, "Cookies"); 155 Assert.IsFalse (caps.Crawler, "Crawler"); 156 Assert.AreEqual (1, caps.DefaultSubmitButtonLimit, "DefaultSubmitButtonLimit"); 157 Assert.AreEqual (new Version(1, 2), caps.EcmaScriptVersion, "EcmaScriptVersion"); // Used in System.Web code 158 Assert.IsTrue (caps.Frames, "frames"); 159 Assert.AreEqual (0, caps.GatewayMajorVersion, "GatewayMajorVersion"); 160 Assert.AreEqual (0.0, caps.GatewayMinorVersion, "GatewayMinorVersion"); 161 Assert.AreEqual ("None", caps.GatewayVersion, "GatewayVersion"); 162 Assert.IsTrue (caps.HasBackButton, "HasBackButton"); 163 Assert.IsFalse (caps.HidesRightAlignedMultiselectScrollbars, "HidesRightAlignedMultiselectScrollbars"); 164 Assert.IsNull (caps.HtmlTextWriter, "HtmlTextWriter"); 165 Assert.AreEqual ("ie6to9", caps.Id, "Id"); 166 Assert.AreEqual ("keyboard", caps.InputType, "InputType"); 167 Assert.IsTrue (caps.IsColor, "IsColor"); 168 Assert.IsFalse (caps.IsMobileDevice, "IsMobileDevice"); 169 Assert.IsTrue (caps.JavaApplets, "JavaApplets"); 170 Assert.IsTrue (caps.JavaScript, "JavaScript"); 171 Assert.AreEqual (new Version(5, 6), caps.JScriptVersion, "JScriptVersion"); 172 Assert.AreEqual (6, caps.MajorVersion, "MajorVersion"); // Used in System.Web code 173 Assert.AreEqual (10000, caps.MaximumHrefLength, "MaximumHrefLength"); 174 Assert.AreEqual (300000, caps.MaximumRenderedPageSize, "MaximumRenderedPageSize"); 175 Assert.AreEqual (5, caps.MaximumSoftkeyLabelLength, "MaximumSoftkeyLabelLength"); 176 Assert.AreEqual (0.0, caps.MinorVersion, "MinorVersion"); 177 Assert.AreEqual (".0", caps.MinorVersionString, "MinorVersionString"); 178 Assert.AreEqual ("Unknown", caps.MobileDeviceManufacturer, "MobileDeviceManufacturer"); 179 Assert.AreEqual ("Unknown", caps.MobileDeviceModel, "MobileDeviceModel"); 180 Assert.AreEqual (new Version(6, 0), caps.MSDomVersion, "MSDomVersion"); 181 Assert.AreEqual (0, caps.NumberOfSoftkeys, "NumberOfSoftkeys"); 182 Assert.AreEqual ("WinXP", caps.Platform, "Platform"); 183 Assert.AreEqual ("image/gif", caps.PreferredImageMime, "PreferredImageMime"); 184 Assert.AreEqual ("text/html", caps.PreferredRenderingMime, "PreferredRenderingMime"); 185 Assert.AreEqual ("html32", caps.PreferredRenderingType, "PreferredRenderingType"); 186 Assert.IsNull (caps.PreferredRequestEncoding, "PreferredRequestEncoding"); 187 Assert.IsNull (caps.PreferredResponseEncoding, "PreferredResponseEncoding"); 188 Assert.IsFalse (caps.RendersBreakBeforeWmlSelectAndInput, "RendersBreakBeforeWmlSelectAndInput"); 189 Assert.IsTrue (caps.RendersBreaksAfterHtmlLists, "RendersBreaksAfterHtmlLists"); 190 Assert.IsFalse (caps.RendersBreaksAfterWmlAnchor, "RendersBreaksAfterWmlAnchor"); 191 Assert.IsFalse (caps.RendersBreaksAfterWmlInput, "RendersBreaksAfterWmlInput"); 192 Assert.IsTrue (caps.RendersWmlDoAcceptsInline, "RendersWmlDoAcceptsInline"); 193 Assert.IsFalse (caps.RendersWmlSelectsAsMenuCards, "RendersWmlSelectsAsMenuCards"); 194 Assert.IsNull (caps.RequiredMetaTagNameValue, "RequiredMetaTagNameValue"); 195 Assert.IsFalse (caps.RequiresAttributeColonSubstitution, "RequiresAttributeColonSubstitution"); 196 Assert.IsFalse (caps.RequiresContentTypeMetaTag, "RequiresContentTypeMetaTag"); 197 Assert.IsFalse (caps.RequiresControlStateInSession, "RequiresControlStateInSession"); 198 Assert.IsFalse (caps.RequiresDBCSCharacter, "RequiresDBCSCharacter"); 199 Assert.IsFalse (caps.RequiresHtmlAdaptiveErrorReporting, "RequiresHtmlAdaptiveErrorReporting"); 200 Assert.IsFalse (caps.RequiresLeadingPageBreak, "RequiresLeadingPageBreak"); 201 Assert.IsFalse (caps.RequiresNoBreakInFormatting, "RequiresNoBreakInFormatting"); 202 Assert.IsFalse (caps.RequiresOutputOptimization, "RequiresOutputOptimization"); 203 Assert.IsFalse (caps.RequiresPhoneNumbersAsPlainText, "RequiresPhoneNumbersAsPlainText"); 204 Assert.IsFalse (caps.RequiresSpecialViewStateEncoding, "RequiresSpecialViewStateEncoding"); 205 Assert.IsFalse (caps.RequiresUniqueFilePathSuffix, "RequiresUniqueFilePathSuffix"); 206 Assert.IsFalse (caps.RequiresUniqueHtmlCheckboxNames, "RequiresUniqueHtmlCheckboxNames"); 207 Assert.IsFalse (caps.RequiresUniqueHtmlInputNames, "RequiresUniqueHtmlInputNames"); 208 Assert.IsFalse (caps.RequiresUrlEncodedPostfieldValues, "RequiresUrlEncodedPostfieldValues"); 209 Assert.AreEqual (8, caps.ScreenBitDepth, "ScreenBitDepth"); 210 Assert.AreEqual (40, caps.ScreenCharactersHeight, "ScreenCharactersHeight"); 211 Assert.AreEqual (80, caps.ScreenCharactersWidth, "ScreenCharactersWidth"); 212 Assert.AreEqual (480, caps.ScreenPixelsHeight, "ScreenPixelsHeight"); 213 Assert.AreEqual (640, caps.ScreenPixelsWidth, "ScreenPixelsWidth"); 214 Assert.IsFalse (caps.SupportsAccesskeyAttribute, "SupportsAccesskeyAttribute"); 215 Assert.IsTrue (caps.SupportsBodyColor, "SupportsBodyColor"); 216 Assert.IsTrue (caps.SupportsBold, "SupportsBold"); 217 Assert.IsTrue (caps.SupportsCacheControlMetaTag, "SupportsCacheControlMetaTag"); 218 Assert.IsTrue (caps.SupportsCallback, "SupportsCallback"); 219 Assert.IsTrue (caps.SupportsCss, "SupportsCss"); 220 Assert.IsTrue (caps.SupportsDivAlign, "SupportsDivAlign"); 221 Assert.IsTrue (caps.SupportsDivNoWrap, "SupportsDivNoWrap"); 222 Assert.IsTrue (caps.SupportsEmptyStringInCookieValue, "SupportsEmptyStringInCookieValue"); 223 Assert.IsTrue (caps.SupportsFontColor, "SupportsFontColor"); 224 Assert.IsTrue (caps.SupportsFontName, "SupportsFontName"); 225 Assert.IsTrue (caps.SupportsFontSize, "SupportsFontSize"); 226 Assert.IsTrue (caps.SupportsImageSubmit, "SupportsImageSubmit"); 227 Assert.IsFalse (caps.SupportsIModeSymbols, "SupportsIModeSymbols"); 228 Assert.IsFalse (caps.SupportsInputIStyle, "SupportsInputIStyle"); 229 Assert.IsFalse (caps.SupportsInputMode, "SupportsInputMode"); 230 Assert.IsTrue (caps.SupportsItalic, "SupportsItalic"); 231 Assert.IsFalse (caps.SupportsJPhoneMultiMediaAttributes, "SupportsJPhoneMultiMediaAttributes"); 232 Assert.IsFalse (caps.SupportsJPhoneSymbols, "SupportsJPhoneSymbols"); 233 Assert.IsTrue (caps.SupportsQueryStringInFormAction, "SupportsQueryStringInFormAction"); 234 Assert.IsTrue (caps.SupportsRedirectWithCookie, "SupportsRedirectWithCookie"); 235 Assert.IsTrue (caps.SupportsSelectMultiple, "SupportsSelectMultiple"); 236 Assert.IsTrue (caps.SupportsUncheck, "SupportsUncheck"); 237 Assert.IsTrue (caps.SupportsXmlHttp, "SupportsXmlHttp"); 238 Assert.IsTrue (caps.Tables, "Tables"); 239 Assert.AreEqual ("IE6", caps.Type, "Type"); // Used in System.Web code 240 Assert.IsTrue (caps.UseOptimizedCacheKey, "UseOptimizedCacheKey"); 241 Assert.IsTrue (caps.VBScript, "VBScript"); 242 Assert.AreEqual ("6.0", caps.Version, "Version"); 243 Assert.AreEqual (new Version (1, 0), caps.W3CDomVersion, "W3CDomVersion"); // Used in System.Web code 244 Assert.IsFalse (caps.Win16, "Win16"); 245 Assert.IsTrue (caps.Win32, "Win32"); 246 } 247 } 248 } 249