2 // System.Web.HttpBrowserCapabilitiesTest.cs - Unit tests for System.Web.HttpBrowserCapabilities
5 // Adar Wesley <adarw@mainsoft.com>
7 // Copyright (C) 2007 Mainsoft, Inc (http://www.mainsoft.com)
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:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
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.
31 using NUnit.Framework;
32 using MonoTests.SystemWeb.Framework;
34 using System.Web.Configuration;
36 namespace MonoTests.System.Web
39 public class HttpBrowserCapabilitiesTest
42 [Category("NunitWeb")]
43 public void DefaultCapabilities ()
45 WebTest t = new WebTest (PageInvoker.CreateOnLoad (Page_OnLoad));
49 public static void Page_OnLoad (Page p)
51 HttpRequest request = p.Request;
52 HttpCapabilitiesBase caps = request.Browser;
53 Assert.IsNotNull (caps, "Loaded Capabilities");
57 [Category ("NunitWeb")]
58 public void CapabilitiesUsedBySystemWebIE7 ()
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)";
66 public static void CapabilitiesUsedBySystemWebIE7_OnLoad (Page p)
68 HttpRequest request = p.Request;
69 HttpCapabilitiesBase caps = request.Browser;
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
79 [Category ("NunitWeb")]
80 public void CapabilitiesUsedBySystemWebIE6 ()
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)";
88 public static void CapabilitiesUsedBySystemWebIE6_OnLoad (Page p)
90 HttpRequest request = p.Request;
91 HttpCapabilitiesBase caps = request.Browser;
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
101 [Category ("NunitWeb")]
102 public void CapabilitiesUsedBySystemWebFirefox ()
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";
110 public static void CapabilitiesUsedBySystemWebFirefox_OnLoad (Page p)
112 HttpRequest request = p.Request;
113 HttpCapabilitiesBase caps = request.Browser;
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
123 [Category ("NunitWeb")]
124 [Category ("NotWorking")]
125 public void CapabilitiesValues ()
127 WebTest t = new WebTest (PageInvoker.CreateOnLoad (CapabilitiesValues_OnLoad));
131 public static void CapabilitiesValues_OnLoad (Page p)
133 HttpRequest request = p.Request;
134 HttpCapabilitiesBase caps = request.Browser;
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");