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