1
0
mirror of https://github.com/tw93/Mole.git synced 2026-03-23 17:35:10 +00:00

fix(status): improve disk card display refs #551

This commit is contained in:
tw93
2026-03-08 23:46:46 +08:00
parent 24da1e2ac1
commit 8c53923ce8
4 changed files with 203 additions and 28 deletions

View File

@@ -749,29 +749,52 @@ func TestMiniBar(t *testing.T) {
func TestFormatDiskLine(t *testing.T) {
tests := []struct {
name string
label string
disk DiskStatus
name string
label string
disk DiskStatus
wantUsed string
wantFree string
wantNoSubstr string
}{
{
name: "empty label defaults to DISK",
label: "",
disk: DiskStatus{UsedPercent: 50.5, Used: 100 << 30, Total: 200 << 30},
name: "empty label defaults to DISK",
label: "",
disk: DiskStatus{UsedPercent: 50.5, Used: 100 << 30, Total: 200 << 30},
wantUsed: "100G used",
wantFree: "100G free",
wantNoSubstr: "%",
},
{
name: "internal disk",
label: "INTR",
disk: DiskStatus{UsedPercent: 67.2, Used: 336 << 30, Total: 500 << 30},
name: "internal disk",
label: "INTR",
disk: DiskStatus{UsedPercent: 67.2, Used: 336 << 30, Total: 500 << 30},
wantUsed: "336G used",
wantFree: "164G free",
wantNoSubstr: "%",
},
{
name: "external disk",
label: "EXTR1",
disk: DiskStatus{UsedPercent: 85.0, Used: 850 << 30, Total: 1000 << 30},
name: "external disk",
label: "EXTR1",
disk: DiskStatus{UsedPercent: 85.0, Used: 850 << 30, Total: 1000 << 30},
wantUsed: "850G used",
wantFree: "150G free",
wantNoSubstr: "%",
},
{
name: "low usage",
label: "INTR",
disk: DiskStatus{UsedPercent: 15.3, Used: 15 << 30, Total: 100 << 30},
name: "low usage",
label: "INTR",
disk: DiskStatus{UsedPercent: 15.3, Used: 15 << 30, Total: 100 << 30},
wantUsed: "15G used",
wantFree: "85G free",
wantNoSubstr: "%",
},
{
name: "used exceeds total clamps free to zero",
label: "INTR",
disk: DiskStatus{UsedPercent: 110.0, Used: 110 << 30, Total: 100 << 30},
wantUsed: "110G used",
wantFree: "0 free",
wantNoSubstr: "%",
},
}
@@ -789,10 +812,54 @@ func TestFormatDiskLine(t *testing.T) {
if !contains(got, expectedLabel) {
t.Errorf("formatDiskLine(%q, ...) = %q, should contain label %q", tt.label, got, expectedLabel)
}
if !contains(got, tt.wantUsed) {
t.Errorf("formatDiskLine(%q, ...) = %q, should contain used value %q", tt.label, got, tt.wantUsed)
}
if !contains(got, tt.wantFree) {
t.Errorf("formatDiskLine(%q, ...) = %q, should contain free value %q", tt.label, got, tt.wantFree)
}
if tt.wantNoSubstr != "" && contains(got, tt.wantNoSubstr) {
t.Errorf("formatDiskLine(%q, ...) = %q, should not contain %q", tt.label, got, tt.wantNoSubstr)
}
})
}
}
func TestRenderDiskCardAddsMetaLineForSingleDisk(t *testing.T) {
card := renderDiskCard([]DiskStatus{{
UsedPercent: 28.4,
Used: 263 << 30,
Total: 926 << 30,
Fstype: "apfs",
}}, DiskIOStatus{ReadRate: 0, WriteRate: 0.1})
if len(card.lines) != 4 {
t.Fatalf("renderDiskCard() single disk expected 4 lines, got %d", len(card.lines))
}
meta := stripANSI(card.lines[1])
if meta != "Total 926G · APFS" {
t.Fatalf("renderDiskCard() single disk meta line = %q, want %q", meta, "Total 926G · APFS")
}
}
func TestRenderDiskCardDoesNotAddMetaLineForMultipleDisks(t *testing.T) {
card := renderDiskCard([]DiskStatus{
{UsedPercent: 28.4, Used: 263 << 30, Total: 926 << 30, Fstype: "apfs"},
{UsedPercent: 50.0, Used: 500 << 30, Total: 1000 << 30, Fstype: "apfs"},
}, DiskIOStatus{})
if len(card.lines) != 4 {
t.Fatalf("renderDiskCard() multiple disks expected 4 lines, got %d", len(card.lines))
}
for _, line := range card.lines {
if stripANSI(line) == "Total 926G · APFS" || stripANSI(line) == "Total 1000G · APFS" {
t.Fatalf("renderDiskCard() multiple disks should not add meta line, got %q", line)
}
}
}
func TestGetScoreStyle(t *testing.T) {
tests := []struct {
name string