use token_count::count_tokens;
#[test]
fn test_large_input_within_limit() {
let input = "word ".repeat(20_000);
let result = count_tokens(&input, "gpt-4", false, 0);
assert!(result.is_ok(), "Should handle 100KB input successfully");
let token_count = result.unwrap().token_count;
assert!(token_count > 0, "Should produce tokens for large input");
}
#[test]
fn test_500kb_varied_input() {
let base_text = "The quick brown fox jumps over the lazy dog. ";
let repetitions = 500_000 / base_text.len();
let input = base_text.repeat(repetitions);
let result = count_tokens(&input, "gpt-4", false, 0);
assert!(result.is_ok(), "Should handle 500KB of varied text without stack overflow");
}
#[test]
fn test_medium_varied_input() {
let base_text = "The quick brown fox jumps over the lazy dog. ";
let repetitions = 50_000 / base_text.len();
let input = base_text.repeat(repetitions);
let result = count_tokens(&input, "gpt-4", false, 0);
assert!(result.is_ok(), "Should handle 50KB of varied text");
}
#[test]
fn test_large_unicode_input() {
let emoji_text = "Hello 👋 World 🌍 ";
let repetitions = 10_000 / emoji_text.len();
let input = emoji_text.repeat(repetitions);
let result = count_tokens(&input, "gpt-4", false, 0);
assert!(result.is_ok(), "Should handle large Unicode input");
}
#[test]
#[ignore]
fn test_near_max_input_size() {
let base_text = "Lorem ipsum dolor sit amet. ";
let repetitions = (50 * 1024 * 1024) / base_text.len();
let input = base_text.repeat(repetitions);
let result = count_tokens(&input, "gpt-4", false, 0);
assert!(result.is_ok(), "Should handle 50MB input (half of 100MB limit)");
}
#[test]
fn test_multiple_medium_inputs() {
for _ in 0..5 {
let input = "Test input. ".repeat(10_000);
let result = count_tokens(&input, "gpt-4", false, 0);
assert!(result.is_ok(), "Should handle multiple sequential large inputs");
}
}
#[test]
fn test_large_input_across_models() {
let input = "word ".repeat(20_000);
let models = vec!["gpt-3.5-turbo", "gpt-4", "gpt-4o"];
for model in models {
let result = count_tokens(&input, model, false, 0);
assert!(result.is_ok(), "Model {} should handle 100KB input", model);
}
}