Keep observer composition storage proportional to selected callbacks
This commit is contained in:
@@ -31,6 +31,31 @@ func TestComposeObserversCopiesAndOrders(t *testing.T) {
|
||||
promptkit.ComposeObservers(func(promptkit.ExecutionEvent) { panic("panic") }, second)(promptkit.ExecutionEvent{})
|
||||
}
|
||||
|
||||
func TestComposeObserversSparseSelection(t *testing.T) {
|
||||
for _, selected := range []int{0, 1, 2} {
|
||||
calls := 0
|
||||
observers := make([]promptkit.ExecutionObserver, 1024)
|
||||
callback := func(promptkit.ExecutionEvent) { calls++ }
|
||||
for index := 0; index < selected; index++ {
|
||||
observers[len(observers)-1-index] = callback
|
||||
}
|
||||
composed := promptkit.ComposeObservers(observers...)
|
||||
for index := range observers {
|
||||
observers[index] = func(promptkit.ExecutionEvent) { calls += 100 }
|
||||
}
|
||||
if selected == 0 {
|
||||
if composed != nil {
|
||||
t.Fatal("all-nil composition must be nil")
|
||||
}
|
||||
continue
|
||||
}
|
||||
composed(promptkit.ExecutionEvent{})
|
||||
if calls != selected {
|
||||
t.Fatalf("selected %d callbacks, got %d calls", selected, calls)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCoordinateObserverCompositionAndNestedSelection(t *testing.T) {
|
||||
engine := newSimpleEngine(t, "question", promptkit.WithLLMClient(&fakeLLMClient{response: &promptkit.GenerateResponse{Content: "answer"}}))
|
||||
ctx := context.Background()
|
||||
|
||||
Reference in New Issue
Block a user