-
Notifications
You must be signed in to change notification settings - Fork 19.9k
/
Copy pathUnitConversionsTest.java
48 lines (40 loc) · 2.1 KB
/
UnitConversionsTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.thealgorithms.conversions;
import static java.util.Map.entry;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Map;
import java.util.Set;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
public class UnitConversionsTest {
private static void addData(Stream.Builder<Arguments> builder, Map<String, Double> values) {
for (var first : values.entrySet()) {
for (var second : values.entrySet()) {
if (!first.getKey().equals(second.getKey())) {
builder.add(Arguments.of(first.getKey(), second.getKey(), first.getValue(), second.getValue()));
}
}
}
}
private static Stream<Arguments> temperatureData() {
final Map<String, Double> boilingPointOfWater = Map.ofEntries(entry("Celsius", 99.9839), entry("Fahrenheit", 211.97102), entry("Kelvin", 373.1339), entry("Réaumur", 79.98712), entry("Delisle", 0.02415), entry("Rankine", 671.64102));
final Map<String, Double> freezingPointOfWater = Map.ofEntries(entry("Celsius", 0.0), entry("Fahrenheit", 32.0), entry("Kelvin", 273.15), entry("Réaumur", 0.0), entry("Delisle", 150.0), entry("Rankine", 491.67));
Stream.Builder<Arguments> builder = Stream.builder();
addData(builder, boilingPointOfWater);
addData(builder, freezingPointOfWater);
return builder.build();
}
@ParameterizedTest
@MethodSource("temperatureData")
void testTemperature(String inputUnit, String outputUnit, double value, double expected) {
final double result = UnitConversions.TEMPERATURE.convert(inputUnit, outputUnit, value);
assertEquals(expected, result, 0.00001);
}
@Test
void testTemperatureUnits() {
final Set<String> expectedUnits = Set.of("Celsius", "Fahrenheit", "Kelvin", "Réaumur", "Rankine", "Delisle");
assertEquals(expectedUnits, UnitConversions.TEMPERATURE.availableUnits());
}
}