Skip to content

Commit

Permalink
Add initialization tests
Browse files Browse the repository at this point in the history
  • Loading branch information
holos-aafc committed Jul 12, 2024
1 parent ddd54af commit 3dfb5f0
Show file tree
Hide file tree
Showing 4 changed files with 155 additions and 4 deletions.
94 changes: 94 additions & 0 deletions H.Core.Test/Services/InitializationServiceTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
using H.Core.Models.Animals.Beef;
using H.Core.Models.LandManagement.Fields;
using System.Collections.ObjectModel;
using H.Core.Models.Animals.Sheep;

namespace H.Core.Test.Services
{
Expand Down Expand Up @@ -588,6 +589,99 @@ public void InitializeCattleFeedingActivityCoefficientNullComponent(){
}
}

[TestMethod]
public void InitializeLivestockCoefficientSheep()
{
var farm = new Farm();
var ram = new AnimalGroup()
{
GroupType = AnimalType.Ram,
ManagementPeriods =
{
new ManagementPeriod
{
AnimalType =AnimalType.Ram,
GainCoefficientA = 0,
GainCoefficientB = 0,
WoolProduction = 0,
StartWeight = 0,
EndWeight = 0,
}
},
};
var ramComponent = new RamsComponent();
ramComponent.Groups.Add(ram);

farm.Components.Add(ramComponent);

_initializationService.InitializeLivestockCoefficientSheep(farm);
Assert.AreEqual(4, ram.ManagementPeriods.First().WoolProduction);
Assert.AreEqual(125, ram.ManagementPeriods.First().StartWeight);
Assert.AreEqual(125, ram.ManagementPeriods.First().EndWeight);
Assert.AreEqual(2.5, ram.ManagementPeriods.First().GainCoefficientA);
Assert.AreEqual(0.35, ram.ManagementPeriods.First().GainCoefficientB);
}

[TestMethod]
public void InitializeLivestockCoefficientMultipleComponents()
{
var farm = new Farm();
var ewe = new AnimalGroup()
{
GroupType = AnimalType.Ewes,
ManagementPeriods =
{
new ManagementPeriod
{
AnimalType =AnimalType.Ewes,
GainCoefficientA = 0,
GainCoefficientB = 0,
WoolProduction = 0,
StartWeight = 0,
EndWeight = 0,
}
},
};
var weanedLamb = new AnimalGroup()
{
GroupType = AnimalType.WeanedLamb,
ManagementPeriods =
{
new ManagementPeriod
{
AnimalType =AnimalType.WeanedLamb,
GainCoefficientA = 0,
GainCoefficientB = 0,
WoolProduction = 0,
StartWeight = 0,
EndWeight = 0,
}
},
};
var eweAndLambsComponent = new EwesAndLambsComponent();
eweAndLambsComponent.Groups.Add(ewe);
eweAndLambsComponent.Groups.Add(weanedLamb);

farm.Components.Add(eweAndLambsComponent);

_initializationService.InitializeLivestockCoefficientSheep(farm);
Assert.AreEqual(0.45, ewe.ManagementPeriods.First().GainCoefficientB);
Assert.AreEqual(0.385, weanedLamb.ManagementPeriods.First().GainCoefficientB);
}

[TestMethod]
public void InitializeLivestockCoefficientNullArguments()
{
Farm farm = new Farm();
try
{
_initializationService.InitializeLivestockCoefficientSheep(farm); //passing null farm
}
catch (Exception ex)
{
Assert.Fail(ex.Message);
}
}
#endregion
}
}
5 changes: 5 additions & 0 deletions H.Core.Test/UnitTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ public abstract class UnitTestBase
protected IPCCTier2SoilCarbonCalculator _ipcc;
protected IFieldResultsService _fieldResultsService;
protected Mock<ISlcClimateProvider> _slcClimateProvider;
protected Mock<IInitializationService> _mockInitializationService;
protected IInitializationService _initializationService;

#endregion

Expand All @@ -59,6 +61,9 @@ static UnitTestBase()

protected UnitTestBase()
{

_initializationService = new InitializationService();

_mockFarmResultService = new Mock<IFarmResultsService>();
_mockFarmResultServiceObject = _mockFarmResultService.Object;

Expand Down
1 change: 1 addition & 0 deletions H.Core/Services/IInitializationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public interface IInitializationService
void InitializeManureExcretionRate(Farm farm);
void InitializeAnnualEntericMethaneRate(Farm farm);
void InitializeAnnualEntericMethaneRate(ManagementPeriod managementPeriod);
void InitializeLivestockCoefficientSheep(Farm farm);
}
}

