using BritishHorseRacingApi.Helpers; using System; using Xunit; namespace BritishHorseRacingApi.Tests { public class DataConverterHelperTests { [Theory()] [InlineData("1m 24.73s", 1, 24, 73)] [InlineData("5m 42s", 5, 42, 0)] [InlineData("7m 2.9s", 7, 2, 9)] public void TestStopWatchStringConversion(string time, int mins, int seconds, int milliseconds) { //Arrange //Act var totalMilliseconds = DataConverterHelper.StopWatchStringToMilliseconds(time); //Assert var timeSpan = TimeSpan.FromMilliseconds((double)totalMilliseconds); Assert.Equal(mins, timeSpan.Minutes); Assert.Equal(seconds, timeSpan.Seconds); Assert.Equal(milliseconds, timeSpan.Milliseconds); } [Theory()] [InlineData("", null)] [InlineData(null, null)] [InlineData(" ", null)] public void TestStopWatchStringConversionForEmpty(string time, double? expectedValue) { //Arrange //Act var totalMilliseconds = DataConverterHelper.StopWatchStringToMilliseconds(time); //Assert Assert.Equal(totalMilliseconds, expectedValue); } [Theory()] [InlineData("1m 15.39s(+0.34s)", 340)] [InlineData(null, null)] [InlineData(" ", null)] public void TestStopwatchStringDifferenceToMilliseconds(string time, double? expectedValue) { //Arrange //Act var totalMilliseconds = DataConverterHelper.StopwatchStringDifferenceToMilliseconds(time); //Assert Assert.Equal(totalMilliseconds, expectedValue); } [Theory] [InlineData("(GoingStick:5.3 on 01-12-2018 at 08:30) Hurdle 5.3 Chase 5.3 @ 0800", 5.3)] [InlineData("ABANDONED - Abandoned (48 Hours)", null)] [InlineData("", null)] [InlineData("Chase - Good to Soft, Good in Places Hurdle - Good to Soft (Hurdle races on Outer/Flat course) Chase 7.5; Hurdle 7.1", 7.3)] public void TestGoingStickExtraction(string goingStr, double? expectedValue) { //Act var result = DataConverterHelper.ExtractGoingStick(goingStr); //Assert Assert.Equal(expectedValue, result); } [Theory()] [InlineData("1m 1f 104y ", 2084)] [InlineData("1f 104y", 324)] [InlineData("104y", 104)] [InlineData("", null)] [InlineData(" ", null)] [InlineData(null, null)] public void TestDistanceStringToYardsConversion(string distance, int? expectedResult) { //Arrange //Act var result = DataConverterHelper.DistanceStringToYards(distance); //Assert Assert.Equal(expectedResult, result); } [Theory] [InlineData("", null)] [InlineData(null, null)] [InlineData("THE 32Red CASINO NOVICE AUCTION STAKES (CLASS 5)", 5)] [InlineData("THE BRITISH STALLION STUDS EBF KEGWORTH NOVICE STAKES (CLASS 4) (PLUS 10 RACE) (DIV II)", 4)] public void TestRaceClassExtract(string raceName, int? expectedResult) { //Act var result = DataConverterHelper.ExtractRaceClass(raceName); //Assert Assert.Equal(expectedResult, result); } [Theory()] [InlineData("3/5", 1.6)] [InlineData("20/1", 21)] [InlineData("5.5/1", 6.5)] [InlineData("", null)] [InlineData(" ", null)] [InlineData(null, null)] public void TestFractionOddsToDecimal(string value, double? expectedResult) { //Arrange var decimalExpectedValue = (decimal?)expectedResult; //Act var result = DataConverterHelper.FractionOddsToDecimal(value); //Assert Assert.Equal(decimalExpectedValue, result); } [Theory()] [InlineData("9st 4lbs", 58967.00662)] [InlineData("11st 3lbs", 71214.00098)] [InlineData("10lbs", 4535.92000)] [InlineData("9st", 57152.63862)] [InlineData("9st 0lbs", 57152.63862)] [InlineData("", null)] [InlineData(" ", null)] [InlineData(null, null)] public void TestWeightStringToGrams(string value, double? expectedResult) { //Arrange var decimalExpectedValue = (decimal?)expectedResult; //Act var result = DataConverterHelper.WeightStringToGrams(value); //Assert Assert.Equal(decimalExpectedValue, result); } } }