/// <summary>
        /// Performs a test and returns a value which determines whether the given browser identification
        /// is a match for this definition instance.
        /// </summary>
        /// <param name="browserId">A browser identification instance.</param>
        public bool Matches(BrowserIdentification browserId)
        {
            if (browserId == null)
            {
                throw new ArgumentNullException(nameof(browserId));
            }

            if (!DoesPlatformMatch(browserId))
            {
                return(false);
            }

            if (!DoesBrowserNameMatch(browserId))
            {
                return(false);
            }

            if (!SatisfiesMinVersion(browserId))
            {
                return(false);
            }

            if (!SatisfiesMaxVersion(browserId))
            {
                return(false);
            }

            return(true);
        }
        bool SatisfiesMaxVersion(BrowserIdentification browserId)
        {
            if (MaximumVersion == null)
            {
                return(true);
            }

            return(browserId.Version < MaximumVersion);
        }
        bool SatisfiesMinVersion(BrowserIdentification browserId)
        {
            if (MinimumVersion == null)
            {
                return(true);
            }

            return(browserId.Version >= MinimumVersion);
        }
        bool DoesPlatformMatch(BrowserIdentification browserId)
        {
            if (Platforms == null || !Platforms.Any())
            {
                return(true);
            }

            return(Platforms.Any(x => x.Equals(browserId.Platform, StringComparison.InvariantCultureIgnoreCase)));
        }
示例#5
0
        public void ToString_returns_appropriately_formatted_string()
        {
            // Arrange
            var id = new BrowserIdentification("FooBrowser", new SimpleStringVersion("123"), "BarPlatform");

            // Act
            var result = id.ToString();

            // Assert
            Assert.That(result, Is.EqualTo("FooBrowser 123 (BarPlatform)"));
        }
示例#6
0
        /// <summary>
        /// Gets the browser flags which apply to the given web driver.
        /// </summary>
        /// <returns>The flags.</returns>
        /// <param name="browserId">The browser identification.</param>
        public IReadOnlyCollection <string> GetFlags(BrowserIdentification browserId)
        {
            if (browserId == null)
            {
                throw new ArgumentNullException(nameof(browserId));
            }

            var matchingDefinitions = flagsDefinitions.Where(x => x.Matches(browserId));

            var flagsToInclude = matchingDefinitions.SelectMany(x => x.AddFlags).Distinct();
            var flagsToExclude = matchingDefinitions.SelectMany(x => x.RemoveFlags).Distinct();

            return(flagsToInclude.Except(flagsToExclude).ToArray());
        }
示例#7
0
        public void Matches_returns_true_when_all_aspects_match_but_platform_and_versions_are_missing(string browserName,
                                                                                                      string platform)
        {
            // Arrange
            var browserId = new BrowserIdentification(browserName, new SimpleStringVersion("b"), platform);

            var sut = new FlagsDefinition();

            sut.BrowserNames.Add(browserName);

            // Act
            var result = sut.Matches(browserId);

            // Assert
            Assert.That(result, Is.True);
        }
        public void GetFlags_returns_flags_added_by_single_provider(BrowserIdentification browserId,
                                                                    List <string> flags)
        {
            // Arrange
            var definition = new FlagsDefinition();

            definition.BrowserNames.Add(browserId.Name);
            definition.AddFlags.UnionWith(flags);

            var sut = new BrowserFlagsProvider(new [] { definition });

            // Act
            var result = sut.GetFlags(browserId);

            // Assert
            Assert.That(result, Is.EquivalentTo(flags));
        }
示例#9
0
        public void Matches_returns_false_when_browser_name_differs(string browserName, string platform, string otherBrowser)
        {
            // Arrange
            var browserId = new BrowserIdentification(browserName, new SimpleStringVersion("b"), platform);

            var sut = new FlagsDefinition {
                MinimumVersion = new SimpleStringVersion("a"),
                MaximumVersion = new SimpleStringVersion("c"),
            };

            sut.BrowserNames.Add(otherBrowser);
            sut.Platforms.Add(platform);

            // Act
            var result = sut.Matches(browserId);

            // Assert
            Assert.That(result, Is.False);
        }
