| 187 | } |
| 188 | |
| 189 | func TestChainToJSON(t *testing.T) { |
| 190 | chain := NewChain(ChainConfig{ |
| 191 | MinSteps: 2, |
| 192 | MaxSteps: 5, |
| 193 | }) |
| 194 | |
| 195 | if err := chain.AddStep(Step{ |
| 196 | Title: "Test Step", |
| 197 | Confidence: 0.9, |
| 198 | }); err != nil { |
| 199 | t.Fatalf("AddStep failed: %v", err) |
| 200 | } |
| 201 | |
| 202 | jsonStr, err := chain.ToJSON() |
| 203 | if err != nil { |
| 204 | t.Fatalf("ToJSON failed: %v", err) |
| 205 | } |
| 206 | |
| 207 | if jsonStr == "" { |
| 208 | t.Error("JSON string should not be empty") |
| 209 | } |
| 210 | |
| 211 | // 尝试解析回来 |
| 212 | parsed, err := FromJSON(jsonStr) |
| 213 | if err != nil { |
| 214 | t.Fatalf("FromJSON failed: %v", err) |
| 215 | } |
| 216 | |
| 217 | if len(parsed.Steps) != 1 { |
| 218 | t.Errorf("expected 1 step after parsing, got %d", len(parsed.Steps)) |
| 219 | } |
| 220 | } |
| 221 | |
| 222 | func TestUpdateStep(t *testing.T) { |
| 223 | chain := NewChain(ChainConfig{MaxSteps: 5}) |