/ internal / agent / loop_inject_test.go
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  }