Ejemplo n.º 1
0
        //---------------------------------------------------------------------

        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();
        }
Ejemplo n.º 2
0
        //---------------------------------------------------------------------

        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();
            }
        }
Ejemplo n.º 3
0
        //---------------------------------------------------------------------

        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();
        }
Ejemplo n.º 4
0
        public void NullInput()
        {
            InputLine line = MakeInputLine(null);

            Assert.AreEqual("", line.ToString());
            AssertLineAtEnd(line);
            AssertNoMoreLines(line);
        }
Ejemplo n.º 5
0
        public void BlankLine()
        {
            InputLine line = MakeInputLine("");

            AssertLineHasValue(line, 1, "");
            Assert.AreEqual("", line.ToString());
            AssertNoMoreLines(line);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        //---------------------------------------------------------------------

        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);
        }
Ejemplo n.º 8
0
        //---------------------------------------------------------------------

        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);
        }
Ejemplo n.º 9
0
        //---------------------------------------------------------------------

        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();
            }
        }