internal Utils.Results Process(string userAgentPattern, string devicePattern, Validation state) { _dataSet.ResetCache(); var provider = new Provider(_dataSet); var match = provider.CreateMatch(); var results = new FiftyOne.Tests.Integration.Utils.Results(); var random = new Random(0); var httpHeaders = _dataSet.HttpHeaders.Where(i => i.Equals("User-Agent") == false).ToArray(); // Loop through setting 2 User-Agent headers. var userAgentIterator = UserAgentGenerator.GetEnumerable(20000, userAgentPattern).GetEnumerator(); var deviceIterator = UserAgentGenerator.GetEnumerable(20000, devicePattern).GetEnumerator(); while (userAgentIterator.MoveNext() && deviceIterator.MoveNext()) { var headers = new NameValueCollection(); headers.Add(httpHeaders[random.Next(httpHeaders.Length)], deviceIterator.Current); headers.Add("User-Agent", userAgentIterator.Current); provider.Match(headers, match); Assert.IsTrue(match.Signature == null, "Signature not equal null"); Assert.IsTrue(match.Difference == 0, "Match difference not equal to zero"); Assert.IsTrue(match.Method == MatchMethods.Exact, "Match method not equal to Exact"); Validate(match, state); results.Methods[match.Method]++; } return(results); }
/// <summary> /// Sets random cookie values for properties which support JavaScript /// Property Value Override and checks that they are returned /// correctly. /// </summary> /// <remarks> /// The test checks that the multiple behaviours of <see cref="Values"/> /// work when dynamic values are provided. /// </remarks> /// <returns></returns> internal Utils.Results ProcessAll() { var target = new Uri("http://localhost"); var provider = new Provider(_dataSet); var match = provider.CreateMatch(); var results = new FiftyOne.Tests.Integration.Utils.Results(); var random = new Random(0); var httpHeaders = _dataSet.HttpHeaders.Where(i => i.Equals("User-Agent") == false).ToArray(); // Loop through setting 2 User-Agent headers. var userAgentIterator = UserAgentGenerator.GetRandomUserAgents().GetEnumerator(); while (userAgentIterator.MoveNext()) { var headers = new NameValueCollection(); headers.Add("User-Agent", userAgentIterator.Current); // Add a random value to the cookie. var cookies = new CookieContainer(); var testValues = new Dictionary <Property, string>(); foreach (var property in _dataSet.JavaScriptProperties.Where(i => i.Category.Equals(FiftyOne.Foundation.Mobile.Detection.Constants.PropertyValueOverrideCategory))) { var propertyName = property.Name.Replace("JavaScript", ""); var key = FiftyOne.Foundation.Mobile.Detection.Constants.PropertyValueOverrideCookiePrefix + propertyName; var value = UserAgentGenerator.GetRandomUserAgent(20); cookies.Add(new Cookie(key, HttpUtility.UrlEncode(value), "/", target.Host)); testValues.Add(_dataSet.Properties[propertyName], value); } headers.Add("Cookie", cookies.GetCookieHeader(target)); // Now check the match object returns the correct result // for the property. This is the primary test in this // integration test. // Note: // The value returned from the match accessor is passed through // UrlDecode as in this test .NET will not have already processed // the cookie and decoded it. provider.Match(headers, match); foreach (var test in testValues) { Assert.IsTrue( HttpUtility.UrlDecode(match[test.Key].ToString()).Equals(test.Value), String.Format( "Test failed for property '{0}'", test.Key)); } results.Methods[match.Method]++; } return(results); }
internal Utils.Results Process(string userAgentPattern, string devicePattern, Validation state) { var results = new FiftyOne.Tests.Integration.Utils.Results(); var random = new Random(0); var httpHeaders = _provider.HttpHeaders.Where(i => i.Equals("User-Agent") == false).ToArray(); // Loop through setting 2 User-Agent headers. var userAgentIterator = UserAgentGenerator.GetEnumerable(20000, userAgentPattern).GetEnumerator(); var deviceIterator = UserAgentGenerator.GetEnumerable(20000, devicePattern).GetEnumerator(); while (userAgentIterator.MoveNext() && deviceIterator.MoveNext()) { var headers = new NameValueCollection(); headers.Add(httpHeaders[random.Next(httpHeaders.Length)], deviceIterator.Current); headers.Add("User-Agent", userAgentIterator.Current); var indexes = _provider.GetDeviceIndexes(headers); Assert.IsTrue(indexes.Count > 0, "No indexes were found"); Validate(indexes, state); } return(results); }