package com.evancharlton.mileage.calculators; import com.evancharlton.mileage.PreferencesProvider; import com.evancharlton.mileage.tests.TestCase; public class CalculationEngineTest extends TestCase { private CalculationEngine ce; public void setUp() { ce = new CalculationEngine(); } public void testMilesPerGallon() throws Exception { ce.setEconomy(PreferencesProvider.MI_PER_GALLON); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(10, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(6.21371192, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(37.8541178, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(23.5214583, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(8.3267384, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(5.17399537, ce.calculateEconomy(100, 10)); } public void testMilesPerLitre() throws Exception { ce.setEconomy(PreferencesProvider.MI_PER_LITRE); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(2.64172052, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(1.64148903, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(10, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(6.21371192, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(2.19969157, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(1.36682498, ce.calculateEconomy(100, 10)); } public void testMilesPerImperialGallon() throws Exception { ce.setEconomy(PreferencesProvider.MI_PER_IMP_GALLON); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(12.0095042, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(7.46235995, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(45.4609188, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(28.2481053, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(10, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(6.21371192, ce.calculateEconomy(100, 10)); } public void testKilometersPerGallon() throws Exception { ce.setEconomy(PreferencesProvider.KM_PER_GALLON); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(16.09344, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.GALLONS); assertCloseEnough(10, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(60.9202974, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.LITRES); assertCloseEnough(37.8541178, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.MILES); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(13.4005865, ce.calculateEconomy(100, 10)); ce.setInputDistance(PreferencesProvider.KILOMETERS); ce.setInputVolume(PreferencesProvider.IMP_GALLONS); assertCloseEnough(8.3267384, ce.calculateEconomy(100, 10)); } }