//--------------------------------------------------------------------- private void CompareDatasetAndFile(IDataset dataset, string filename) { FileLineReader file = OpenFile(filename); InputLine inputLine = new InputLine(file); InputVar <string> LandisData = new InputVar <string>(Landis.Data.InputVarName); inputLine.ReadVar(LandisData); int expectedIndex = 0; foreach (IEcoregion ecoregion in dataset) { Assert.AreEqual(expectedIndex, ecoregion.Index); expectedIndex++; Assert.IsTrue(inputLine.GetNext()); currentLine = new StringReader(inputLine.ToString()); Assert.AreEqual(ReadValue <bool>(), ecoregion.Active); Assert.AreEqual(ReadValue <byte>(), ecoregion.MapCode); Assert.AreEqual(ReadValue <string>(), ecoregion.Name); Assert.AreEqual(ReadValue <string>(), ecoregion.Description); } Assert.IsFalse(inputLine.GetNext()); file.Close(); }
//--------------------------------------------------------------------- private void CheckPercentageTable(string tableName, IPercentageTable table, string nextTableName) { inputLine.MatchName(tableName); bool haveLine = inputLine.GetNext(); while (haveLine && inputLine.VariableName != nextTableName) { StringReader currentLine = new StringReader(inputLine.ToString()); string disturbance = ReadInputValue <string>(currentLine); PlugInType disturbanceType; if (disturbance == "(default)") { disturbanceType = new PlugInType(disturbance); } else { disturbanceType = new PlugInType("disturbance:" + disturbance); } PoolPercentages percentages = table[disturbanceType]; Assert.AreEqual((double)percentages.Woody, (double)ReadInputValue <Percentage>(currentLine)); Assert.AreEqual((double)percentages.NonWoody, (double)ReadInputValue <Percentage>(currentLine)); haveLine = inputLine.GetNext(); } }
//--------------------------------------------------------------------- private void CompareDatasetAndFile(ISpeciesDataset dataset, string filename) { FileLineReader file = OpenFile(filename); InputLine inputLine = new InputLine(file); InputVar <string> LandisData = new InputVar <string>(Landis.Data.InputVarName); inputLine.ReadVar(LandisData); int expectedIndex = 0; foreach (ISpecies species in dataset) { Assert.AreEqual(expectedIndex, species.Index); expectedIndex++; Assert.IsTrue(inputLine.GetNext()); currentLine = new StringReader(inputLine.ToString()); Assert.AreEqual(ReadValue <string>(), species.Name); Assert.AreEqual(ReadValue <int>(), species.Longevity); Assert.AreEqual(ReadValue <int>(), species.Maturity); Assert.AreEqual(ReadValue <byte>(), species.ShadeTolerance); Assert.AreEqual(ReadValue <byte>(), species.FireTolerance); Assert.AreEqual(ReadEffectiveSeedDist(), species.EffectiveSeedDist); Assert.AreEqual(ReadValue <int>(), species.MaxSeedDist); Assert.AreEqual(ReadValue <float>(), species.VegReprodProb); Assert.AreEqual(ReadValue <int>(), species.MinSproutAge); Assert.AreEqual(ReadValue <int>(), species.MaxSproutAge); Assert.AreEqual(ReadValue <PostFireRegeneration>(), species.PostFireRegeneration); } Assert.IsFalse(inputLine.GetNext()); file.Close(); }
public void NullInput() { InputLine line = MakeInputLine(null); Assert.AreEqual("", line.ToString()); AssertLineAtEnd(line); AssertNoMoreLines(line); }
public void BlankLine() { InputLine line = MakeInputLine(""); AssertLineHasValue(line, 1, ""); Assert.AreEqual("", line.ToString()); AssertNoMoreLines(line); }
public void MatchName() { string varName = "Variable-Name"; InputLine line = MakeInputLine(varName); AssertLineHasValue(line, 1, varName); Assert.AreEqual(varName, line.ToString()); line.MatchName(varName); AssertNoMoreLines(line); }
//--------------------------------------------------------------------- private List <IEcoregion> ReadEcoregions() { List <IEcoregion> ecoregions = new List <IEcoregion>(); InputVar <string> ecoregionName = new InputVar <string>("Ecoregion"); StringReader currentLine = new StringReader(inputLine.ToString()); TextReader.SkipWhitespace(currentLine); while (currentLine.Peek() != -1) { ecoregionName.ReadValue(currentLine); IEcoregion ecoregion = ecoregionDataset[ecoregionName.Value.Actual]; Assert.IsNotNull(ecoregion); ecoregions.Add(ecoregion); TextReader.SkipWhitespace(currentLine); } inputLine.GetNext(); return(ecoregions); }
//--------------------------------------------------------------------- private void ReadStrVar_Quoted(string valueAsStr, string quotedValue) { string lineAsStr = strVar.Name + " " + quotedValue; InputLine line = MakeInputLine(lineAsStr); Assert.AreEqual(lineAsStr, line.ToString()); line.ReadVar(strVar); Assert.AreEqual(valueAsStr, strVar.Value.Actual); Assert.AreEqual(quotedValue, strVar.Value.String); AssertNoMoreLines(line); }
//--------------------------------------------------------------------- private void ReadAndCheckParameters(string filename) { IParameters parameters; try { reader = OpenFile(filename); parameters = parser.Parse(reader); } finally { reader.Close(); } try { // Now that we know the data file is properly formatted, read // data from it and compare it against parameter object. reader = OpenFile(filename); inputLine = new InputLine(reader); Assert.AreEqual(parser.LandisDataValue, ReadInputVar <string>("LandisData")); Assert.AreEqual(ReadInputVar <int>("Timestep"), parameters.Timestep); Assert.AreEqual(ReadInputVar <SeedingAlgorithms>("SeedingAlgorithm"), parameters.SeedAlgorithm); inputLine.MatchName("MinRelativeBiomass"); inputLine.GetNext(); List <IEcoregion> ecoregions = ReadEcoregions(); for (byte shadeClass = 1; shadeClass <= 5; shadeClass++) { StringReader currentLine = new StringReader(inputLine.ToString()); Assert.AreEqual(shadeClass, ReadInputValue <byte>(currentLine)); foreach (IEcoregion ecoregion in ecoregions) { // TODO: Eventually allow equality testing for Percentage Assert.AreEqual((double)ReadInputValue <Percentage>(currentLine), (double)parameters.MinRelativeBiomass[shadeClass][ecoregion]); } inputLine.GetNext(); } inputLine.MatchName("BiomassParameters"); inputLine.GetNext(); while (inputLine.VariableName != "EstablishProbabilities") { StringReader currentLine = new StringReader(inputLine.ToString()); ISpecies species = ReadSpecies(currentLine); Assert.AreEqual(ReadInputValue <double>(currentLine), parameters.LeafLongevity[species]); Assert.AreEqual(ReadInputValue <double>(currentLine), parameters.WoodyDecayRate[species]); Assert.AreEqual(ReadInputValue <double>(currentLine), parameters.MortCurveShapeParm[species]); inputLine.GetNext(); } CheckParameterTable("EstablishProbabilities", parameters.EstablishProbability, "MaxANPP"); CheckParameterTable("MaxANPP", parameters.MaxANPP, "LeafLitter:DecayRates"); const string AgeOnlyDisturbanceParms = "AgeOnlyDisturbances:BiomassParameters"; CheckParameterTable("LeafLitter:DecayRates", parameters.LeafLitterDecayRate, AgeOnlyDisturbanceParms); if (parameters.AgeOnlyDisturbanceParms != null) { Assert.AreEqual(ReadInputVar <string>(AgeOnlyDisturbanceParms), parameters.AgeOnlyDisturbanceParms); } } finally { inputLine = null; reader.Close(); } }