test.rs

 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.select_ranges(text_ranges, None, cx);
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.selected_ranges(cx), text_ranges);
58}