public void Removes_least_desireable_trait() { var matchesAll = new SaleBull { Calf_Id = "MatchesBWTWWTYWT", BW_ADJ = (BWTMn + BWTMx)/2, WW_ADJ = (WwtMn + WwtMx)/2, YW_ADJ = (YwtMn + YwtMx)/2, SEL_IDX = 1 }; var matchesTop2 = new SaleBull { Calf_Id = "MatchesBWTWWT", BW_ADJ = matchesAll.BW_ADJ + 1, WW_ADJ = matchesAll.WW_ADJ + 1, YW_ADJ = matchesAll.YW_ADJ + 1000, SEL_IDX = 2 }; var matchesTop1 = new SaleBull { Calf_Id = "MatchesBWT", BW_ADJ = matchesAll.BW_ADJ + 1, WW_ADJ = matchesAll.WW_ADJ + 1000, YW_ADJ = matchesAll.YW_ADJ + 1000, SEL_IDX = 3 }; var bullList = new List<SaleBull> { matchesTop1, matchesTop2, matchesAll }; var desiredTraits = new List<TraitVM> { new TraitVM { Sequence = 1, BullSaleView = BullSaleViewNameEnum.BW_ADJ, RangeMinValue = BWTMn.ToString(CultureInfo.InvariantCulture), RangeMaxValue = BWTMx.ToString(CultureInfo.InvariantCulture) }, new TraitVM { Sequence = 2, BullSaleView = BullSaleViewNameEnum.WW_ADJ, RangeMinValue = WwtMn.ToString(CultureInfo.InvariantCulture), RangeMaxValue = WwtMx.ToString(CultureInfo.InvariantCulture) }, new TraitVM { Sequence = 3, BullSaleView = BullSaleViewNameEnum.YW_ADJ, RangeMinValue = YwtMn.ToString(CultureInfo.InvariantCulture), RangeMaxValue = YwtMx.ToString(CultureInfo.InvariantCulture) } }; var search = new PredictabullServices.Search(bullList, desiredTraits, null); var results = search.QualifyBulls(); Assert.AreEqual(3, results.Count); Assert.AreEqual(3, results.First().Bull.SEL_IDX); Assert.AreEqual(1, results.Last().Bull.SEL_IDX); }
public void FindsAll() { var bulls = _SaleBulls.Where(x => x.Calf_SN == 1000).ToList(); Assert.AreEqual(1, bulls.Count()); var allMatchingTraits = new List<TraitVM> { new TraitVM { BullSaleView = BullSaleViewNameEnum.BW_ADJ, RangeMinValue = "89", RangeMaxValue = "91" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.WW_ADJ, RangeMinValue = "499", RangeMaxValue = "501" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.YW_ADJ, RangeMinValue = "999", RangeMaxValue = "1001" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.H18MW_ADJ, RangeMinValue = "1499", RangeMaxValue = "1501" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.ADG_BW_ADJ, RangeMinValue = "2.4", RangeMaxValue = "2.6" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.BACKFAT_ADJ, RangeMinValue = "8.0", RangeMaxValue = "8.2" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.SCROTCIRC_ADJ, RangeMinValue = "40.0", RangeMaxValue = "41.0" }, }; var sut = new PredictabullServices.Search(bulls, allMatchingTraits, null); IEnumerable<QualifiedBull> result = sut.QualifyBulls(); Assert.AreEqual(1, result.Count()); Assert.AreEqual(allMatchingTraits.Count, result.First().BullTraits.Count(x => x.Qualifies)); }
public void FindsAll() { var bulls = _SaleBulls.Where(x => x.Calf_SN == 1000).ToList(); Assert.AreEqual(1, bulls.Count()); var traits = new List<TraitVM> { new TraitVM { BullSaleView = BullSaleViewNameEnum.FFHH, RangeMinValue = "1", RangeMaxValue = "3" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.FLHL, RangeMinValue = "2", RangeMaxValue = "4" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Morph, RangeMinValue = "69", RangeMaxValue = "71" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Motil, RangeMinValue = "79", RangeMaxValue = "81" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Conc, RangeMinValue = "1", RangeMaxValue = "3" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Disp, RangeMinValue = "2", RangeMaxValue = "4" }, }; var sut = new PredictabullServices.Search(bulls, traits, null); IEnumerable<QualifiedBull> result = sut.QualifyBulls(); Assert.AreEqual(1, result.Count()); Assert.AreEqual(traits.Count, result.First().BullTraits.Count()); Assert.AreEqual(traits.Count, result.First().BullTraits.Count(x => x.Qualifies)); }
public void FindsAll() { var bulls = _SaleBulls.Where(x => x.Calf_SN == 1000).ToList(); Assert.AreEqual(1, bulls.Count()); var traits = new List<TraitVM> { new TraitVM { BullSaleView = BullSaleViewNameEnum.HideColour_Code, ExactValue = "BLK" }, new TraitVM { BullSaleView =BullSaleViewNameEnum.TagColour, ExactValue = "ORANGE" }, }; var sut = new PredictabullServices.Search(bulls, traits, null); IEnumerable<QualifiedBull> result = sut.QualifyBulls(); Assert.AreEqual(1, result.Count()); Assert.AreEqual(traits.Count, result.First().BullTraits.Count()); Assert.AreEqual(traits.Count, result.First().BullTraits.Count(x => x.Qualifies)); }
public void FindsAll() { var bulls = _SaleBulls.Where(x => x.Calf_SN == 1000).ToList(); Assert.AreEqual(1, bulls.Count()); var traits = new List<TraitVM> { new TraitVM { BullSaleView = BullSaleViewNameEnum.AgeOfDam, RangeMinValue = "3", RangeMaxValue = "5" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Dam_Wt, RangeMinValue = "1499", RangeMaxValue = "1501" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Teat, RangeMinValue = "1", RangeMaxValue = "3" }, new TraitVM { BullSaleView = BullSaleViewNameEnum.Udder, RangeMinValue = "1", RangeMaxValue = "3" }, }; var sut = new PredictabullServices.Search(bulls, traits, null); IEnumerable<QualifiedBull> result = sut.QualifyBulls(); Assert.AreEqual(1, result.Count()); Assert.AreEqual(traits.Count, result.First().BullTraits.Count()); Assert.AreEqual(traits.Count, result.First().BullTraits.Count(x => x.Qualifies)); }