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 void ItParsesTheTypeProperly(string input, Type type) { var result = EnergyParser.Parse(input); Assert.That(result.GetType(), Is.EqualTo(type)); }
public void ItThrowsAnExceptionWhenParsingInvalidValues(string input) { EnergyParser.Parse(input); }
public void ItParsesTheValueProperly(string input, double expected) { var result = EnergyParser.Parse(input); Assert.That(result.Value, Is.EqualTo(expected)); }
public void ItDoesNotThrowAnExceptionWhenParsingValidValues(string input) { EnergyParser.Parse(input); }