Example #1
0
        public static TMeasurement Parse <TMeasurement>(double value, string type)
            where TMeasurement : IMeasurement
        {
            var runtimeType = typeof(TMeasurement);

            if (runtimeType == typeof(IEnergy))
            {
                return((TMeasurement)EnergyParser.Parse(value, type));
            }

            if (runtimeType == typeof(IPower))
            {
                return((TMeasurement)PowerParser.Parse(value, type));
            }

            if (runtimeType == typeof(IRatio))
            {
                return((TMeasurement)RatioParser.Parse(value, type));
            }

            if (runtimeType == typeof(ITemperature))
            {
                return((TMeasurement)TemperatureParser.Parse(value, type));
            }

            if (runtimeType == typeof(IHumidity))
            {
                return((TMeasurement)HumidityParser.Parse(value, type));
            }

            if (runtimeType == typeof(IIlluminance))
            {
                return((TMeasurement)IlluminanceParser.Parse(value, type));
            }

            if (runtimeType == typeof(IMeasurement))
            {
                return((TMeasurement)(IMeasurement) new ReadOnlyMeasurement(value, type));
            }

            throw new Exception("Could not determine type " + runtimeType.Name);
        }
        public override ITemperature GetValue()
        {
            var dataEntry = GetDataEntry();

            if (dataEntry == null)
            {
                return(null);
            }

            var number = dataEntry.DecimalValue ?? 0;
            var units  = dataEntry.Units;

            if (number == 0 && units == string.Empty)
            {
                return(null);
            }

            var result = TemperatureParser.Parse((double)number, units);

            return(result);
        }
Example #3
0
        public override void Execute()
        {
            bool   calculateWindChill = false;
            double windSpeed          = 0.0;

            //Tell the user which options are available.
            Output.Add("--------------------------------------------------------------");
            Output.Add("Temperatuur types: F (Farhenheit), C (Celsius), K (Kelvin).");
            Output.Add("Zet de letter achter het nummer, hoofdletters maakt niet uit.");
            Output.Add("--------------------------------------------------------------");

            //Ask the user which value he wants to use for the conversion
            AssignmentHelper.RequestInput(
                this,
                "Voer de temperatuur in die je wilt gebruiken. (bijv. 20.0C of 25.6F)",
                out string inputString
                );

            bool parsed = TemperatureParser.Parse(inputString, out TemperatureUnit inputUnit, out double inputValue);

            if (!parsed)
            {
                Error = $"Kan waarde `{inputString}` niet conventeren naar een double.";
                return;
            }

            if (inputUnit == TemperatureUnit.Unknown)
            {
                Error = $"Onbekende temperatuur type!";
                return;
            }

            // Ask the user which type he wants to convert to.
            bool targetUnitSuccess = AssignmentHelper.RequestInput(
                this,
                "Naar welk temperatuur type wil je het conveteren (F/C/K)?",
                out char targeUnitResult
                );

            if (!targetUnitSuccess)
            {
                Error = "Kan input niet converteren naar goede type.";
                return;
            }

            TemperatureUnit targetUnit = (TemperatureUnit)targeUnitResult;

            if (inputUnit.Equals(targetUnit))
            {
                Error = $"De conversie is het zelfde (van {inputUnit} naar {targetUnit})";
                return;
            }

            ConsoleKey key = AssignmentHelper.RequestKey(
                "Wil je ook het gevoelstemperatuur berekenen?",
                new[] { ConsoleKey.Y, ConsoleKey.N }
                );

            if (key == ConsoleKey.Y)
            {
                AssignmentHelper.RequestInput <double>(
                    this,
                    "Wat is de wind snelheid in kilometer per seconde?",
                    out windSpeed
                    );

                calculateWindChill = true;
            }
            else if (key == ConsoleKey.N)
            {
                calculateWindChill = false;
            }
            else
            {
                Error = "De ingevoerde toets is incorrect.";
                return;
            }

            //Lookup conversion, print result
            double result        = TemperatureConverter.Convert(inputValue, inputUnit, targetUnit);
            double resultRounded = Math.Round(result, 2);

            StringBuilder builder = new StringBuilder();

            builder.AppendLine("");
            builder.AppendLine($"Het gegeven temperatuur was {inputValue} {inputUnit}, omgezet is het resultaat: {result} {targetUnit}");
            builder.AppendLine("");

            //Append the results of the wind chill calculations.
            if (calculateWindChill)
            {
                double resultWindChill        = TemperatureConverter.ConvertInclWindChill(inputValue, windSpeed, inputUnit, targetUnit);
                double resultWindChillRounded = Math.Round(resultWindChill, 2);

                builder.AppendLine($"Het gevoelstemperatuur met een windsnelheid van {windSpeed} km/h is {resultWindChillRounded} {targetUnit} \n");
            }

            //Write out the entire result.
            Output.Add(builder.ToString());
            Output.Add("Oant moan!");
        }
Example #4
0
        public void ItParsesTheTypeProperly(string input, Type type)
        {
            var result = TemperatureParser.Parse(input);

            Assert.That(result.GetType(), Is.EqualTo(type));
        }
Example #5
0
        public void ItParsesTheValueProperly(string input, double expected)
        {
            var result = TemperatureParser.Parse(input);

            Assert.That(result.Value, Is.EqualTo(expected));
        }
Example #6
0
 public void ItThrowsAnExceptionWhenParsingInvalidTemperatures(string input)
 {
     TemperatureParser.Parse(input);
 }
Example #7
0
 public void ItDoesNotThrowAnExceptionWhenParsingValidTemperatures(string input)
 {
     TemperatureParser.Parse(input);
 }
Example #8
0
 public static ITemperature ToTemperature(this IParameter parameter)
 {
     return(TemperatureParser.Parse(parameter.Value));
 }