public void ReadingValuesConverterTestA()
        {
            var converter = new ReadingValuesConverter <ReadingValues, ReadingValues>(
                new TemperatureConverter(TemperatureUnit.Celsius, TemperatureUnit.Fahrenheit),
                new SpeedConverter(SpeedUnit.MetersPerSec, SpeedUnit.MetersPerSec),
                new PressureConverter(PressureUnit.Millibar, PressureUnit.KiloPascals)
                );

            var inputA    = new ReadingValues(0, 0, 0, 0, 0);
            var expectedA = new ReadingValues(32, 0, 0, 0, 0);

            Assert.AreEqual(expectedA, converter.Convert(inputA));

            var inputB    = new ReadingValues(30, 1000, .9, 98, 14);
            var expectedB = new ReadingValues(86, 100, .9, 98, 14);

            Assert.AreEqual(expectedB, converter.Convert(inputB));
        }
        public void ReadingValuesConverterTestA()
        {
            var converter = new ReadingValuesConverter<ReadingValues, ReadingValues>(
                new TemperatureConverter(TemperatureUnit.Celsius,TemperatureUnit.Fahrenheit),
                new SpeedConverter(SpeedUnit.MetersPerSec, SpeedUnit.MetersPerSec),
                new PressureConverter(PressureUnit.Millibar, PressureUnit.KiloPascals)
            );

            var inputA = new ReadingValues(0, 0, 0, 0, 0);
            var expectedA = new ReadingValues(32, 0, 0, 0, 0);

            Assert.AreEqual(expectedA, converter.Convert(inputA));

            var inputB = new ReadingValues(30, 1000, .9, 98, 14);
            var expectedB = new ReadingValues(86, 100, .9, 98, 14);

            Assert.AreEqual(expectedB, converter.Convert(inputB));
        }
Esempio n. 3
0
        public void SetValues(ISensor sensor, IReadingValues reading)
        {
            ReadingValuesConverter <IReadingValues, ReadingValues> converter = null;

            if (null != sensor)
            {
                int n;
                sensorNameLabel.Text = (Int32.TryParse(sensor.Name, out n) && 0 <= n && n < 26)
                                        ? ((char)((byte)('A') + (byte)n)).ToString()
                                        : sensor.Name;
                if (null != ConverterCache && sensor is ISensorInfo)
                {
                    var si = sensor as ISensorInfo;
                    converter = ConverterCache.Get(
                        si.TemperatureUnit, TemperatureUnit,
                        si.SpeedUnit, SpeedUnit,
                        si.PressureUnit, PressureUnit
                        );
                }
            }
            else
            {
                sensorNameLabel.Text = "Sensor";
            }

            const string na = "N/A";

            if (null != reading && reading.IsValid)
            {
                var data = null == converter
                                    ? reading
                                    : converter.Convert(reading)
                ;

                string tempText;
                if (data.IsTemperatureValid)
                {
                    tempText = data.Temperature.ToString("F1") + ' ' + UnitUtility.GetFriendlyName(TemperatureUnit);
                }
                else
                {
                    tempText = na;
                }

                string presText;
                if (data.IsPressureValid)
                {
                    var presUnit = PressureUnit;
                    presText = Math.Round(data.Pressure, presUnit == PressureUnit.Millibar ? 1 : 2).ToString()
                               + ' '
                               + UnitUtility.GetFriendlyName(presUnit)
                    ;
                }
                else
                {
                    presText = na;
                }

                string speedText;
                if (data.IsWindSpeedValid)
                {
                    speedText = data.WindSpeed.ToString("F2") + ' ' + UnitUtility.GetFriendlyName(SpeedUnit);
                }
                else
                {
                    speedText = na;
                }

                string dirText;
                if (data.IsWindDirectionValid)
                {
                    dirText = Math.Round(data.WindDirection).ToString()
                              + "\xb0 "
                              + Vector2D.CardinalDirection.DegreesToBestCardinalName(reading.WindDirection)
                    ;
                }
                else
                {
                    dirText = na;
                }

                tempValue.Text     = tempText;
                pressureValue.Text = presText;
                humidityValue.Text = data.IsHumidityValid
                                        ? (Math.Round(data.Humidity * 100.0, 1).ToString() + '%')
                                        : na
                ;
                windSpeedValue.Text = speedText;
                windDirValue.Text   = dirText;
            }
            else
            {
                tempValue.Text      = na;
                pressureValue.Text  = na;
                humidityValue.Text  = na;
                windSpeedValue.Text = na;
                windDirValue.Text   = na;
            }
        }