コード例 #1
0
        public List <MeasurementV1> ToMeasurements(TOA5 meteorology)
        {
            List <MeasurementV1> measurements = new List <MeasurementV1>();

            foreach (IObservation obs in meteorology.Observations)
            {
                foreach (Variable variable in meteorology.Metadata.Variables)
                {
                    // Skip TIMESTAMP and RECORD
                    if (variable.FieldName == "TIMESTAMP" ||
                        variable.FieldName == "RECORD")
                    {
                        continue;
                    }

                    MeasurementV1 measurement = CreateMeasurementFromVariable(variable, obs, meteorology.Metadata);
                    measurements.Add(measurement);
                }
            }

            return(measurements);
        }
        public void ToMeasurement_ValidData_ReturnCorrectMeasurements()
        {
            //# Arrange
            MeasurementV1 expectedMeasurement_RH_Avg = new MeasurementV1(
                "EcTower_CookEast_RelativeHumidityTsAvg",
                "CookEast_RelativeHumidityTsAvg_2017-06-20T11:30:00.0000000Z",
                "Measurement",
                "RelativeHumidityTsAvg",
                "1.0.0",
                "CafMeteorologyEcTower",
                "", "", "", "", null,
                "CookEast",
                new LocationV1("Point", 46.78152, -117.08205),
                new DateTime(2017, 6, 20, 11, 30, 0),
                new List <PhysicalQuantityV1>()
            {
                new PhysicalQuantityV1(
                    (decimal)56.22676, "%", 0, 0, 0,
                    DateTime.MaxValue,
                    "DocumentDbMeasurementTransformer")
            });

            MeasurementV1 expectedMeasurement_amb_tmpr_Avg = new MeasurementV1(
                "EcTower_CookEast_TemperatureAirTsAvg",
                "CookEast_TemperatureAirTsAvg_2017-06-20T11:30:00.0000000Z",
                "Measurement",
                "TemperatureAirTsAvg",
                "1.0.0",
                "CafMeteorologyEcTower",
                "", "", "", "", null,
                "CookEast",
                new LocationV1("Point", 46.78152, -117.08205),
                new DateTime(2017, 6, 20, 11, 30, 0),
                new List <PhysicalQuantityV1>()
            {
                new PhysicalQuantityV1(
                    (decimal)4.940109, "C", 0, 0, 0,
                    DateTime.MaxValue,
                    "DocumentDbMeasurementTransformer")
            });

            MeasurementV1 expectedMeasurement_PAR_density_Avg = new MeasurementV1(
                "EcTower_CookEast_ParDensityTsAvg",
                "CookEast_ParDensityTsAvg_2017-06-20T11:30:00.0000000Z",
                "Measurement",
                "ParDensityTsAvg",
                "1.0.0",
                "CafMeteorologyEcTower",
                "", "", "", "", null,
                "CookEast",
                new LocationV1("Point", 46.78152, -117.08205),
                new DateTime(2017, 6, 20, 11, 30, 0),
                new List <PhysicalQuantityV1>()
            {
                new PhysicalQuantityV1(
                    (decimal)0.001956598, "mol/(m^2 s)", 0, 0, 0,
                    DateTime.MaxValue,
                    "DocumentDbMeasurementTransformer")
            });

            List <MeasurementV1> actualMeasurements = new List <MeasurementV1>();

            //# Act
            Mappers.MapFromMeteorologyDataTableToCafStandards map =
                new Mappers.MapFromMeteorologyDataTableToCafStandards();

            DocumentDbMeasurementV1Transformer sut =
                new DocumentDbMeasurementV1Transformer(map, "1.0.0");

            actualMeasurements = sut.ToMeasurements(GetMockMeteorology());

            //# Assert
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_RH_Avg.Name)
                .PhysicalQuantities[0].Value,
                expectedMeasurement_RH_Avg.PhysicalQuantities[0].Value);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_RH_Avg.Name)
                .PhysicalQuantities[0].Unit,
                expectedMeasurement_RH_Avg.PhysicalQuantities[0].Unit);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_amb_tmpr_Avg.Name)
                .PhysicalQuantities[0].Value,
                expectedMeasurement_amb_tmpr_Avg.PhysicalQuantities[0].Value);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_amb_tmpr_Avg.Name)
                .PhysicalQuantities[0].Unit,
                expectedMeasurement_amb_tmpr_Avg.PhysicalQuantities[0].Unit);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_PAR_density_Avg.Name)
                .PhysicalQuantities[0].Value,
                expectedMeasurement_PAR_density_Avg.PhysicalQuantities[0].Value);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_PAR_density_Avg.Name)
                .ID,
                expectedMeasurement_PAR_density_Avg.ID);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_PAR_density_Avg.Name)
                .FieldID,
                expectedMeasurement_PAR_density_Avg.FieldID);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_PAR_density_Avg.Name)
                .Location.Coordinates[0],
                expectedMeasurement_PAR_density_Avg.Location.Coordinates[0]);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_PAR_density_Avg.Name)
                .MetadataID,
                expectedMeasurement_PAR_density_Avg.MetadataID);
            Assert.Equal(
                actualMeasurements
                .Find(m => m.Name == expectedMeasurement_PAR_density_Avg.Name)
                .SchemaVersion,
                expectedMeasurement_PAR_density_Avg.SchemaVersion);
        }