loop_inject_test.go
1 package agent 2 3 import ( 4 "testing" 5 ) 6 7 func TestAgentLoop_SetInjectCh(t *testing.T) { 8 reg := NewToolRegistry() 9 loop := NewAgentLoop(nil, reg, "test", t.TempDir(), 5, 2000, 200, nil, nil, nil) 10 ch := make(chan InjectedMessage, 10) 11 loop.SetInjectCh(ch) 12 if loop.injectCh != ch { 13 t.Fatal("expected injectCh to be set") 14 } 15 } 16 17 func TestAgentLoop_InjectCh_Nil_NoPanic(t *testing.T) { 18 reg := NewToolRegistry() 19 loop := NewAgentLoop(nil, reg, "test", t.TempDir(), 1, 2000, 200, nil, nil, nil) 20 // injectCh is nil by default — should not panic 21 if loop.injectCh != nil { 22 t.Fatal("expected injectCh to be nil by default") 23 } 24 } 25 26 func TestAgentLoop_MultipleInjections_Batched(t *testing.T) { 27 ch := make(chan InjectedMessage, 10) 28 ch <- InjectedMessage{Text: "message one"} 29 ch <- InjectedMessage{Text: "message two"} 30 ch <- InjectedMessage{Text: "message three"} 31 32 // Drain like the loop does 33 var injected []string 34 drain: 35 for { 36 select { 37 case msg := <-ch: 38 injected = append(injected, msg.Text) 39 default: 40 break drain 41 } 42 } 43 if len(injected) != 3 { 44 t.Fatalf("expected 3 messages, got %d", len(injected)) 45 } 46 if injected[0] != "message one" || injected[2] != "message three" { 47 t.Errorf("unexpected order: %v", injected) 48 } 49 }