From 9ffe78d264b0a4b06f1f2c296075138b93310881 Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Mon, 4 Dec 2023 12:10:01 +0100 Subject: [PATCH] Fix up random wrap map test --- crates/editor2/src/display_map/wrap_map.rs | 89 +++++++++++----------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/crates/editor2/src/display_map/wrap_map.rs b/crates/editor2/src/display_map/wrap_map.rs index 817f7165accea1ad14044f9a22a6b232ef63883b..a2ac0ec849bfb9b26983c897a2ae3cc2ebd9878c 100644 --- a/crates/editor2/src/display_map/wrap_map.rs +++ b/crates/editor2/src/display_map/wrap_map.rs @@ -741,49 +741,48 @@ impl WrapSnapshot { } fn check_invariants(&self) { - // todo!() - // #[cfg(test)] - // { - // assert_eq!( - // TabPoint::from(self.transforms.summary().input.lines), - // self.tab_snapshot.max_point() - // ); - - // { - // let mut transforms = self.transforms.cursor::<()>().peekable(); - // while let Some(transform) = transforms.next() { - // if let Some(next_transform) = transforms.peek() { - // assert!(transform.is_isomorphic() != next_transform.is_isomorphic()); - // } - // } - // } - - // let text = language::Rope::from(self.text().as_str()); - // let mut input_buffer_rows = self.tab_snapshot.buffer_rows(0); - // let mut expected_buffer_rows = Vec::new(); - // let mut prev_tab_row = 0; - // for display_row in 0..=self.max_point().row() { - // let tab_point = self.to_tab_point(WrapPoint::new(display_row, 0)); - // if tab_point.row() == prev_tab_row && display_row != 0 { - // expected_buffer_rows.push(None); - // } else { - // expected_buffer_rows.push(input_buffer_rows.next().unwrap()); - // } - - // prev_tab_row = tab_point.row(); - // assert_eq!(self.line_len(display_row), text.line_len(display_row)); - // } - - // for start_display_row in 0..expected_buffer_rows.len() { - // assert_eq!( - // self.buffer_rows(start_display_row as u32) - // .collect::>(), - // &expected_buffer_rows[start_display_row..], - // "invalid buffer_rows({}..)", - // start_display_row - // ); - // } - // } + #[cfg(test)] + { + assert_eq!( + TabPoint::from(self.transforms.summary().input.lines), + self.tab_snapshot.max_point() + ); + + { + let mut transforms = self.transforms.cursor::<()>().peekable(); + while let Some(transform) = transforms.next() { + if let Some(next_transform) = transforms.peek() { + assert!(transform.is_isomorphic() != next_transform.is_isomorphic()); + } + } + } + + let text = language::Rope::from(self.text().as_str()); + let mut input_buffer_rows = self.tab_snapshot.buffer_rows(0); + let mut expected_buffer_rows = Vec::new(); + let mut prev_tab_row = 0; + for display_row in 0..=self.max_point().row() { + let tab_point = self.to_tab_point(WrapPoint::new(display_row, 0)); + if tab_point.row() == prev_tab_row && display_row != 0 { + expected_buffer_rows.push(None); + } else { + expected_buffer_rows.push(input_buffer_rows.next().unwrap()); + } + + prev_tab_row = tab_point.row(); + assert_eq!(self.line_len(display_row), text.line_len(display_row)); + } + + for start_display_row in 0..expected_buffer_rows.len() { + assert_eq!( + self.buffer_rows(start_display_row as u32) + .collect::>(), + &expected_buffer_rows[start_display_row..], + "invalid buffer_rows({}..)", + start_display_row + ); + } + } } } @@ -1051,7 +1050,7 @@ mod tests { .map(|i| i.parse().expect("invalid `OPERATIONS` variable")) .unwrap_or(10); - let text_system = cx.test_platform.text_system(); + let text_system = cx.read(|cx| cx.text_system().clone()); let mut wrap_width = if rng.gen_bool(0.1) { None } else { @@ -1086,7 +1085,7 @@ mod tests { let tabs_snapshot = tab_map.set_max_expansion_column(32); log::info!("TabMap text: {:?}", tabs_snapshot.text()); - let mut line_wrapper = LineWrapper::new(font_id, font_size, text_system); + let mut line_wrapper = text_system.line_wrapper(font.clone(), font_size).unwrap(); let unwrapped_text = tabs_snapshot.text(); let expected_text = wrap_text(&unwrapped_text, wrap_width, &mut line_wrapper);