Skip to content

Commit b35f19e

Browse files
authored
test(test_backend): add tests for TestBackend coverage (#434)
These are mostly to catch any future bugs introduced in the test backend
1 parent ad3413e commit b35f19e

File tree

1 file changed

+132
-0
lines changed

1 file changed

+132
-0
lines changed

src/backend/test.rs

+132
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,135 @@ impl Backend for TestBackend {
183183
Ok(())
184184
}
185185
}
186+
187+
#[cfg(test)]
188+
mod tests {
189+
use super::*;
190+
191+
#[test]
192+
fn new() {
193+
assert_eq!(
194+
TestBackend::new(10, 2),
195+
TestBackend {
196+
width: 10,
197+
height: 2,
198+
buffer: Buffer::with_lines(vec![" "; 2]),
199+
cursor: false,
200+
pos: (0, 0),
201+
}
202+
);
203+
}
204+
#[test]
205+
fn test_buffer_view() {
206+
let buffer = Buffer::with_lines(vec!["aaaa"; 2]);
207+
assert_eq!(buffer_view(&buffer), "\"aaaa\"\n\"aaaa\"\n");
208+
}
209+
210+
#[test]
211+
fn buffer_view_with_overwrites() {
212+
let multi_byte_char = "👨‍👩‍👧‍👦"; // renders 8 wide
213+
let buffer = Buffer::with_lines(vec![multi_byte_char]);
214+
assert_eq!(
215+
buffer_view(&buffer),
216+
format!(
217+
r#""{multi_byte_char}" Hidden by multi-width symbols: [(1, " "), (2, " "), (3, " "), (4, " "), (5, " "), (6, " "), (7, " ")]
218+
"#,
219+
multi_byte_char = multi_byte_char
220+
)
221+
);
222+
}
223+
224+
#[test]
225+
fn buffer() {
226+
let backend = TestBackend::new(10, 2);
227+
assert_eq!(backend.buffer(), &Buffer::with_lines(vec![" "; 2]));
228+
}
229+
230+
#[test]
231+
fn resize() {
232+
let mut backend = TestBackend::new(10, 2);
233+
backend.resize(5, 5);
234+
assert_eq!(backend.buffer(), &Buffer::with_lines(vec![" "; 5]));
235+
}
236+
237+
#[test]
238+
fn assert_buffer() {
239+
let backend = TestBackend::new(10, 2);
240+
let buffer = Buffer::with_lines(vec![" "; 2]);
241+
backend.assert_buffer(&buffer);
242+
}
243+
244+
#[test]
245+
#[should_panic]
246+
fn assert_buffer_panics() {
247+
let backend = TestBackend::new(10, 2);
248+
let buffer = Buffer::with_lines(vec!["aaaaaaaaaa"; 2]);
249+
backend.assert_buffer(&buffer);
250+
}
251+
252+
#[test]
253+
fn display() {
254+
let backend = TestBackend::new(10, 2);
255+
assert_eq!(format!("{}", backend), "\" \"\n\" \"\n");
256+
}
257+
258+
#[test]
259+
fn draw() {
260+
let mut backend = TestBackend::new(10, 2);
261+
let mut cell = Cell::default();
262+
cell.set_symbol("a");
263+
backend.draw([(0, 0, &cell)].into_iter()).unwrap();
264+
backend.draw([(0, 1, &cell)].into_iter()).unwrap();
265+
backend.assert_buffer(&Buffer::with_lines(vec!["a "; 2]));
266+
}
267+
268+
#[test]
269+
fn hide_cursor() {
270+
let mut backend = TestBackend::new(10, 2);
271+
backend.hide_cursor().unwrap();
272+
assert!(!backend.cursor);
273+
}
274+
275+
#[test]
276+
fn show_cursor() {
277+
let mut backend = TestBackend::new(10, 2);
278+
backend.show_cursor().unwrap();
279+
assert!(backend.cursor);
280+
}
281+
282+
#[test]
283+
fn get_cursor() {
284+
let mut backend = TestBackend::new(10, 2);
285+
assert_eq!(backend.get_cursor().unwrap(), (0, 0));
286+
}
287+
288+
#[test]
289+
fn set_cursor() {
290+
let mut backend = TestBackend::new(10, 10);
291+
backend.set_cursor(5, 5).unwrap();
292+
assert_eq!(backend.pos, (5, 5));
293+
}
294+
295+
#[test]
296+
fn clear() {
297+
let mut backend = TestBackend::new(10, 2);
298+
let mut cell = Cell::default();
299+
cell.set_symbol("a");
300+
backend.draw([(0, 0, &cell)].into_iter()).unwrap();
301+
backend.draw([(0, 1, &cell)].into_iter()).unwrap();
302+
backend.clear().unwrap();
303+
backend.assert_buffer(&Buffer::with_lines(vec![" "; 2]));
304+
}
305+
306+
#[test]
307+
fn size() {
308+
let backend = TestBackend::new(10, 2);
309+
assert_eq!(backend.size().unwrap(), Rect::new(0, 0, 10, 2));
310+
}
311+
312+
#[test]
313+
fn flush() {
314+
let mut backend = TestBackend::new(10, 2);
315+
backend.flush().unwrap();
316+
}
317+
}

0 commit comments

Comments
 (0)