1use gpui::ViewContext;
2use util::test::{marked_text, marked_text_ranges};
3
4use crate::{
5 display_map::{DisplayMap, DisplaySnapshot, ToDisplayPoint},
6 DisplayPoint, Editor, MultiBuffer,
7};
8
9#[cfg(test)]
10#[ctor::ctor]
11fn init_logger() {
12 if std::env::var("RUST_LOG").is_ok() {
13 env_logger::init();
14 }
15}
16
17// Returns a snapshot from text containing '|' character markers with the markers removed, and DisplayPoints for each one.
18pub fn marked_display_snapshot(
19 text: &str,
20 cx: &mut gpui::MutableAppContext,
21) -> (DisplaySnapshot, Vec<DisplayPoint>) {
22 let (unmarked_text, markers) = marked_text(text);
23
24 let family_id = cx.font_cache().load_family(&["Helvetica"]).unwrap();
25 let font_id = cx
26 .font_cache()
27 .select_font(family_id, &Default::default())
28 .unwrap();
29 let font_size = 14.0;
30
31 let buffer = MultiBuffer::build_simple(&unmarked_text, cx);
32 let display_map =
33 cx.add_model(|cx| DisplayMap::new(buffer, font_id, font_size, None, 1, 1, cx));
34 let snapshot = display_map.update(cx, |map, cx| map.snapshot(cx));
35 let markers = markers
36 .into_iter()
37 .map(|offset| offset.to_display_point(&snapshot))
38 .collect();
39
40 (snapshot, markers)
41}
42
43pub fn select_ranges(editor: &mut Editor, marked_text: &str, cx: &mut ViewContext<Editor>) {
44 let (umarked_text, text_ranges) = marked_text_ranges(marked_text);
45 assert_eq!(editor.text(cx), umarked_text);
46 editor.change_selections(None, cx, |s| s.select_ranges(text_ranges));
47}
48
49pub fn assert_text_with_selections(
50 editor: &mut Editor,
51 marked_text: &str,
52 cx: &mut ViewContext<Editor>,
53) {
54 let (unmarked_text, text_ranges) = marked_text_ranges(marked_text);
55
56 assert_eq!(editor.text(cx), unmarked_text);
57 assert_eq!(editor.selections.ranges(cx), text_ranges);
58}