use ass_editor::{EditorDocument, Position};
#[test]
fn test_document_size_limits() {
let sizes = vec![
1_000_000, 10_000_000, ];
for size in sizes {
let content = "X".repeat(size);
let result = EditorDocument::from_content(&content);
if let Ok(mut doc) = result {
assert_eq!(doc.len_bytes(), size);
let double_result = doc.insert(Position::new(0), &content);
if double_result.is_ok() {
assert_eq!(doc.len_bytes(), size * 2);
}
}
}
}
#[test]
fn test_undo_stack_memory_pressure() {
let mut doc = EditorDocument::new();
for i in 0..10000 {
doc.insert(Position::new(0), &i.to_string()).unwrap();
}
let mut undo_count = 0;
while doc.undo().is_ok() && undo_count < 5000 {
undo_count += 1;
}
let large_text = "X".repeat(1_000_000);
let result = doc.insert(Position::new(0), &large_text);
if result.is_ok() {
assert!(doc.redo().is_err());
}
}