package widgetparse import ( "testing" "codeberg.org/SquidSE/ClusterCanvas/service/internal/settings" ) func TestParseFreeM(t *testing.T) { stdout := ` total used free shared buff/cache available Mem: 16014 4521 2341 412 9151 11012 Swap: 8191 0 8191 ` data, err := ParseFreeM(stdout) if err != nil { t.Fatalf("ParseFreeM: %v", err) } if data.Total != 16014 || data.Used != 4521 || data.Free != 2341 { t.Fatalf("core fields = %+v", data) } if data.Shared != 412 || data.BuffCache != 9151 || data.Available != 11012 { t.Fatalf("extra fields = %+v", data) } } func TestParseDfHPrefersMount(t *testing.T) { stdout := `Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 40G 55G 42% / /dev/sdb1 200G 10G 180G 6% /data ` data, err := ParseDfH(stdout, "/data") if err != nil { t.Fatalf("ParseDfH: %v", err) } if data.MountedOn != "/data" || data.Size != "200G" || data.Used != "10G" { t.Fatalf("row = %+v", data) } if data.SizeMiB != 200*1024 || data.UsedMiB != 10*1024 { t.Fatalf("mib = %+v", data) } } func TestParseDfHFirstRow(t *testing.T) { stdout := `Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 0 1.6G 0% /run /dev/sda1 100G 40G 55G 42% / ` data, err := ParseDfH(stdout, "") if err != nil { t.Fatalf("ParseDfH: %v", err) } if data.MountedOn != "/run" { t.Fatalf("expected first row, got %+v", data) } } func TestParseStdoutMemory(t *testing.T) { stdout := "Mem: 100 40 20 1 39 50\n" memory, disk, err := ParseStdout(settings.ActionWidgetTypeMemory, stdout, "") if err != nil { t.Fatalf("ParseStdout: %v", err) } if memory == nil || disk != nil || memory.Total != 100 { t.Fatalf("memory=%v disk=%v", memory, disk) } }