package com.evancharlton.mileage.models;
import android.database.sqlite.SQLiteDatabase;
import com.evancharlton.mileage.FillUpsProvider;
import com.evancharlton.mileage.Mileage;
import com.evancharlton.mileage.PreferencesProvider;
import com.evancharlton.mileage.calculators.CalculationEngine;
import com.evancharlton.mileage.tests.TestCase;
public class FillUpTest extends TestCase {
private CalculationEngine ce;
public void setUp() {
ce = new CalculationEngine();
ce.setInputDistance(PreferencesProvider.MILES);
ce.setInputVolume(PreferencesProvider.GALLONS);
ce.setEconomy(PreferencesProvider.MI_PER_GALLON);
}
public void tearDown() {
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("/data/data/" + Mileage.PACKAGE + "/databases/" + FillUpsProvider.DATABASE_NAME, null);
db.delete(FillUpsProvider.FILLUPS_TABLE_NAME, "1", null);
db.close();
}
public void testSaveAndLoad() throws Exception {
double amount = 10;
String comment = "This is a sample fill-up";
double price = 3.599;
double latitude = 1;
double longitude = 2;
double odometer = 100;
long vehicleId = 1;
FillUp f = new FillUp(ce);
f.setAmount(amount);
f.setComment(comment);
f.setPrice(price);
f.setLatitude(latitude);
f.setLongitude(longitude);
f.setOdometer(odometer);
f.setVehicleId(vehicleId);
long id = f.save();
f = new FillUp(ce, id);
assertEquals(amount, f.getAmount());
assertEquals(comment, f.getComment());
assertEquals(price, f.getPrice());
assertEquals(latitude, f.getLatitude());
assertEquals(longitude, f.getLongitude());
assertEquals(odometer, f.getOdometer());
assertEquals(vehicleId, f.getVehicleId());
}
public void testPrevious() {
FillUp f = new FillUp(ce);
f.setAmount(10);
f.setComment("First");
f.setPrice(3.099);
f.setOdometer(100);
f.setVehicleId(1);
long id = f.save();
f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second (fake)");
f.setPrice(3.199);
f.setOdometer(100);
f.setVehicleId(2);
f.save();
f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second");
f.setPrice(3.199);
f.setOdometer(200);
f.setVehicleId(1);
long id_real = f.save();
f = new FillUp(ce, id_real);
FillUp previous = f.getPrevious();
assertEquals(previous.getId(), id);
}
public void testNext() {
FillUp f = new FillUp(ce);
f.setAmount(10);
f.setComment("First");
f.setPrice(3.099);
f.setOdometer(100);
f.setVehicleId(1);
long id = f.save();
f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second (fake)");
f.setPrice(3.199);
f.setOdometer(100);
f.setVehicleId(2);
f.save();
f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second");
f.setPrice(3.199);
f.setOdometer(200);
f.setVehicleId(1);
long id_real = f.save();
f = new FillUp(ce, id);
FillUp next = f.getNext();
assertEquals(next.getId(), id_real);
}
public void test_calcEconomy() {
FillUp f = new FillUp(ce);
f.setAmount(10);
f.setComment("First");
f.setPrice(3.099);
f.setOdometer(100);
f.setVehicleId(1);
f.save();
f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second");
f.setPrice(3.199);
f.setOdometer(200);
f.setVehicleId(1);
f.save();
assertCloseEnough(10, f.calcEconomy());
}
public void test_calcDistance() {
FillUp f = new FillUp(ce);
f.setAmount(10);
f.setComment("First");
f.setPrice(3.099);
f.setOdometer(100);
f.setVehicleId(1);
f.save();
f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second");
f.setPrice(3.199);
f.setOdometer(200);
f.setVehicleId(1);
f.save();
assertCloseEnough(100, f.calcDistance());
}
public void test_calcCost() {
FillUp f = new FillUp(ce);
f.setAmount(10);
f.setComment("Second");
f.setPrice(3.199);
f.setOdometer(200);
f.setVehicleId(1);
f.save();
assertCloseEnough(31.99, f.calcCost());
}
}