package protocol import ( "encoding/base64" "testing" ) func TestPack_DeployCmd_EnCodeCmd_DeCode(t *testing.T) { var obj Pack_DeployCmd str, err := obj.EnCodeCmd("gid1", "gid1", 100, "1.5.0", "ipole", "abc123def", 320, 65536) if err != nil { t.Fatalf("EnCodeCmd failed: %v", err) } if str == "" { t.Fatal("EnCodeCmd returned empty string") } var obj2 Pack_DeployCmd if err := obj2.DeCode(str); err != nil { t.Fatalf("DeCode failed: %v", err) } if obj2.Data.Version != "1.5.0" { t.Errorf("Version mismatch: got %s, want 1.5.0", obj2.Data.Version) } if obj2.Data.Action != "start" { t.Errorf("Action mismatch: got %s, want start", obj2.Data.Action) } if obj2.Data.TotalChunks != 320 { t.Errorf("TotalChunks mismatch: got %d, want 320", obj2.Data.TotalChunks) } } func TestPack_DeployCmd_EnCodeChunk_DeCode(t *testing.T) { var obj Pack_DeployCmd testData := base64.StdEncoding.EncodeToString([]byte("hello world test chunk data")) str, err := obj.EnCodeChunk("gid1", "gid1", 101, "1.5.0", 5, testData) if err != nil { t.Fatalf("EnCodeChunk failed: %v", err) } var obj2 Pack_DeployCmd if err := obj2.DeCode(str); err != nil { t.Fatalf("DeCode failed: %v", err) } if obj2.Data.ChunkIndex != 5 { t.Errorf("ChunkIndex mismatch: got %d, want 5", obj2.Data.ChunkIndex) } if obj2.Data.Action != "chunk" { t.Errorf("Action mismatch: got %s, want chunk", obj2.Data.Action) } } func TestPack_DeployAck_EnCode_DeCode(t *testing.T) { var obj Pack_DeployAck str, err := obj.EnCode("gid1", "gid1", 200, "1.5.0", true, "") if err != nil { t.Fatalf("EnCode failed: %v", err) } var obj2 Pack_DeployAck if err := obj2.DeCode(str); err != nil { t.Fatalf("DeCode failed: %v", err) } if !obj2.Data.Success { t.Error("Expected Success=true") } } func TestPack_HealthCheck_EnCode_DeCode(t *testing.T) { var obj Pack_HealthCheck checks := []HealthCheck{ {Name: "mqtt", Status: "ok", Detail: "connected", DurationMs: 150}, {Name: "redis", Status: "ok", Detail: "PING ok", DurationMs: 10}, } str, err := obj.EnCode("gid1", "gid1", 300, "1.5.0", 1, true, checks) if err != nil { t.Fatalf("EnCode failed: %v", err) } var obj2 Pack_HealthCheck if err := obj2.DeCode(str); err != nil { t.Fatalf("DeCode failed: %v", err) } if obj2.Data.Phase != 1 { t.Errorf("Phase mismatch: got %d, want 1", obj2.Data.Phase) } if len(obj2.Data.Checks) != 2 { t.Errorf("Checks count: got %d, want 2", len(obj2.Data.Checks)) } }