public void GetAppliedLiquidStoredManure() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetLiquidMaterialApplicationUSGallonsPerAcreRateConversion() .Returns(new List <LiquidMaterialApplicationUSGallonsPerAcreRateConversion>() { new LiquidMaterialApplicationUSGallonsPerAcreRateConversion() { ApplicationRateUnit = ApplicationRateUnits.ImperialGallonsPerAcre, USGallonsPerAcreConversion = 1.20095m } }); var convertCalculator = new ManureUnitConversionCalculator(repository); var calculator = new ManureApplicationCalculator(convertCalculator); var farmManure = new FarmManure() { sourceOfMaterialId = "StorageSystem, 1", stored_imported = NutrientAnalysisTypes.Stored }; //Act var result = calculator.GetAppliedStoredManure(_yearData, farmManure); //Assess Assert.IsNotNull(result); Assert.IsTrue(result.FieldAppliedManures.Count > 0); Assert.IsNotNull(result.FieldAppliedManures[0]); Assert.IsNotNull(result.FieldAppliedManures[0].USGallonsApplied); Assert.IsNotNull(result.FieldAppliedManures[0].USGallonsApplied.Value == 120.0950000M); Assert.IsTrue(result.TotalAnnualManureToApply == 2989m); Assert.IsTrue(result.WholePercentAppiled == 4); }
public void GetAppliedManureForStoredFarmManure() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetLiquidMaterialApplicationUSGallonsPerAcreRateConversion() .Returns(new List <LiquidMaterialApplicationUSGallonsPerAcreRateConversion>() { new LiquidMaterialApplicationUSGallonsPerAcreRateConversion() { ApplicationRateUnit = ApplicationRateUnits.ImperialGallonsPerAcre, USGallonsPerAcreConversion = 1.20095m } }); var convertCalculator = new ManureUnitConversionCalculator(repository); var calculator = new ManureApplicationCalculator(convertCalculator); var farmManure = _yearData.farmManures.Single(fm => fm.id == 1); var expectedUnAllocatedMessage = "Storage System: Liquid Storage System , Material: Heavy Feeders Unallocated 2868.905000000 US gallons - 100% of Total Stored"; //Act var result = calculator.GetAppliedManure(_yearData, farmManure); //Assess Assert.IsNotNull(result); Assert.IsNotNull(result as AppliedStoredManure); Assert.IsTrue(result.FieldAppliedManures.Count > 0); Assert.IsNotNull(result.FieldAppliedManures[0]); Assert.IsNotNull(result.FieldAppliedManures[0].USGallonsApplied); Assert.IsNotNull(result.FieldAppliedManures[0].USGallonsApplied.Value == 120.0950000M); Assert.IsTrue(result.TotalAnnualManureToApply == 2989m); Assert.IsTrue(result.WholePercentAppiled == 4); Assert.IsTrue((result as AppliedStoredManure).ListUnallocatedMaterialAsPercentOfTotalStored[0] == expectedUnAllocatedMessage); }
public void GetAppliedManureForImportedManure() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialApplicationTonPerAcreRateConversions() .Returns(new List <SolidMaterialApplicationTonPerAcreRateConversion>() { new SolidMaterialApplicationTonPerAcreRateConversion { ApplicationRateUnit = ApplicationRateUnits.TonsPerAcre, TonsPerAcreConversion = "1" } }); var convertCalculator = new ManureUnitConversionCalculator(repository); var calculator = new ManureApplicationCalculator(convertCalculator); var farmManure = _yearData.farmManures.Single(fm => fm.id == 2); //Act var result = calculator.GetAppliedManure(_yearData, farmManure); //Assess Assert.IsNotNull(result); Assert.IsNotNull(result as AppliedImportedManure); Assert.IsTrue(result.FieldAppliedManures.Count > 0); Assert.IsNotNull(result.FieldAppliedManures[0]); Assert.IsNotNull(result.FieldAppliedManures[0].TonsApplied); Assert.IsNotNull(result.FieldAppliedManures[0].TonsApplied.Value == 100); Assert.IsTrue(result.TotalAnnualManureToApply == 1000m); Assert.IsTrue(result.WholePercentAppiled == 10); }
public void GetSolidsTonsPerAcreApplicationRateCubicYardsInputWithManureId() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialApplicationTonPerAcreRateConversions() .Returns(new List <SolidMaterialApplicationTonPerAcreRateConversion>() { new SolidMaterialApplicationTonPerAcreRateConversion { ApplicationRateUnit = ApplicationRateUnits.CubicYardsPerAcre, TonsPerAcreConversion = "1*density" } }); repository.GetManure("1") .ReturnsForAnyArgs(new Manure { CubicYardConversion = .51m }); var calculator = new ManureUnitConversionCalculator(repository); var manureId = 1; //"Beef-feedlot, solid (dry)" var amount = 10; var expectedTonsPerAcre = 5.1m; //Act var resultTonsPerAcre = calculator.GetSolidsTonsPerAcreApplicationRate(manureId, amount, ApplicationRateUnits.CubicYardsPerAcre); //Assert Assert.AreEqual(expectedTonsPerAcre, Math.Round(resultTonsPerAcre, 1)); }
public void GetVolumeSuccessfullyForTonsInput() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialsConversionFactors() .Returns(new List <SolidMaterialsConversionFactor>() { new SolidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.tons, CubicYardsOutput = "1/density", CubicMetersOutput = "(1/density)*0.764555", MetricTonsOutput = "1" } }); var calculator = new ManureUnitConversionCalculator(repository); var moisture = 50m; var amount = 6; var expectedCubicYards = 12; var expectedCubicMeters = 9; var expectedMetricTons = 6; //Act var cubicYardsResult = calculator.GetCubicYardsVolume(ManureMaterialType.Solid, moisture, amount, AnnualAmountUnits.tons); var cubicMetersResult = calculator.GetCubicMetersVolume(ManureMaterialType.Solid, moisture, amount, AnnualAmountUnits.tons); var metricTonsResult = calculator.GetTonsWeight(ManureMaterialType.Solid, moisture, amount, AnnualAmountUnits.tons); //Assert Assert.AreEqual(expectedCubicYards, Math.Round(cubicYardsResult)); Assert.AreEqual(expectedCubicMeters, Math.Round(cubicMetersResult)); Assert.AreEqual(expectedMetricTons, Math.Round(metricTonsResult)); }
public void GetAppliedSolidImportedManure() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialApplicationTonPerAcreRateConversions() .Returns(new List <SolidMaterialApplicationTonPerAcreRateConversion>() { new SolidMaterialApplicationTonPerAcreRateConversion { ApplicationRateUnit = ApplicationRateUnits.TonsPerAcre, TonsPerAcreConversion = "1" } }); var convertCalculator = new ManureUnitConversionCalculator(repository); var calculator = new ManureApplicationCalculator(convertCalculator, repository); //var farmManure = new FarmManure {sourceOfMaterialId = "Imported, 1", stored_imported = NutrientAnalysisTypes.Imported}; var farmManure = _yearData.FarmManures.Single(fm => fm.Id == 2); //Act var result = calculator.GetAppliedImportedManure(_yearData, farmManure); //Assess result.ShouldNotBeNull(); result.FieldAppliedManures.Count.ShouldBeGreaterThan(0); result.FieldAppliedManures[0].ShouldNotBeNull(); result.FieldAppliedManures[0].TonsApplied.ShouldNotBeNull(); result.FieldAppliedManures[0].TonsApplied.Value.ShouldBe(100); result.TotalAnnualManureToApply.ShouldBe(1000m); result.WholePercentAppiled.ShouldBe(10); }
public void GetSolidsTonsPerAcreApplicationRateTonnesPerHectareInput() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialApplicationTonPerAcreRateConversions() .Returns(new List <SolidMaterialApplicationTonPerAcreRateConversion>() { new SolidMaterialApplicationTonPerAcreRateConversion { ApplicationRateUnit = ApplicationRateUnits.TonnesPerHecatre, TonsPerAcreConversion = "1*1.10231/2.47105" } }); var calculator = new ManureUnitConversionCalculator(repository); var moisture = 75m; var amount = 40; var expectedTonsPerAcre = 17.8m; //Act var resultTonsPerAcre = calculator.GetSolidsTonsPerAcreApplicationRate(moisture, amount, ApplicationRateUnits.TonnesPerHecatre); //Assert Assert.AreEqual(expectedTonsPerAcre, Math.Round(resultTonsPerAcre, 1)); }
public void GetVolumeSuccessfullyForCubicYardsInput() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialsConversionFactors() .Returns(new List <SolidMaterialsConversionFactor>() { new SolidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicYards, CubicYardsOutput = "1", CubicMetersOutput = "0.764555", MetricTonsOutput = "1*density" } }); var calculator = new ManureUnitConversionCalculator(repository); var moisture = 50m; var amount = 5; var expectedCubicYards = 5m; var expectedCubicMeters = 4m; var expectedMetricTons = 2m; //Act var cubicYardsResult = calculator.GetCubicYardsVolume(ManureMaterialType.Solid, moisture, amount, AnnualAmountUnits.CubicYards); var cubicMetersResult = calculator.GetCubicMetersVolume(ManureMaterialType.Solid, moisture, amount, AnnualAmountUnits.CubicYards); var tonsResult = calculator.GetTonsWeight(ManureMaterialType.Solid, moisture, amount, AnnualAmountUnits.CubicYards); //Assert expectedCubicYards.ShouldBe(Math.Round(cubicYardsResult)); expectedCubicMeters.ShouldBe(Math.Round(cubicMetersResult)); expectedMetricTons.ShouldBe(Math.Round(tonsResult)); }
public void GetSolidsTonsPerAcreApplicationRateCubicMetersPerHectareInput() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialApplicationTonPerAcreRateConversions() .Returns(new List <SolidMaterialApplicationTonPerAcreRateConversion>() { new SolidMaterialApplicationTonPerAcreRateConversion { ApplicationRateUnit = ApplicationRateUnits.CubicMetersPerHectare, TonsPerAcreConversion = "1*1.30795*density/2.47105" } }); var calculator = new ManureUnitConversionCalculator(repository); var moisture = 75m; var amount = 10; var expectedTonsPerAcre = 3.7m; //Act var resultTonsPerAcre = calculator.GetSolidsTonsPerAcreApplicationRate(moisture, amount, ApplicationRateUnits.CubicMetersPerHectare); //Assert expectedTonsPerAcre.ShouldBe(Math.Round(resultTonsPerAcre, 1)); }
public void GetDensityFactoredConversion() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); var calculator = new ManureUnitConversionCalculator(repository); var expectedLessThan40 = .27m; var expectedBetween40And82 = 0.483825m; var expectedHigherThan82 = 0.837m; var lessThan40Result = calculator.GetDensity(35); var between40And82Result = calculator.GetDensity(50); var higherThan82Result = calculator.GetDensity(83); Assert.AreEqual(expectedLessThan40, lessThan40Result); Assert.AreEqual(expectedBetween40And82, between40And82Result); Assert.AreEqual(expectedHigherThan82, higherThan82Result); }
public void GetCalculatedSeparatedManure() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialsConversionFactors() .Returns(new List <SolidMaterialsConversionFactor>() { new SolidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, CubicYardsOutput = "1.30795", CubicMetersOutput = "1", MetricTonsOutput = "1.30795*density" } }); repository.GetLiquidMaterialsConversionFactors() .Returns(new List <LiquidMaterialsConversionFactor>() { new LiquidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, USGallonsOutput = 264.172M } }); var conversionCalculator = new ManureUnitConversionCalculator(repository); var totalLiquidVolumeToSeparate = 2789687; var wholePercentSeparation = 10; var calculator = new ManureLiquidSolidSeparationCalculator(conversionCalculator); //Act var actual = calculator.CalculateSeparatedManure(totalLiquidVolumeToSeparate, wholePercentSeparation); var expectedLiquidsUSGallons = 2510718; //38580 var expectedSolidsTons = 925; //Assert Assert.AreEqual(expectedLiquidsUSGallons, actual.LiquidUSGallons); Assert.AreEqual(expectedSolidsTons, actual.SolidTons); }
public void GetLiquidVolumeSuccessfullyForCubicMetersInput() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetLiquidMaterialsConversionFactors() .Returns(new List <LiquidMaterialsConversionFactor>() { new LiquidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, USGallonsOutput = 1 } }); var calculator = new ManureUnitConversionCalculator(repository); var expectedUSGallons = 1; //Act var usGallonsResult = calculator.GetUSGallonsVolume(ManureMaterialType.Liquid, 1, AnnualAmountUnits.CubicMeters); //Assert Assert.AreEqual(expectedUSGallons, usGallonsResult); }
public void GetLiquidVolumeSuccessfullyForImpGallonsInput() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetLiquidMaterialsConversionFactors() .Returns(new List <LiquidMaterialsConversionFactor>() { new LiquidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.ImperialGallons, USGallonsOutput = 1 } }); var calculator = new ManureUnitConversionCalculator(repository); var expected = 1m; //Act var result = calculator.GetUSGallonsVolume(ManureMaterialType.Liquid, 1, AnnualAmountUnits.ImperialGallons); //Assert expected.ShouldBe(result); }
public void GetCalculatedSeparatedManureWithRunOffAndUncoveredArea() { //Arrange var repository = Substitute.For <IAgriConfigurationRepository>(); repository.GetSolidMaterialsConversionFactors() .Returns(new List <SolidMaterialsConversionFactor>() { new SolidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, CubicYardsOutput = "1.30795", CubicMetersOutput = "1", MetricTonsOutput = "1.30795*density" } }); repository.GetLiquidMaterialsConversionFactors() .Returns(new List <LiquidMaterialsConversionFactor>() { new LiquidMaterialsConversionFactor { InputUnit = AnnualAmountUnits.CubicMeters, USGallonsOutput = 264.172M } }); var storage = new ManureStorageSystem { ManureMaterialType = ManureMaterialType.Liquid, GetsRunoffFromRoofsOrYards = true, RunoffAreaSquareFeet = 4000, ManureStorageStructures = { new ManureStorageStructure { UncoveredAreaSquareFeet = 3000 } }, ImportedManuresIncludedInSystem = new List <ImportedManure> { new ImportedManure { ManureType = ManureMaterialType.Liquid, AnnualAmountUSGallonsVolume = 100000, Units = AnnualAmountUnits.USGallons } } }; var conversionCalculator = new ManureUnitConversionCalculator(repository); //171,797 + 100000 = 271797 var totalLiquidVolumeToSeparate = storage.AnnualTotalAmountofManureInStorage; var wholePercentSeparation = 10; var calculator = new ManureLiquidSolidSeparationCalculator(conversionCalculator); //Act var actual = calculator.CalculateSeparatedManure(totalLiquidVolumeToSeparate, wholePercentSeparation); var expectedLiquidsUSGallons = 244617; var expectedSolidsTons = 90; //Assert Assert.AreEqual(Convert.ToInt32(storage.AnnualTotalPrecipitation), 171797); Assert.AreEqual(expectedLiquidsUSGallons, Convert.ToInt32(actual.LiquidUSGallons)); Assert.AreEqual(expectedSolidsTons, actual.SolidTons); }