59 changes: 55 additions & 4 deletions H.Core/Services/InitializationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public class InitializationService : IInitializationService
private readonly Table_17_Beef_Dairy_Cattle_Feeding_Activity_Coefficient_Provider _beefDairyCattleFeedingActivityCoefficientProvider;
private readonly Table_51_Herbicide_Energy_Estimates_Provider _herbicideEnergyEstimatesProvider;
private readonly Table_27_Enteric_CH4_Swine_Poultry_OtherLivestock_Provider _entericMethaneProvider;
private readonly Table_31_Swine_VS_Excretion_For_Diets_Provider _volatileExcretionForDietsProvider;

#endregion

Expand All @@ -58,6 +59,7 @@ public InitializationService()
_herbicideEnergyEstimatesProvider = new Table_51_Herbicide_Energy_Estimates_Provider();
_defaultManureExcretionRateProvider = new Table_29_Default_Manure_Excreted_Provider();
_entericMethaneProvider = new Table_27_Enteric_CH4_Swine_Poultry_OtherLivestock_Provider();
_volatileExcretionForDietsProvider = new Table_31_Swine_VS_Excretion_For_Diets_Provider();
}

#endregion
Expand Down Expand Up @@ -100,11 +102,17 @@ public void ReInitializeFarms(IEnumerable<Farm> farms)
// Table 21
this.InitializeMilkProduction(farm);

// Table 22
this.InitializeLivestockCoefficientSheep(farm);

// Table 27
this.InitializeAnnualEntericMethaneRate(farm);

// Table 29
this.InitializeManureExcretionRate(farm);

// Table 31
this.InitializeVolatileSolidsExcretion(farm);

// Table 35
this.InitializeMethaneProducingCapacity(farm);
Expand All @@ -129,6 +137,24 @@ public void ReInitializeFarms(IEnumerable<Farm> farms)
}
}

private void InitializeVolatileSolidsExcretion(Farm farm)
{
if (farm != null && farm.DefaultSoilData != null)
{
var province = farm.DefaultSoilData.Province;

foreach (var managementPeriod in farm.GetAllManagementPeriods().Where(x => x.AnimalType.IsSwineType()))
{
this.InitializeVolatileSolidsExcretion(managementPeriod, province);
}
}
}

public void InitializeVolatileSolidsExcretion(ManagementPeriod managementPeriod, Province province)
{

}

public void InitializeAnnualEntericMethaneRate(Farm farm)
{
if (farm != null)
Expand Down Expand Up @@ -159,22 +185,22 @@ public void InitializeManureExcretionRate(Farm farm)
}
}
}

public void InitializeManureExcretionRate(ManagementPeriod managementPeriod)
{
if (managementPeriod != null && managementPeriod.HousingDetails != null)
{
managementPeriod.ManureDetails.ManureExcretionRate = _defaultManureExcretionRateProvider.GetManureExcretionRate(managementPeriod.AnimalType);
}
}

public void InitializeMethaneProducingCapacity(Farm farm)
{
if (farm != null)
{
foreach (var managementPeriod in farm.GetAllManagementPeriods())
{
this.InitializeMethaneProducingCapacity(managementPeriod);


{
this.InitializeMethaneProducingCapacity(managementPeriod);
}
}
}
Expand Down Expand Up @@ -466,6 +492,31 @@ public void InitializeParameterAdjustmenstForManure(Farm farm)
}
}
}

public void InitializeLivestockCoefficientSheep(Farm farm)
{
if (farm != null)
{
foreach (var managementPeriod in farm.GetAllManagementPeriods())
{
if (managementPeriod != null && (managementPeriod.AnimalType == AnimalType.Ewes || managementPeriod.AnimalType == AnimalType.Ram || managementPeriod.AnimalType == AnimalType.WeanedLamb))
{
var result =
_sheepProvider.GetCoefficientsByAnimalType(managementPeriod.AnimalType) as
Table_22_Livestock_Coefficients_Sheep_Data;
if (result != null)
{
managementPeriod.WoolProduction = result.WoolProduction;
managementPeriod.GainCoefficientA = result.CoefficientA;
managementPeriod.GainCoefficientB = result.CoefficientB;
managementPeriod.StartWeight = result.DefaultInitialWeight;
managementPeriod.EndWeight = result.DefaultFinalWeight;
}
}
}
}
}

#endregion

#region Private Methods
Expand Down

0 comments on commit 3dfb5f0

Please sign in to comment.