示例#10
0
        public void Matches_returns_true_when_version_is_equal_to_min(string browserName, string platform)
        {
            // Arrange
            var browserId = new BrowserIdentification(browserName, new SimpleStringVersion("b"), platform);

            var sut = new FlagsDefinition {
                MinimumVersion = new SimpleStringVersion("b"),
                MaximumVersion = new SimpleStringVersion("d"),
            };

            sut.BrowserNames.Add(browserName);
            sut.Platforms.Add(platform);

            // Act
            var result = sut.Matches(browserId);

            // Assert
            Assert.That(result, Is.True);
        }
示例#11
0
        public void Matches_returns_true_when_all_aspects_are_present_and_match(string browserName, string platform)
        {
            // Arrange
            var browserId = new BrowserIdentification(browserName, new SimpleStringVersion("b"), platform);

            var sut = new FlagsDefinition {
                MinimumVersion = new SimpleStringVersion("a"),
                MaximumVersion = new SimpleStringVersion("c"),
            };

            sut.BrowserNames.Add(browserName);
            sut.Platforms.Add(platform);

            // Act
            var result = sut.Matches(browserId);

            // Assert
            Assert.That(result, Is.True);
        }
        public void GetFlags_returns_flags_added_by_two_providers(BrowserIdentification browserId)
        {
            // Arrange
            var definitionOne = new FlagsDefinition();

            definitionOne.BrowserNames.Add(browserId.Name);
            definitionOne.AddFlags.Add("One");

            var definitionTwo = new FlagsDefinition();

            definitionTwo.BrowserNames.Add(browserId.Name);
            definitionTwo.AddFlags.Add("Two");

            var sut = new BrowserFlagsProvider(new [] { definitionOne, definitionTwo });

            var expected = new [] { "One", "Two" };

            // Act
            var result = sut.GetFlags(browserId);

            // Assert
            Assert.That(result, Is.EquivalentTo(expected));
        }
        public void GetFlags_does_not_include_flags_removed_by_same_provider(BrowserIdentification browserId)
        {
            // Arrange
            var definitionOne = new FlagsDefinition();

            definitionOne.BrowserNames.Add(browserId.Name);
            definitionOne.AddFlags.Add("One");
            definitionOne.RemoveFlags.Add("One");

            var definitionTwo = new FlagsDefinition();

            definitionTwo.BrowserNames.Add(browserId.Name);
            definitionTwo.AddFlags.Add("Two");

            var sut = new BrowserFlagsProvider(new [] { definitionOne, definitionTwo });

            var expected = new [] { "Two" };

            // Act
            var result = sut.GetFlags(browserId);

            // Assert
            Assert.That(result, Is.EquivalentTo(expected));
        }
        public void GetFlags_ignores_flags_added_by_non_matching_provider(BrowserIdentification browserId,
                                                                          string otherBrowserName)
        {
            // Arrange
            var definitionOne = new FlagsDefinition();

            definitionOne.BrowserNames.Add(browserId.Name);
            definitionOne.AddFlags.Add("One");

            var definitionTwo = new FlagsDefinition();

            definitionTwo.BrowserNames.Add(otherBrowserName);
            definitionTwo.AddFlags.Add("Two");

            var sut = new BrowserFlagsProvider(new [] { definitionOne, definitionTwo });

            var expected = new [] { "One" };

            // Act
            var result = sut.GetFlags(browserId);

            // Assert
            Assert.That(result, Is.EquivalentTo(expected));
        }
示例#15
0
 bool DoesBrowserNameMatch(BrowserIdentification browserId)
 {
     return(BrowserNames.Any(x => x.Equals(browserId.Name, StringComparison.InvariantCultureIgnoreCase)));
 }
 /// <summary>
 /// Gets the browser flags which apply to the given web driver.
 /// </summary>
 /// <returns>The flags.</returns>
 /// <param name="browserId">Browser identification.</param>
 public IReadOnlyCollection <string> GetFlags(BrowserIdentification browserId) => Empty;