37 lines
1.3 KiB
Go
37 lines
1.3 KiB
Go
package helicopter_usage
|
|
|
|
import "testing"
|
|
|
|
func f64(v float64) *float64 { return &v }
|
|
|
|
func TestApplyManualSummary_SeedBackComputed(t *testing.T) {
|
|
h := &HelicopterUsage{TotalAirframeHours: 5} // aggregated 5, manual 0
|
|
h.ApplyManualSummary(ManualSummaryInput{AirframeHours: f64(6000)})
|
|
if h.TotalAirframeHours != 6000 {
|
|
t.Fatalf("total = %v, want 6000", h.TotalAirframeHours)
|
|
}
|
|
if h.ManualAirframeHours != 5995 {
|
|
t.Fatalf("manual = %v, want 5995 (6000-5)", h.ManualAirframeHours)
|
|
}
|
|
}
|
|
|
|
func TestApplyManualSummary_NewFlightAccumulates(t *testing.T) {
|
|
h := &HelicopterUsage{TotalAirframeHours: 5}
|
|
h.ApplyManualSummary(ManualSummaryInput{AirframeHours: f64(6000)})
|
|
// a new +10h flight raises aggregated from 5 to 15; RefreshAll recomputes Total = aggregated + manual.
|
|
if got := 15.0 + h.ManualAirframeHours; got != 6010 {
|
|
t.Fatalf("post-flight total = %v, want 6010", got)
|
|
}
|
|
}
|
|
|
|
func TestApplyManualSummary_CccDirectAndNilUntouched(t *testing.T) {
|
|
h := &HelicopterUsage{TotalEngine1Ccc: 2, TotalLanding: 100}
|
|
h.ApplyManualSummary(ManualSummaryInput{Engine1Ccc: f64(44)})
|
|
if h.TotalEngine1Ccc != 44 {
|
|
t.Fatalf("ccc = %v, want 44", h.TotalEngine1Ccc)
|
|
}
|
|
if h.ManualEngine1GpcNgN1 != 0 || h.TotalLanding != 100 {
|
|
t.Fatal("nil inputs must leave fields untouched")
|
|
}
|
|
}
|