package schema import ( "encoding/json" "os" "testing" "agent-squad/squad" ) func TestSamplesRoundTrip(t *testing.T) { var role squad.RoleSpec mustRoundTrip(t, "role.sample.json", &role) if role.Role != "writer" || role.Name != "写作者" { t.Fatalf("%+v", role) } var bp squad.Blueprint mustRoundTrip(t, "blueprint.sample.json", &bp) if bp.Key != "demo" || len(bp.Steps) != 1 { t.Fatalf("%+v", bp) } var plan squad.WorkflowPlan mustRoundTrip(t, "workflow-plan.sample.json", &plan) if plan.WorkflowID != "wf-1" || plan.Status != "pending" { t.Fatalf("%+v", plan) } } func mustRoundTrip(t *testing.T, name string, dest any) { t.Helper() raw, err := os.ReadFile(name) if err != nil { t.Fatal(err) } if err := json.Unmarshal(raw, dest); err != nil { t.Fatal(err) } back, err := json.Marshal(dest) if err != nil { t.Fatal(err) } again := reflectNew(dest) if err := json.Unmarshal(back, again); err != nil { t.Fatal(err) } } func reflectNew(v any) any { switch v.(type) { case *squad.RoleSpec: return &squad.RoleSpec{} case *squad.Blueprint: return &squad.Blueprint{} case *squad.WorkflowPlan: return &squad.WorkflowPlan{} default: panic("unknown sample") } }