Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-tui/src/backend/test.rs')
| -rw-r--r-- | helix-tui/src/backend/test.rs | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/helix-tui/src/backend/test.rs b/helix-tui/src/backend/test.rs deleted file mode 100644 index b048cefc..00000000 --- a/helix-tui/src/backend/test.rs +++ /dev/null @@ -1,167 +0,0 @@ -use crate::{ - backend::Backend, - buffer::{Buffer, Cell}, - terminal::Config, -}; -use helix_core::unicode::width::UnicodeWidthStr; -use helix_view::graphics::{CursorKind, Rect}; -use std::{fmt::Write, io}; - -/// A backend used for the integration tests. -#[derive(Debug)] -pub struct TestBackend { - width: u16, - buffer: Buffer, - height: u16, - cursor: bool, - pos: (u16, u16), -} - -/// Returns a string representation of the given buffer for debugging purpose. -fn buffer_view(buffer: &Buffer) -> String { - let mut view = String::with_capacity(buffer.content.len() + buffer.area.height as usize * 3); - for cells in buffer.content.chunks(buffer.area.width as usize) { - let mut overwritten = vec![]; - let mut skip: usize = 0; - view.push('"'); - for (x, c) in cells.iter().enumerate() { - if skip == 0 { - view.push_str(&c.symbol); - } else { - overwritten.push((x, &c.symbol)) - } - skip = std::cmp::max(skip, c.symbol.width()).saturating_sub(1); - } - view.push('"'); - if !overwritten.is_empty() { - write!( - &mut view, - " Hidden by multi-width symbols: {:?}", - overwritten - ) - .unwrap(); - } - view.push('\n'); - } - view -} - -impl TestBackend { - pub fn new(width: u16, height: u16) -> TestBackend { - TestBackend { - width, - height, - buffer: Buffer::empty(Rect::new(0, 0, width, height)), - cursor: false, - pos: (0, 0), - } - } - - pub fn buffer(&self) -> &Buffer { - &self.buffer - } - - pub fn resize(&mut self, width: u16, height: u16) { - self.buffer.resize(Rect::new(0, 0, width, height)); - self.width = width; - self.height = height; - } - - pub fn assert_buffer(&self, expected: &Buffer) { - assert_eq!(expected.area, self.buffer.area); - let diff = expected.diff(&self.buffer); - if diff.is_empty() { - return; - } - - let mut debug_info = String::from("Buffers are not equal"); - debug_info.push('\n'); - debug_info.push_str("Expected:"); - debug_info.push('\n'); - let expected_view = buffer_view(expected); - debug_info.push_str(&expected_view); - debug_info.push('\n'); - debug_info.push_str("Got:"); - debug_info.push('\n'); - let view = buffer_view(&self.buffer); - debug_info.push_str(&view); - debug_info.push('\n'); - - debug_info.push_str("Diff:"); - debug_info.push('\n'); - let nice_diff = diff - .iter() - .enumerate() - .map(|(i, (x, y, cell))| { - let expected_cell = expected.get(*x, *y); - format!( - "{}: at ({}, {}) expected {:?} got {:?}", - i, x, y, expected_cell, cell - ) - }) - .collect::<Vec<String>>() - .join("\n"); - debug_info.push_str(&nice_diff); - panic!("{}", debug_info); - } -} - -impl Backend for TestBackend { - fn claim(&mut self) -> Result<(), io::Error> { - Ok(()) - } - - fn reconfigure(&mut self, _config: Config) -> Result<(), io::Error> { - Ok(()) - } - - fn restore(&mut self) -> Result<(), io::Error> { - Ok(()) - } - - fn draw<'a, I>(&mut self, content: I) -> Result<(), io::Error> - where - I: Iterator<Item = (u16, u16, &'a Cell)>, - { - for (x, y, c) in content { - self.buffer[(x, y)] = c.clone(); - } - Ok(()) - } - - fn hide_cursor(&mut self) -> Result<(), io::Error> { - self.cursor = false; - Ok(()) - } - - fn show_cursor(&mut self, _kind: CursorKind) -> Result<(), io::Error> { - self.cursor = true; - Ok(()) - } - - fn set_cursor(&mut self, x: u16, y: u16) -> Result<(), io::Error> { - self.pos = (x, y); - Ok(()) - } - - fn clear(&mut self) -> Result<(), io::Error> { - self.buffer.reset(); - Ok(()) - } - - fn size(&self) -> Result<Rect, io::Error> { - Ok(Rect::new(0, 0, self.width, self.height)) - } - - fn flush(&mut self) -> Result<(), io::Error> { - Ok(()) - } - - fn supports_true_color(&self) -> bool { - false - } - - fn get_theme_mode(&self) -> Option<helix_view::theme::Mode> { - None - } -} |