package com.racingapp.pitlog.model import com.racingapp.pitlog.data.SetupSheet import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test class SetupLogTest { @Test fun diffsOnlyTheFieldsThatMoved() { val original = SetupSheet( recordedAt = 1L, springRf = 1000, toeFront = 0.125, swayBarHole = 4, ) val later = original.copy( springRf = 1050, toeFront = 0.063, swayBarHole = 3, ) assertEquals( listOf( "RF spring 1000 lb → 1050 lb", "Sway bar Setting 4 → Setting 3", "Front toe 1/8 in → 1/16 in", ), setupDiffs(original, later), ) } @Test fun anUnchangedSheetHasNoDiff() { val sheet = SetupSheet(recordedAt = 1L, springLf = 950, camberRf = -7.0) assertTrue(setupDiffs(sheet, sheet.copy(note = "perch tweak")).isEmpty()) } @Test fun deepSetupShowsWeightsHeightPinionAndBrake() { val original = SetupSheet( recordedAt = 1L, weightLf = 800, weightRf = 760, weightLr = 740, weightRr = 700, rideHeight = 5.0, pinion = -2.0, brakeFront = 62.0, ) val later = original.copy( weightLf = 820, rideHeight = 5.2, pinion = -1.5, brakeFront = 65.0, ) assertEquals( listOf( "Weights LF 800 RF 760 LR 740 RR 700 lb", "Total 3000 lb", "Left 1540 lb, 51.3%", "Front 1560 lb, 52%", "Rear 1440 lb, 48%", "Cross 1500 lb, 50%", "Rear bite 40", "Ride height 5 in", "Pinion -2.0°", "Front brake 62%", ), setupLines(original), ) assertEquals( listOf( "LF weight 800 lb → 820 lb", "Total 3000 lb → 3020 lb", "Left 1540 lb, 51.3% → 1560 lb, 51.7%", "Front 1560 lb, 52% → 1580 lb, 52.3%", "Rear 1440 lb, 48% → 1440 lb, 47.7%", "Cross 1500 lb, 50% → 1500 lb, 49.7%", "Ride height 5 in → 5.2 in", "Pinion -2.0° → -1.5°", "Front brake 62% → 65%", ), setupDiffs(original, later), ) } @Test fun originalLinesSkipBlankFields() { val lines = setupLines(SetupSheet(recordedAt = 1L, crossPercent = 53.5, blockLr = 2.0)) assertEquals(listOf("Cross 53.5%", "LR block 2 in"), lines) } }