gio/
memory_input_stream.rs1#[cfg(test)]
6mod tests {
7 use glib::Bytes;
8 use *;
9
10 #[test]
11 fn new() {
12 let strm = MemoryInputStream::new();
13 let ret = strm.skip(1, ::NONE_CANCELLABLE);
14 assert!(!ret.is_err());
15 assert_eq!(ret.unwrap(), 0);
16
17 let mut buf = vec![0; 10];
18 let ret = strm.read(&mut buf, ::NONE_CANCELLABLE).unwrap();
19 assert_eq!(ret, 0);
20 }
21
22 #[test]
23 fn new_from_bytes() {
24 let b = Bytes::from_owned(vec![1, 2, 3]);
25 let strm = MemoryInputStream::new_from_bytes(&b);
26 let mut buf = vec![0; 10];
27 let ret = strm.read(&mut buf, ::NONE_CANCELLABLE).unwrap();
28 assert_eq!(ret, 3);
29 assert_eq!(buf[0], 1);
30 assert_eq!(buf[1], 2);
31 assert_eq!(buf[2], 3);
32
33 let ret = strm.skip(10, ::NONE_CANCELLABLE).unwrap();
34 assert_eq!(ret, 0);
35 }
36
37 #[test]
38 fn add_bytes() {
39 let strm = MemoryInputStream::new();
40 let b = Bytes::from_owned(vec![1, 2, 3]);
41 strm.add_bytes(&b);
42 let mut buf = vec![0; 10];
43 let ret = strm.read(&mut buf, ::NONE_CANCELLABLE).unwrap();
44 assert_eq!(ret, 3);
45 assert_eq!(buf[0], 1);
46 assert_eq!(buf[1], 2);
47 assert_eq!(buf[2], 3);
48
49 let ret = strm.skip(10, ::NONE_CANCELLABLE).unwrap();
50 assert_eq!(ret, 0);
51 }
52
53 #[test]
54 #[cfg(feature = "futures")]
55 fn read_async_future() {
56 use futures::prelude::*;
57
58 let c = glib::MainContext::new();
59
60 let buf = vec![0; 10];
61 let b = glib::Bytes::from_owned(vec![1, 2, 3]);
62 let strm = MemoryInputStream::new_from_bytes(&b);
63
64 let res = c
65 .block_on(
66 strm.read_async_future(buf, glib::PRIORITY_DEFAULT)
67 .map_err(|(_buf, err)| err)
68 .map_ok(move |(mut buf, len)| {
69 buf.truncate(len);
70 buf
71 }),
72 )
73 .unwrap();
74
75 assert_eq!(res, vec![1, 2, 3]);
76 }
77}