(t *testing.T)
| 211 | } |
| 212 | |
| 213 | func TestAdvisorRunLimitReached(t *testing.T) { |
| 214 | t.Parallel() |
| 215 | |
| 216 | var calls int |
| 217 | runtime, err := chatadvisor.NewRuntime(chatadvisor.RuntimeConfig{ |
| 218 | Model: &chattest.FakeModel{ |
| 219 | ProviderName: "test-provider", |
| 220 | ModelName: "test-model", |
| 221 | StreamFn: func(_ context.Context, _ fantasy.Call) (fantasy.StreamResponse, error) { |
| 222 | calls++ |
| 223 | return streamFromParts([]fantasy.StreamPart{ |
| 224 | {Type: fantasy.StreamPartTypeTextStart, ID: "text-1"}, |
| 225 | {Type: fantasy.StreamPartTypeTextDelta, ID: "text-1", Delta: "first answer"}, |
| 226 | {Type: fantasy.StreamPartTypeTextEnd, ID: "text-1"}, |
| 227 | {Type: fantasy.StreamPartTypeFinish, FinishReason: fantasy.FinishReasonStop}, |
| 228 | }), nil |
| 229 | }, |
| 230 | }, |
| 231 | MaxUsesPerRun: 1, |
| 232 | MaxOutputTokens: 64, |
| 233 | }) |
| 234 | require.NoError(t, err) |
| 235 | |
| 236 | first, err := runtime.RunAdvisor(t.Context(), "first?", nil, nil) |
| 237 | require.NoError(t, err) |
| 238 | require.Equal(t, chatadvisor.ResultTypeAdvice, first.Type) |
| 239 | require.Equal(t, 0, first.RemainingUses) |
| 240 | |
| 241 | second, err := runtime.RunAdvisor(t.Context(), "second?", nil, nil) |
| 242 | require.NoError(t, err) |
| 243 | require.Equal(t, chatadvisor.ResultTypeLimitReached, second.Type) |
| 244 | require.Equal(t, 0, second.RemainingUses) |
| 245 | require.Equal(t, 1, calls) |
| 246 | } |
| 247 | |
| 248 | func TestAdvisorRunError(t *testing.T) { |
| 249 | t.Parallel() |
nothing calls this directly
no test coverage detected