public OrganonWarnings(OrganonWarnings other) { this.BigSixHeightAbovePotential = other.BigSixHeightAbovePotential; this.LessThan50TreeRecords = other.LessThan50TreeRecords; this.HemlockSiteIndexOutOfRange = other.HemlockSiteIndexOutOfRange; this.OtherSpeciesBasalAreaTooHigh = other.OtherSpeciesBasalAreaTooHigh; this.SiteIndexOutOfRange = other.SiteIndexOutOfRange; this.TreesOld = other.TreesOld; this.TreesYoung = other.TreesYoung; }
protected static void Verify(ExpectedTreeChanges expectedGrowth, OrganonWarnings expectedWarnings, TestStand stand, OrganonVariant variant) { Assert.IsTrue(stand.AgeInYears >= 0); Assert.IsTrue(stand.AgeInYears <= TestConstant.Maximum.StandAgeInYears); Assert.IsTrue(stand.BreastHeightAgeInYears >= 0); Assert.IsTrue(stand.BreastHeightAgeInYears <= TestConstant.Maximum.StandAgeInYears); Assert.IsTrue(stand.NumberOfPlots >= 1); Assert.IsTrue(stand.NumberOfPlots <= 36); Assert.IsTrue(stand.TreesBySpecies.Count > 0); Assert.IsTrue(stand.GetTreeRecordCount() > 0); foreach (Trees treesOfSpecies in stand.TreesBySpecies.Values) { FiaCode species = treesOfSpecies.Species; Assert.IsTrue(Enum.IsDefined(typeof(FiaCode), species)); for (int treeIndex = 0; treeIndex < treesOfSpecies.Count; ++treeIndex) { // primary tree data float crownRatio = treesOfSpecies.CrownRatio[treeIndex]; Assert.IsTrue(crownRatio >= 0.0F); Assert.IsTrue(crownRatio <= 1.0F); float dbhInInches = treesOfSpecies.Dbh[treeIndex]; Assert.IsTrue(dbhInInches >= 0.0F); Assert.IsTrue(dbhInInches <= TestConstant.Maximum.DiameterInInches); float expansionFactor = treesOfSpecies.LiveExpansionFactor[treeIndex]; Assert.IsTrue(expansionFactor >= 0.0F); Assert.IsTrue(expansionFactor <= TestConstant.Maximum.ExpansionFactor); float heightInFeet = treesOfSpecies.Height[treeIndex]; Assert.IsTrue(heightInFeet >= 0.0F); Assert.IsTrue(heightInFeet <= TestConstant.Maximum.HeightInFeet); float deadExpansionFactor = treesOfSpecies.DeadExpansionFactor[treeIndex]; Assert.IsTrue(deadExpansionFactor >= 0.0F); Assert.IsTrue(deadExpansionFactor <= TestConstant.Maximum.ExpansionFactor); Assert.IsTrue(expansionFactor + deadExpansionFactor <= TestConstant.Maximum.ExpansionFactor); // diameter and height growth float diameterGrowthInInches = treesOfSpecies.DbhGrowth[treeIndex]; if (expectedGrowth.HasFlag(ExpectedTreeChanges.DiameterGrowth)) { Assert.IsTrue(diameterGrowthInInches > 0.0F, "{0}: {1} {2} did not grow in diameter.", variant.TreeModel, treesOfSpecies.Species, treeIndex); Assert.IsTrue(diameterGrowthInInches <= 0.1F * TestConstant.Maximum.DiameterInInches); } else if (expectedGrowth.HasFlag(ExpectedTreeChanges.DiameterGrowthOrNoChange)) { Assert.IsTrue(diameterGrowthInInches >= 0.0F); Assert.IsTrue(diameterGrowthInInches <= 0.1F * TestConstant.Maximum.DiameterInInches); } else { Assert.IsTrue(diameterGrowthInInches == 0.0F); } float heightGrowthInFeet = treesOfSpecies.HeightGrowth[treeIndex]; if (expectedGrowth.HasFlag(ExpectedTreeChanges.HeightGrowth)) { Assert.IsTrue(heightGrowthInFeet > 0.0F, "{0}: {1} {2} did not grow in height.", variant.TreeModel, treesOfSpecies.Species, treeIndex); Assert.IsTrue(heightGrowthInFeet <= 0.1F * TestConstant.Maximum.HeightInFeet); } else if (expectedGrowth.HasFlag(ExpectedTreeChanges.HeightGrowthOrNoChange)) { Assert.IsTrue(heightGrowthInFeet >= 0.0F, "{0}: {1} {2} decreased in height.", variant.TreeModel, treesOfSpecies.Species, treeIndex); Assert.IsTrue(heightGrowthInFeet <= 0.1F * TestConstant.Maximum.HeightInFeet); } else { Assert.IsTrue(heightGrowthInFeet == 0.0F); } // for now, ignore warnings on height exceeding potential height // Assert.IsTrue(stand.TreeWarnings[treeWarningIndex] == 0); } for (int treeIndex = treesOfSpecies.Count; treeIndex < treesOfSpecies.Capacity; ++treeIndex) { Assert.IsTrue(treesOfSpecies.CrownRatio[treeIndex] == 0.0F); Assert.IsTrue(treesOfSpecies.Dbh[treeIndex] == 0.0F); Assert.IsTrue(treesOfSpecies.DeadExpansionFactor[treeIndex] == 0.0F); Assert.IsTrue(treesOfSpecies.Height[treeIndex] == 0.0F); Assert.IsTrue(treesOfSpecies.LiveExpansionFactor[treeIndex] == 0.0F); } } Assert.IsTrue(stand.Warnings.BigSixHeightAbovePotential == false); Assert.IsTrue(stand.Warnings.LessThan50TreeRecords == expectedWarnings.HasFlag(OrganonWarnings.LessThan50TreeRecords)); Assert.IsTrue(stand.Warnings.HemlockSiteIndexOutOfRange == expectedWarnings.HasFlag(OrganonWarnings.HemlockSiteIndex)); Assert.IsTrue(stand.Warnings.OtherSpeciesBasalAreaTooHigh == false); Assert.IsTrue(stand.Warnings.SiteIndexOutOfRange == false); if (variant.TreeModel != TreeModel.OrganonSmc) { // for now, ignore SMC warning for breast height age < 10 Assert.IsTrue(stand.Warnings.TreesOld == false); } // for now, ignore stand.Warnings.TreesYoung }