/// <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))); }
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)")); }
/// <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()); }
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)); }
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); }
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); }
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)); }
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;