Skip to content

Commit

Permalink
added rankine scale for the temperature convertor
Browse files Browse the repository at this point in the history
  • Loading branch information
ClaudiuHBann committed Aug 18, 2024
1 parent 5f79d7f commit 4dbb643
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion API/Services/TemperatureService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,24 @@ namespace API.Services
{
public class TemperatureService : BaseService<TemperatureRequest, TemperatureResponse>
{
// Base temperature scale is Celsius
private static readonly Dictionary<string, Func<double, double>> _temperatureDirectConversions =
new() { { "Celsius->Celsius", temperature => temperature },
{ "Celsius->Fahrenheit", ToFahrenheit },
{ "Celsius->Kelvin", ToKelvin },
{ "Celsius->Rankine", ToRankine },
{ "Fahrenheit->Fahrenheit", temperature => temperature },
{ "Fahrenheit->Celsius", FromFahrenheit },
{ "Fahrenheit->Kelvin", temperature => ToKelvin(FromFahrenheit(temperature)) },
{ "Fahrenheit->Rankine", temperature => ToRankine(FromFahrenheit(temperature)) },
{ "Kelvin->Celsius", FromKelvin },
{ "Kelvin->Fahrenheit", temperature => ToFahrenheit(FromKelvin(temperature)) },
{ "Kelvin->Kelvin", temperature => temperature } };
{ "Kelvin->Kelvin", temperature => temperature },
{ "Kelvin->Rankine", temperature => ToRankine(FromKelvin(temperature)) },
{ "Rankine->Rankine", temperature => temperature },
{ "Rankine->Celsius", FromRankine },
{ "Rankine->Fahrenheit", temperature => ToFahrenheit(FromRankine(temperature)) },
{ "Rankine->Kelvin", temperature => ToKelvin(FromRankine(temperature)) } };

private static readonly List<string> _fromTo =
_temperatureDirectConversions.Select(tdc => tdc.Key.Split("->").First()).Distinct().ToList();
Expand Down Expand Up @@ -59,6 +67,8 @@ private static Func<double, double> FindDirectConversion(TemperatureRequest requ
}

private static double ToKelvin(double temperature) => temperature + 273.15;
private static double ToRankine(double temperature) => temperature * 1.8 + 491.67;
private static double FromRankine(double temperature) => (temperature - 491.67) * 0.555555556;
private static double FromKelvin(double temperature) => temperature - 273.15;
private static double ToFahrenheit(double temperature) => temperature * 1.8 + 32.0;
private static double FromFahrenheit(double temperature) => (temperature - 32.0) * 0.555555556;
Expand Down

0 comments on commit 4dbb643

Please sign in to comment.