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()11 fn 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()25 fn 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()39 fn 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