public void SmokeTestUpdateEntry() { var vehicle = new Vehicle { VehicleName = "test vehicle" }; Vehicle.Save(vehicle); var entry = new FillupEntry { EntryDate = DateTime.Now, FillAmount = 13.564, OdometerReading = 100215, PricePerUnit = 2.899 }; var originalTicks = entry.EntryDate.Ticks; vehicle.SaveEntry(entry); vehicle.Entries.Add(entry); entry.OdometerReading = 100210; vehicle.UpdateExistingEntry(entry, originalTicks); entry.EntryDate = new DateTime(2010,10,15); vehicle.UpdateExistingEntry(entry, originalTicks); }
public void TestFillupEntryClone() { var fillupEntry = new FillupEntry { FillAmount = 3.154, OdometerReading = 154254.6, EntryDate = DateTime.Now, PreviousEntryMissed = true, PricePerUnit = 3.256, PumpUnit = UnitOfMeasure.Volume.Gallon, WasNotToppedOff = true }; FillupEntry fillupEntryClone = FillupEntry.Clone(fillupEntry); Assert.IsFalse(ReferenceEquals(fillupEntry, fillupEntryClone)); Assert.AreEqual(fillupEntry.EntryDate, fillupEntryClone.EntryDate); Assert.IsFalse(ReferenceEquals(fillupEntry.EntryDate, fillupEntryClone.EntryDate)); Assert.AreEqual(fillupEntry.FillAmount, fillupEntryClone.FillAmount); Assert.IsFalse(ReferenceEquals(fillupEntry.FillAmount, fillupEntryClone.FillAmount)); Assert.AreEqual(fillupEntry.OdometerReading, fillupEntryClone.OdometerReading); Assert.IsFalse(ReferenceEquals(fillupEntry.OdometerReading, fillupEntryClone.OdometerReading)); Assert.AreEqual(fillupEntry.PreviousEntryMissed, fillupEntryClone.PreviousEntryMissed); Assert.IsFalse(ReferenceEquals(fillupEntry.PreviousEntryMissed, fillupEntryClone.PreviousEntryMissed)); Assert.AreEqual(fillupEntry.PumpUnit, fillupEntryClone.PumpUnit); Assert.IsFalse(ReferenceEquals(fillupEntry.PumpUnit, fillupEntryClone.PumpUnit)); }
public void TestEntrySerializationAndDeserialization() { var entry = new FillupEntry { FillAmount = 13.2342352353, PricePerUnit = 3.4543, PumpUnit = UnitOfMeasure.Volume.Gallon, OdometerUnit = UnitOfMeasure.Distance.Mile, EntryDate = DateTime.Now, OdometerReading = 143423.4, WasNotToppedOff = false, PreviousEntryMissed = true }; byte[] entryBytes = entry.ToBytes(); FillupEntry entry2 = FillupEntryExtensions.EntryFromBytes(entryBytes); Assert.AreEqual(entry.FillAmount, entry2.FillAmount); Assert.AreEqual(entry.EntryDate, entry2.EntryDate); Assert.AreEqual(entry.OdometerReading, entry2.OdometerReading); Assert.AreEqual(entry.OdometerUnit, entry2.OdometerUnit); Assert.AreEqual(entry.PricePerUnit, entry2.PricePerUnit); Assert.AreEqual(entry.PumpUnit, entry2.PumpUnit); Assert.AreEqual(entry.WasNotToppedOff, entry2.WasNotToppedOff); Assert.AreEqual(entry.PreviousEntryMissed, entry2.PreviousEntryMissed); }
public void TestForArgumentExceptionBaselineOdometerReadingGreater() { var vehicle = new Vehicle {OdometerUnit = UnitOfMeasure.DefaultDistanceUnit}; var entry1 = new FillupEntry { OdometerReading = 100, FillAmount = 14.436, PricePerUnit = 2.799, PumpUnit = UnitOfMeasure.Volume.Liter, EntryDate = new DateTime(2010,10,1) }; var entry2 = new FillupEntry { OdometerReading = 200, FillAmount = 14.436, PricePerUnit = 2.799, PumpUnit = UnitOfMeasure.Volume.Liter, EntryDate = new DateTime(2010,10,08) }; vehicle.Entries.Add(entry1); vehicle.Entries.Add(entry2); vehicle.CalculateEfficiency(entry1, entry2, UnitOfMeasure.DefaultDistanceUnit, UnitOfMeasure.DefaultVolumeUnit); }
public static FillupEntry EntryFromBytes(byte[] bytes) { var entry = new FillupEntry(); int curOffset = 0; var fillAmountBytes = new byte[sizeof (double)]; var fillupDateTimeBytes = new byte[sizeof (long)]; var odometerReadingBytes = new byte[sizeof (double)]; var pricePerVolumeUnitBytes = new byte[sizeof (double)]; var volumeUnitBytes = new byte[sizeof (byte)]; var odometerDistanceUnitBytes = new byte[sizeof (byte)]; var wasNotToppedOffBytes = new byte[sizeof (bool)]; var previousEntryMissedBytes = new byte[sizeof (bool)]; Array.Copy(bytes, curOffset, fillupDateTimeBytes, 0, fillupDateTimeBytes.Length); entry.EntryDate = new DateTime(BitConverter.ToInt64(fillupDateTimeBytes, 0)); curOffset += sizeof (long); Array.Copy(bytes, curOffset, odometerReadingBytes, 0, odometerReadingBytes.Length); entry.OdometerReading = BitConverter.ToDouble(odometerReadingBytes, 0); curOffset += sizeof (double); Array.Copy(bytes, curOffset, fillAmountBytes, 0, fillAmountBytes.Length); entry.FillAmount = BitConverter.ToDouble(fillAmountBytes, 0); curOffset += sizeof (double); Array.Copy(bytes, curOffset, pricePerVolumeUnitBytes, 0, pricePerVolumeUnitBytes.Length); entry.PricePerUnit = BitConverter.ToDouble(pricePerVolumeUnitBytes, 0); curOffset += sizeof (double); Array.Copy(bytes, curOffset, volumeUnitBytes, 0, volumeUnitBytes.Length); entry.PumpUnit = (UnitOfMeasure.Volume) volumeUnitBytes[0]; curOffset += sizeof (byte); Array.Copy(bytes, curOffset, odometerDistanceUnitBytes, 0, odometerDistanceUnitBytes.Length); entry.OdometerUnit = (UnitOfMeasure.Distance) odometerDistanceUnitBytes[0]; curOffset += sizeof (byte); Array.Copy(bytes, curOffset, wasNotToppedOffBytes, 0, wasNotToppedOffBytes.Length); entry.WasNotToppedOff = BitConverter.ToBoolean(wasNotToppedOffBytes, 0); curOffset += sizeof (bool); Array.Copy(bytes, curOffset, previousEntryMissedBytes, 0, previousEntryMissedBytes.Length); entry.PreviousEntryMissed = BitConverter.ToBoolean(previousEntryMissedBytes, 0); curOffset += sizeof (bool); return entry; }
public void TestDeleteEntry() { var vehicle = new Vehicle {VehicleName = "test vehicle"}; Vehicle.Save(vehicle); var entry = new FillupEntry { EntryDate = DateTime.Now, FillAmount = 13.564, OdometerReading = 100215, PricePerUnit = 2.899 }; vehicle.Entries.Add(entry); vehicle.SaveEntry(entry); vehicle.DeleteFillupEntry(entry); using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) { Assert.IsFalse(store.FileExists(vehicle.Id + "\\" + entry.OdometerReading)); } }
public void TestNormalizeToImperial() { var entry = new FillupEntry { FillAmount = 1, OdometerReading = 1, PumpUnit = UnitOfMeasure.Volume.Liter, OdometerUnit = UnitOfMeasure.Distance.Kilometer, PricePerUnit = 1 }; FillupEntry entry2 = FillupEntry.Clone(entry); entry2.Normalize(UnitOfMeasure.Distance.Mile, UnitOfMeasure.Volume.Gallon); Assert.IsTrue(entry.PumpUnit == UnitOfMeasure.Volume.Liter && entry2.PumpUnit == UnitOfMeasure.Volume.Gallon); Assert.IsTrue(entry.OdometerUnit == UnitOfMeasure.Distance.Kilometer && entry2.OdometerUnit == UnitOfMeasure.Distance.Mile); Assert.IsTrue(entry2.FillAmount == entry.FillAmount*0.264172052); Assert.IsNotNull(entry2.OdometerReading == entry.OdometerReading*0.621371192); }
public void TestNormalizeToMetric() { var entry = new FillupEntry { FillAmount = 1, OdometerReading = 1, PumpUnit = UnitOfMeasure.Volume.Gallon, OdometerUnit = UnitOfMeasure.Distance.Mile, PricePerUnit = 1 }; FillupEntry entry2 = FillupEntry.Clone(entry); entry2.Normalize(UnitOfMeasure.Distance.Kilometer, UnitOfMeasure.Volume.Liter); Assert.IsTrue(entry.PumpUnit == UnitOfMeasure.Volume.Gallon && entry2.PumpUnit == UnitOfMeasure.Volume.Liter); Assert.IsTrue(entry.OdometerUnit == UnitOfMeasure.Distance.Mile && entry2.OdometerUnit == UnitOfMeasure.Distance.Kilometer); Assert.IsTrue(entry2.FillAmount == entry.FillAmount*3.78541178); Assert.IsNotNull(entry2.OdometerReading == entry.OdometerReading*1.609344); }
public void TestInsertEntry() { var vehicle = new Vehicle {OdometerUnit = UnitOfMeasure.DefaultDistanceUnit}; vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,1,1), OdometerReading = 100, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,1,15), OdometerReading = 200, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,1,30), OdometerReading = 300, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,2,1), OdometerReading = 400, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,2,15), OdometerReading = 500, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); var entry = new FillupEntry { EntryDate = new DateTime(2009,12,20), OdometerReading = 50, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }; vehicle.InsertEntry(entry); Assert.IsTrue(vehicle.Entries.IndexOf(entry) == 0); entry = new FillupEntry { EntryDate = new DateTime(2010,2,28), OdometerReading = 600, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }; vehicle.InsertEntry(entry); Assert.IsTrue(vehicle.Entries.IndexOf(entry) == vehicle.Entries.Count - 1); entry = new FillupEntry { EntryDate = new DateTime(2009,12,25), OdometerReading = 75, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }; vehicle.InsertEntry(entry); Assert.IsTrue(vehicle.Entries.IndexOf(entry) == 1); }
public void TestInsertEntryOdometerLessThanEarlierDate() { var vehicle = new Vehicle {OdometerUnit = UnitOfMeasure.DefaultDistanceUnit}; vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,1,1), OdometerReading = 100, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,1,15), OdometerReading = 200, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,1,30), OdometerReading = 300, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,2,1), OdometerReading = 400, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); vehicle.Entries.Add(new FillupEntry { EntryDate = new DateTime(2010,2,15), OdometerReading = 500, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }); var entry = new FillupEntry { EntryDate = new DateTime(2010,1,20), OdometerReading = 50, FillAmount = 10, OdometerUnit = vehicle.OdometerUnit }; vehicle.InsertEntry(entry); }
public void TestDeleteEntryNotAssociatedWithVehicle() { var vehicle = new Vehicle {VehicleName = "test vehicle"}; Vehicle.Save(vehicle); var entry = new FillupEntry { EntryDate = DateTime.Now, FillAmount = 13.564, OdometerReading = 100215, PricePerUnit = 2.899 }; vehicle.SaveEntry(entry); vehicle.DeleteFillupEntry(entry); }
public void TestUpdateEntryThrowsArgumentExceptionEntryMustBelongToVehicle() { var vehicle = new Vehicle { VehicleName = "test vehicle" }; Vehicle.Save(vehicle); var entry = new FillupEntry { EntryDate = DateTime.Now, FillAmount = 13.564, OdometerReading = 100215, PricePerUnit = 2.899 }; var originalTicks = entry.EntryDate.Ticks; vehicle.SaveEntry(entry); entry.OdometerReading = 100210; vehicle.UpdateExistingEntry(entry, originalTicks); }
public void TestNotEnoughSampleDataTwoEntriesWasNotToppedOff() { var vehicle = new Vehicle {OdometerUnit = UnitOfMeasure.DefaultDistanceUnit}; var entry1 = new FillupEntry { OdometerReading = 100, FillAmount = 14.436, PricePerUnit = 2.799, PumpUnit = UnitOfMeasure.Volume.Liter, EntryDate = new DateTime(2010,10,1) }; var entry2 = new FillupEntry { OdometerReading = 200, FillAmount = 14.436, PricePerUnit = 2.799, PumpUnit = UnitOfMeasure.Volume.Liter, EntryDate = new DateTime(2010,10,08), WasNotToppedOff = true }; vehicle.Entries.Add(entry1); vehicle.Entries.Add(entry2); vehicle.CalculateEfficiency(entry2, entry1, UnitOfMeasure.DefaultDistanceUnit, UnitOfMeasure.DefaultVolumeUnit); }
protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); if (!_isNewInstance) return; string mode; string vehicleIdString; NavigationContext.QueryString.TryGetValue("mode", out mode); NavigationContext.QueryString.TryGetValue("vehicleId", out vehicleIdString); int vehicleId = int.Parse(vehicleIdString); var entryMode = (Mode) (Enum.Parse(typeof (Mode), mode, true)); var viewModel = new AddOrEditFillupEntryViewModel {Vehicle = App.VehicleStore[vehicleId], Mode = entryMode}; switch (entryMode) { case Mode.New: viewModel.FillupEntry = new FillupEntry { EntryDate = DateTime.Now, PumpUnit = UnitOfMeasure.DefaultVolumeUnit, OdometerUnit = viewModel.Vehicle.OdometerUnit, }; break; case Mode.Edit: string entryTicksString; NavigationContext.QueryString.TryGetValue("entryTicks", out entryTicksString); long entryTicks = long.Parse(entryTicksString); viewModel.OriginalEntryTicks = entryTicks; _originalEntry = viewModel.Vehicle.Entries .Where(entry => entry.EntryDate.Ticks == entryTicks) .Single(); viewModel.FillupEntry = FillupEntry.Clone(_originalEntry); break; case Mode.Insert: string fromDateString; string toDateString; NavigationContext.QueryString.TryGetValue("fromDate", out fromDateString); NavigationContext.QueryString.TryGetValue("toDate", out toDateString); var fromDate = new DateTime(long.Parse(fromDateString)); var toDate = new DateTime(long.Parse(toDateString)); viewModel.InsertDateFrom = fromDate; viewModel.InsertDateTo = toDate; viewModel.FillupEntry = new FillupEntry { PumpUnit = UnitOfMeasure.DefaultVolumeUnit, OdometerUnit = viewModel.Vehicle.OdometerUnit, EntryDate = DateTime.Today }; break; default: throw new Exception("We should never get here."); } DataContext = viewModel; //restore previous state if (!State.ContainsKey("StatePreserved")) return; StateUtils.RestoreState(State, TxtFillAmount, String.Empty); StateUtils.RestoreState(State, TxtOdometerReading, String.Empty); StateUtils.RestoreState(State, TxtPricePerUnit, String.Empty); StateUtils.RestoreState(State, EntryDatePicker, DateTime.Now); StateUtils.RestoreState(State, chkNotToppedOff, false); StateUtils.RestoreState(State, chkMissedPreviousEntry, false); }
public bool Equals(FillupEntry other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return other.EntryDate.Equals(EntryDate); }
public static FillupEntry Clone(FillupEntry entry) { return (FillupEntry)entry.MemberwiseClone(); }