fn test_chat_stream_usage()

in router/src/chat.rs [388:454]


    fn test_chat_stream_usage() {
        let mut chat_state = ChatState::new(
            false,
            StreamOptions {
                include_usage: true,
            },
            "fingerprint".to_string(),
            "model_id".to_string(),
            false,
            "0".to_string(),
        );

        let events = chat_state.push(StreamResponse {
            generated_text: None,
            token: Token {
                id: 42,
                text: "Hi".to_string(),
                logprob: 0.0,
                special: false,
            },
            top_tokens: vec![],
            index: 0,
            details: Some(StreamDetails {
                input_length: 2,
                generated_tokens: 10,
                seed: None,
                finish_reason: FinishReason::Length,
            }),
        });
        if let ChatEvent::Events(events) = events {
            assert_eq!(events.len(), 2);
            match &events[0] {
                CompletionType::ChatCompletionChunk(ChatCompletionChunk { choices, .. }) => {
                    assert_eq!(
                        choices,
                        &[ChatCompletionChoice {
                            index: 0,
                            delta: ChatCompletionDelta::Chat(TextMessage {
                                role: "assistant".to_string(),
                                content: "Hi".to_string(),
                                tool_call_id: None,
                            }),
                            logprobs: None,
                            // HAS A FINISH REASON
                            finish_reason: Some("length".to_string()),
                        }]
                    );
                }
                _ => panic!("Unexpected chunk"),
            }
            match &events[1] {
                CompletionType::ChatCompletionChunk(ChatCompletionChunk { usage, .. }) => {
                    assert_eq!(
                        *usage,
                        Some(Usage {
                            prompt_tokens: 2,
                            completion_tokens: 10,
                            total_tokens: 12,
                        })
                    );
                }
                _ => panic!("Unexpected chunk"),
            }
        } else {
            panic!("Expected chat events");
        }
    }