public void ScrapeGroundMoves_HeaderRowsAreExcludeFromScrapedValues() { var groundMoveScrapingService = new GroundMoveScraper(_scrapingServices); var character = Characters.Ryu; character.SourceUrl = $"{Keys.KHSiteBaseUrl}{_game}{character.EscapedCharacterName}"; var groundMoves = groundMoveScrapingService.Scrape(character).ToList(); CollectionAssert.AllItemsAreNotNull(groundMoves); CollectionAssert.AllItemsAreUnique(groundMoves); CollectionAssert.IsNotEmpty(groundMoves); groundMoves.ForEach(move => { AssertMoveIsValid(move, character); }); Assert.That(!groundMoves.Any(move => move.Name.Equals(ScrapingConstants.ExcludedRowHeaders.Grabs, StringComparison.OrdinalIgnoreCase)), $"Should not contain '{ScrapingConstants.ExcludedRowHeaders.Grabs}'"); Assert.That(!groundMoves.Any(move => move.Name.Equals(ScrapingConstants.ExcludedRowHeaders.Throws, StringComparison.OrdinalIgnoreCase)), $"Should not contain '{ScrapingConstants.ExcludedRowHeaders.Throws}'"); Assert.That(!groundMoves.Any(move => move.Name.Equals(ScrapingConstants.ExcludedRowHeaders.Miscellaneous, StringComparison.OrdinalIgnoreCase)), $"Should not contain '{ScrapingConstants.ExcludedRowHeaders.Miscellaneous}'"); }
public void GroundMoveScraperShouldIncludeGrabs(WebCharacter character) { const int expectedGrabCount = 3; character.SourceUrl = $"{Keys.KHSiteBaseUrl}{_game}{character.EscapedCharacterName}"; var groundMoveScrapingService = new GroundMoveScraper(_scrapingServices); var groundMoves = groundMoveScrapingService.Scrape(character).ToList(); int actualNumberOfGrabMoves = groundMoves.Count(move => move.Name.EndsWith(ScrapingConstants.CommonMoveNames.Grab, StringComparison.OrdinalIgnoreCase)); Assert.That(actualNumberOfGrabMoves, Is.EqualTo(expectedGrabCount), $"{character.Name}"); }
public void ScrapeGroundMoves_WhenMoveHas_GroundAirOnlyHitboxes() { var groundMoveScrapingService = new GroundMoveScraper(_scrapingServices); var character = Characters.Fox; character.Game = Games.Ultimate; character.SourceUrl = $"{Keys.KHSiteBaseUrl}Ultimate/{character.EscapedCharacterName}"; var groundMoves = groundMoveScrapingService.Scrape(character).ToList(); var utilt = groundMoves.First(m => m.Name == "Utilt"); Assert.That(utilt.BaseDamage, Is.EqualTo("6/6/8/7|1v1: 7.2/7.2/9.6/8.4")); }
public void GroundMoveScraperShouldExcludeRowHeaders(WebCharacter character) { var groundMoveScrapingService = new GroundMoveScraper(_scrapingServices); character.SourceUrl = $"{Keys.KHSiteBaseUrl}{_game}{character.EscapedCharacterName}"; var groundMoves = groundMoveScrapingService.Scrape(character).ToList(); groundMoves.ForEach(move => { Assert.That(move.Name, Is.Not.EqualTo(ScrapingConstants.ExcludedRowHeaders.Grabs), $"{nameof(character.Name)}"); Assert.That(move.Name, Is.Not.EqualTo(ScrapingConstants.ExcludedRowHeaders.Throws), $"{nameof(character.Name)}"); Assert.That(move.Name, Is.Not.EqualTo(ScrapingConstants.ExcludedRowHeaders.Miscellaneous), $"{nameof(character.Name)}"); AssertMoveIsValid(move, character); }); }
public void GroundMoveScraperShouldExcludeThrowMoves(WebCharacter character) { character.SourceUrl = $"{Keys.KHSiteBaseUrl}{_game}{character.EscapedCharacterName}"; var groundMoveScrapingService = new GroundMoveScraper(_scrapingServices); var groundMoves = groundMoveScrapingService.Scrape(character).ToList(); CollectionAssert.AllItemsAreNotNull(groundMoves); CollectionAssert.AllItemsAreUnique(groundMoves); CollectionAssert.IsNotEmpty(groundMoves); groundMoves.ForEach(move => { Assert.That(move.Name.IndexOf(ScrapingConstants.CommonMoveNames.Throw, StringComparison.OrdinalIgnoreCase) == -1, $"{nameof(IMove.Name)} should not contain {ScrapingConstants.CommonMoveNames.Throw}. This means the scraper might be pulling in throw moves."); }); }
public void ScrapeGroundMovesForCharacter() { var groundMoveScrapingService = new GroundMoveScraper(_scrapingServices); var character = Characters.Ryu; character.SourceUrl = $"{Keys.KHSiteBaseUrl}{_game}{character.EscapedCharacterName}"; var groundMoves = groundMoveScrapingService.Scrape(character).ToList(); CollectionAssert.AllItemsAreNotNull(groundMoves); CollectionAssert.AllItemsAreUnique(groundMoves); CollectionAssert.IsNotEmpty(groundMoves); groundMoves.ForEach(move => { AssertMoveIsValid(move, character); }); }
public void SetUp() { var instanceIdGenerator = new InstanceIdGenerator(); _htmlParserProvider = new DefaultHtmlParserProvider(); _movementProvider = new DefaultMovementProvider(instanceIdGenerator); _moveProvider = new DefaultMoveProvider(instanceIdGenerator); _pageDownloader = new DefaultPageDownloader(); _webClientProvider = new DefaultWebClientProvider(); _attributeProvider = new DefaultAttributeProvider(instanceIdGenerator); _imageScrapingProvider = new DefaultImageScrapingProvider(); _imageScrapingService = new DefaultImageScrapingService(_imageScrapingProvider); _uniqueDataProvider = new DefaultUniqueDataProvider(instanceIdGenerator); _webServices = new DefaultWebServices(_htmlParserProvider, _webClientProvider, _pageDownloader); _attributeScrapingServices = new DefaultAttributeScrapingServices(_attributeProvider, _webServices); _moveScrapingServices = new DefaultMoveScrapingServices(_moveProvider, _webServices); _movementScrapingServices = new DefaultMovementScrapingServices(_movementProvider, _webServices); _uniqueDataScrapingServices = new DefaultUniqueDataScrapingServices(_uniqueDataProvider, _webServices); _groundMoveScraper = new GroundMoveScraper(_moveScrapingServices); _aerialMoveScraper = new AerialMoveScraper(_moveScrapingServices); _specialMoveScraper = new SpecialMoveScraper(_moveScrapingServices); _throwMovesScraper = new ThrowMoveScraper(_moveScrapingServices); _characterMoveScraper = new DefaultCharacterMoveScraper(new List <IMoveScraper> { _groundMoveScraper, _aerialMoveScraper, _specialMoveScraper, _throwMovesScraper }); var attributeScrapers = new List <IAttributeScraper> { new AirSpeedScraper(_attributeScrapingServices), new AirDodgeScraper(_attributeScrapingServices) }; _movementScraper = new DefaultMovementScraper(_movementScrapingServices); _characterDataScrapingServices = new DefaultCharacterDataScrapingServices(_imageScrapingService, _movementScraper, attributeScrapers, _characterMoveScraper, _uniqueDataScrapingServices, _webServices, instanceIdGenerator); _characterDataScraper = new DefaultCharacterDataScraper(_characterDataScrapingServices); }
public DefaultCharacterDataScraper MakeCharacterDataScraper() { var instanceIdGenerator = new InstanceIdGenerator(); _htmlParserProvider = new DefaultHtmlParserProvider(); _movementProvider = new DefaultMovementProvider(instanceIdGenerator); _moveProvider = new DefaultMoveProvider(instanceIdGenerator); _pageDownloader = new DefaultPageDownloader(); _webClientProvider = new DefaultWebClientProvider(); _attributeProvider = new DefaultAttributeProvider(instanceIdGenerator); _imageScrapingProvider = new DefaultImageScrapingProvider(); _imageScrapingService = new DefaultColorScrapingService(_characterCss); //_imageScrapingProvider); _uniqueDataProvider = new DefaultUniqueDataProvider(instanceIdGenerator); _webServices = new DefaultWebServices(_htmlParserProvider, _webClientProvider, _pageDownloader); _attributeScrapingServices = new DefaultAttributeScrapingServices(_attributeProvider, _webServices); _moveScrapingServices = new DefaultMoveScrapingServices(_moveProvider, _webServices); _movementScrapingServices = new DefaultMovementScrapingServices(_movementProvider, _webServices); _uniqueDataScrapingServices = new DefaultUniqueDataScrapingServices(_uniqueDataProvider, _webServices); _groundMoveScraper = new GroundMoveScraper(_moveScrapingServices); _aerialMoveScraper = new AerialMoveScraper(_moveScrapingServices); _specialMoveScraper = new SpecialMoveScraper(_moveScrapingServices); _throwMoveScraper = new ThrowMoveScraper(_moveScrapingServices); _characterMoveScraper = new DefaultCharacterMoveScraper(new List <IMoveScraper> { _groundMoveScraper, _aerialMoveScraper, _specialMoveScraper, _throwMoveScraper }); var attributeScrapers = AttributeScrapers.AllWithScrapingServices(_attributeScrapingServices, _urlUnderTest); _movementScraper = new DefaultMovementScraper(_movementScrapingServices); _characterDataScrapingServices = new DefaultCharacterDataScrapingServices(_imageScrapingService, _movementScraper, attributeScrapers, _characterMoveScraper, _uniqueDataScrapingServices, _webServices, instanceIdGenerator); return(new DefaultCharacterDataScraper(_characterDataScrapingServices)); }