use tiktoken_stream::TokenStream;
#[test]
fn empty_stream_is_zero() {
let s = TokenStream::new();
assert_eq!(s.count(), 0);
assert_eq!(s.chars(), 0);
}
#[test]
fn default_estimator_accumulates() {
let mut s = TokenStream::new();
s.push("Hello, "); s.push("world!"); assert_eq!(s.count(), 4);
assert_eq!(s.chars(), 13);
}
#[test]
fn custom_estimator_word_count() {
let mut s = TokenStream::with_estimator(|c: &str| c.split_whitespace().count() as u64);
s.push("the quick brown");
s.push(" fox jumps over");
s.push(" the lazy dog");
assert_eq!(s.count(), 9);
}
#[test]
fn push_returns_new_count() {
let mut s = TokenStream::with_estimator(|c: &str| c.split_whitespace().count() as u64);
assert_eq!(s.push("a b"), 2);
assert_eq!(s.push(" c d e"), 5);
}
#[test]
fn reset_clears_counts_keeps_estimator() {
let mut s = TokenStream::with_estimator(|c: &str| c.split_whitespace().count() as u64);
s.push("a b c");
s.reset();
assert_eq!(s.count(), 0);
assert_eq!(s.chars(), 0);
s.push("x y");
assert_eq!(s.count(), 2);
}