//go:build windows package client import "testing" func TestJSONBoolHelpers(t *testing.T) { m := map[string]interface{}{ "b": true, "s": "true", "n": "1", "x": "false", } if v := jsonBool(m, "b"); v == nil || !*v { t.Fatal("bool true") } if v := jsonBool(m, "s"); v == nil || !*v { t.Fatal("string true") } if v := jsonBool(m, "n"); v == nil || !*v { t.Fatal("numeric string true") } if v := jsonBool(m, "x"); v == nil || *v { t.Fatal("string false") } if jsonBool(m, "missing") != nil { t.Fatal("missing key") } } func TestJSONIntHelpers(t *testing.T) { m := map[string]interface{}{ "f": float64(42), "i": 7, "s": "99", "b": "nope", } if v := jsonInt(m, "f"); v == nil || *v != 42 { t.Fatalf("float64: %v", v) } if v := jsonInt(m, "i"); v == nil || *v != 7 { t.Fatalf("int: %v", v) } if v := jsonInt(m, "s"); v == nil || *v != 99 { t.Fatalf("string int: %v", v) } if jsonInt(m, "b") != nil { t.Fatal("invalid string int") } } func TestJSONStringHelpers(t *testing.T) { m := map[string]interface{}{"ok": "value", "empty": ""} if v := jsonString(m, "ok"); v == nil || *v != "value" { t.Fatalf("string: %v", v) } if jsonString(m, "empty") != nil { t.Fatal("empty string omitted") } } func TestJSONStringSliceHelpers(t *testing.T) { m := map[string]interface{}{ "one": "defender", "multi": []interface{}{"a", "", "b"}, } if got := jsonStringSlice(m, "one"); len(got) != 1 || got[0] != "defender" { t.Fatalf("single: %v", got) } if got := jsonStringSlice(m, "multi"); len(got) != 2 || got[0] != "a" || got[1] != "b" { t.Fatalf("multi: %v", got) } } func TestJSONServiceSlice(t *testing.T) { m := map[string]interface{}{ "services": []interface{}{ map[string]interface{}{ "name": "WinDefend", "status": "running", "start_type": "auto", }, }, } svcs := jsonServiceSlice(m, "services") if len(svcs) != 1 || svcs[0].Name != "WinDefend" || svcs[0].Status != "running" { t.Fatalf("services: %+v", svcs) } }