ananke/internal/ups/nut_test.go

38 lines
964 B
Go
Raw Normal View History

package ups
import "testing"
// TestParseNUT runs one orchestration or CLI step.
// Signature: TestParseNUT(t *testing.T).
// Why: keeps behavior explicit so startup/shutdown workflows remain maintainable as services evolve.
func TestParseNUT(t *testing.T) {
raw := `battery.runtime: 384
battery.charge: 72
ups.load: 19
ups.realpower.nominal: 510
ups.status: OB LB
`
s, err := parseNUT(raw)
if err != nil {
t.Fatalf("parseNUT returned error: %v", err)
}
if !s.OnBattery {
t.Fatalf("expected OnBattery=true")
}
if !s.LowBattery {
t.Fatalf("expected LowBattery=true")
}
if s.RuntimeSeconds != 384 {
t.Fatalf("expected runtime 384, got %d", s.RuntimeSeconds)
}
if s.BatteryCharge != 72 {
t.Fatalf("expected battery charge 72, got %.2f", s.BatteryCharge)
}
if s.LoadPercent != 19 {
t.Fatalf("expected load 19, got %.2f", s.LoadPercent)
}
if s.NominalPowerW != 510 {
t.Fatalf("expected nominal power 510, got %.2f", s.NominalPowerW)
}
}