1 extern crate rand; 2 extern crate ropey; 3 4 use std::io::Cursor; 5 6 use ropey::Rope; 7 8 const TEXT: &str = include_str!("test_text.txt"); 9 10 #[test] from_reader_01()11fn from_reader_01() { 12 // Make a reader from our in-memory text 13 let text_reader = Cursor::new(TEXT); 14 15 let rope = Rope::from_reader(text_reader).unwrap(); 16 17 assert_eq!(rope, TEXT); 18 19 // Make sure the tree is sound 20 rope.assert_integrity(); 21 rope.assert_invariants(); 22 } 23 24 #[test] from_reader_02()25fn from_reader_02() { 26 // Make a reader from blank text 27 let text_reader = Cursor::new(""); 28 29 let rope = Rope::from_reader(text_reader).unwrap(); 30 31 assert_eq!(rope, ""); 32 33 // Make sure the tree is sound 34 rope.assert_integrity(); 35 rope.assert_invariants(); 36 } 37 38 #[test] from_reader_03()39fn from_reader_03() { 40 // Make text with a utf8-invalid byte sequence in it. 41 let mut text = Vec::new(); 42 text.extend(TEXT.as_bytes()); 43 text[6132] = 0b1100_0000; 44 text[6133] = 0b0100_0000; 45 46 // Make a reader from the invalid data 47 let text_reader = Cursor::new(text); 48 49 // Try to read the data, and verify that we get the right error. 50 if let Err(e) = Rope::from_reader(text_reader) { 51 assert_eq!(e.kind(), std::io::ErrorKind::InvalidData); 52 } else { 53 panic!("Should have returned an invalid data error.") 54 } 55 } 56