@@ -857,17 +857,33 @@ impl BufferSearchBar {
mod tests {
use super::*;
use editor::{DisplayPoint, Editor};
- use gpui::{color::Color, test::EmptyView, TestAppContext};
+ use gpui::{Context, EmptyView, Hsla, TestAppContext, VisualTestContext};
use language::Buffer;
+ use smol::stream::StreamExt as _;
use unindent::Unindent as _;
- fn init_test(cx: &mut TestAppContext) -> (ViewHandle<Editor>, ViewHandle<BufferSearchBar>) {
- crate::project_search::tests::init_test(cx);
-
- let buffer = cx.add_model(|cx| {
+ fn init_globals(cx: &mut TestAppContext) {
+ cx.update(|cx| {
+ let store = settings::SettingsStore::test(cx);
+ cx.set_global(store);
+ editor::init(cx);
+ ui::init(cx);
+ language::init(cx);
+ theme::init(theme::LoadThemes::JustBase, cx);
+ });
+ }
+ fn init_test(
+ cx: &mut TestAppContext,
+ ) -> (
+ View<Editor>,
+ View<BufferSearchBar>,
+ &mut VisualTestContext<'_>,
+ ) {
+ init_globals(cx);
+ let buffer = cx.build_model(|cx| {
Buffer::new(
0,
- cx.model_id() as u64,
+ cx.entity_id().as_u64(),
r#"
A regular expression (shortened as regex or regexp;[1] also referred to as
rational expression[2][3]) is a sequence of characters that specifies a search
@@ -877,22 +893,22 @@ mod tests {
.unindent(),
)
});
- let window = cx.add_window(|_| EmptyView);
- let editor = window.add_view(cx, |cx| Editor::for_buffer(buffer.clone(), None, cx));
+ let (window, cx) = cx.add_window_view(|_| EmptyView {});
+ let editor = cx.build_view(|cx| Editor::for_buffer(buffer.clone(), None, cx));
- let search_bar = window.add_view(cx, |cx| {
+ let search_bar = cx.build_view(|cx| {
let mut search_bar = BufferSearchBar::new(cx);
search_bar.set_active_pane_item(Some(&editor), cx);
search_bar.show(cx);
search_bar
});
- (editor, search_bar)
+ (editor, search_bar, cx)
}
#[gpui::test]
async fn test_search_simple(cx: &mut TestAppContext) {
- let (editor, search_bar) = init_test(cx);
+ let (editor, search_bar, cx) = init_test(cx);
// Search for a string that appears with different casing.
// By default, search is case-insensitive.
@@ -906,11 +922,11 @@ mod tests {
&[
(
DisplayPoint::new(2, 17)..DisplayPoint::new(2, 19),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(2, 43)..DisplayPoint::new(2, 45),
- Color::red(),
+ Hsla::red(),
),
]
);
@@ -920,13 +936,14 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.toggle_search_option(SearchOptions::CASE_SENSITIVE, cx);
});
- editor.next_notification(cx).await;
+ let mut editor_notifications = cx.notifications(&editor);
+ editor_notifications.next().await;
editor.update(cx, |editor, cx| {
assert_eq!(
editor.all_text_background_highlights(cx),
&[(
DisplayPoint::new(2, 43)..DisplayPoint::new(2, 45),
- Color::red(),
+ Hsla::red(),
)]
);
});
@@ -943,31 +960,31 @@ mod tests {
&[
(
DisplayPoint::new(0, 24)..DisplayPoint::new(0, 26),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(2, 71)..DisplayPoint::new(2, 73),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(3, 1)..DisplayPoint::new(3, 3),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(3, 11)..DisplayPoint::new(3, 13),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(3, 56)..DisplayPoint::new(3, 58),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(3, 60)..DisplayPoint::new(3, 62),
- Color::red(),
+ Hsla::red(),
),
]
);
@@ -977,22 +994,23 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.toggle_search_option(SearchOptions::WHOLE_WORD, cx);
});
- editor.next_notification(cx).await;
+ let mut editor_notifications = cx.notifications(&editor);
+ editor_notifications.next().await;
editor.update(cx, |editor, cx| {
assert_eq!(
editor.all_text_background_highlights(cx),
&[
(
DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(3, 11)..DisplayPoint::new(3, 13),
- Color::red(),
+ Hsla::red(),
),
(
DisplayPoint::new(3, 56)..DisplayPoint::new(3, 58),
- Color::red(),
+ Hsla::red(),
),
]
);
@@ -1011,7 +1029,7 @@ mod tests {
[DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(0));
});
@@ -1022,7 +1040,7 @@ mod tests {
[DisplayPoint::new(3, 11)..DisplayPoint::new(3, 13)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(1));
});
@@ -1033,7 +1051,7 @@ mod tests {
[DisplayPoint::new(3, 56)..DisplayPoint::new(3, 58)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(2));
});
@@ -1044,7 +1062,7 @@ mod tests {
[DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(0));
});
@@ -1055,7 +1073,7 @@ mod tests {
[DisplayPoint::new(3, 56)..DisplayPoint::new(3, 58)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(2));
});
@@ -1066,7 +1084,7 @@ mod tests {
[DisplayPoint::new(3, 11)..DisplayPoint::new(3, 13)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(1));
});
@@ -1077,7 +1095,7 @@ mod tests {
[DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(0));
});
@@ -1096,7 +1114,7 @@ mod tests {
[DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(0));
});
@@ -1115,7 +1133,7 @@ mod tests {
[DisplayPoint::new(3, 11)..DisplayPoint::new(3, 13)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(1));
});
@@ -1134,7 +1152,7 @@ mod tests {
[DisplayPoint::new(3, 56)..DisplayPoint::new(3, 58)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(2));
});
@@ -1153,7 +1171,7 @@ mod tests {
[DisplayPoint::new(0, 41)..DisplayPoint::new(0, 43)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(0));
});
@@ -1172,14 +1190,14 @@ mod tests {
[DisplayPoint::new(3, 56)..DisplayPoint::new(3, 58)]
);
});
- search_bar.read_with(cx, |search_bar, _| {
+ search_bar.update(cx, |search_bar, _| {
assert_eq!(search_bar.active_match_index, Some(2));
});
}
#[gpui::test]
async fn test_search_option_handling(cx: &mut TestAppContext) {
- let (editor, search_bar) = init_test(cx);
+ let (editor, search_bar, cx) = init_test(cx);
// show with options should make current search case sensitive
search_bar
@@ -1194,7 +1212,7 @@ mod tests {
editor.all_text_background_highlights(cx),
&[(
DisplayPoint::new(2, 43)..DisplayPoint::new(2, 45),
- Color::red(),
+ Hsla::red(),
)]
);
});
@@ -1215,13 +1233,14 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.toggle_search_option(SearchOptions::WHOLE_WORD, cx)
});
- editor.next_notification(cx).await;
+ let mut editor_notifications = cx.notifications(&editor);
+ editor_notifications.next().await;
editor.update(cx, |editor, cx| {
assert_eq!(
editor.all_text_background_highlights(cx),
&[(
DisplayPoint::new(0, 35)..DisplayPoint::new(0, 40),
- Color::red(),
+ Hsla::red(),
),]
);
});
@@ -1238,8 +1257,7 @@ mod tests {
#[gpui::test]
async fn test_search_select_all_matches(cx: &mut TestAppContext) {
- crate::project_search::tests::init_test(cx);
-
+ init_globals(cx);
let buffer_text = r#"
A regular expression (shortened as regex or regexp;[1] also referred to as
rational expression[2][3]) is a sequence of characters that specifies a search
@@ -1255,186 +1273,180 @@ mod tests {
expected_query_matches_count > 1,
"Should pick a query with multiple results"
);
- let buffer = cx.add_model(|cx| Buffer::new(0, cx.model_id() as u64, buffer_text));
- let window = cx.add_window(|_| EmptyView);
- let editor = window.add_view(cx, |cx| Editor::for_buffer(buffer.clone(), None, cx));
+ let buffer = cx.build_model(|cx| Buffer::new(0, cx.entity_id().as_u64(), buffer_text));
+ let window = cx.add_window(|_| EmptyView {});
+
+ let editor = window.build_view(cx, |cx| Editor::for_buffer(buffer.clone(), None, cx));
- let search_bar = window.add_view(cx, |cx| {
+ let search_bar = window.build_view(cx, |cx| {
let mut search_bar = BufferSearchBar::new(cx);
search_bar.set_active_pane_item(Some(&editor), cx);
search_bar.show(cx);
search_bar
});
- search_bar
- .update(cx, |search_bar, cx| search_bar.search("a", None, cx))
+ window
+ .update(cx, |_, cx| {
+ search_bar.update(cx, |search_bar, cx| search_bar.search("a", None, cx))
+ })
+ .unwrap()
.await
.unwrap();
- search_bar.update(cx, |search_bar, cx| {
- cx.focus(search_bar.query_editor.as_any());
- search_bar.activate_current_match(cx);
- });
-
- window.read_with(cx, |cx| {
- assert!(
- !editor.is_focused(cx),
- "Initially, the editor should not be focused"
- );
- });
-
- let initial_selections = editor.update(cx, |editor, cx| {
- let initial_selections = editor.selections.display_ranges(cx);
- assert_eq!(
- initial_selections.len(), 1,
- "Expected to have only one selection before adding carets to all matches, but got: {initial_selections:?}",
- );
- initial_selections
- });
- search_bar.update(cx, |search_bar, _| {
- assert_eq!(search_bar.active_match_index, Some(0));
- });
-
- search_bar.update(cx, |search_bar, cx| {
- cx.focus(search_bar.query_editor.as_any());
- search_bar.select_all_matches(&SelectAllMatches, cx);
- });
- window.read_with(cx, |cx| {
- assert!(
- editor.is_focused(cx),
- "Should focus editor after successful SelectAllMatches"
- );
- });
- search_bar.update(cx, |search_bar, cx| {
- let all_selections =
- editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
- assert_eq!(
- all_selections.len(),
- expected_query_matches_count,
- "Should select all `a` characters in the buffer, but got: {all_selections:?}"
- );
- assert_eq!(
- search_bar.active_match_index,
- Some(0),
- "Match index should not change after selecting all matches"
- );
- });
- search_bar.update(cx, |search_bar, cx| {
- search_bar.select_next_match(&SelectNextMatch, cx);
- });
- window.read_with(cx, |cx| {
- assert!(
- editor.is_focused(cx),
- "Should still have editor focused after SelectNextMatch"
- );
- });
- search_bar.update(cx, |search_bar, cx| {
- let all_selections =
- editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
- assert_eq!(
- all_selections.len(),
- 1,
- "On next match, should deselect items and select the next match"
- );
- assert_ne!(
- all_selections, initial_selections,
- "Next match should be different from the first selection"
- );
- assert_eq!(
- search_bar.active_match_index,
- Some(1),
- "Match index should be updated to the next one"
- );
- });
-
- search_bar.update(cx, |search_bar, cx| {
- cx.focus(search_bar.query_editor.as_any());
- search_bar.select_all_matches(&SelectAllMatches, cx);
- });
- window.read_with(cx, |cx| {
- assert!(
- editor.is_focused(cx),
- "Should focus editor after successful SelectAllMatches"
- );
- });
- search_bar.update(cx, |search_bar, cx| {
- let all_selections =
- editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
- assert_eq!(
- all_selections.len(),
- expected_query_matches_count,
- "Should select all `a` characters in the buffer, but got: {all_selections:?}"
- );
- assert_eq!(
- search_bar.active_match_index,
- Some(1),
- "Match index should not change after selecting all matches"
- );
- });
-
- search_bar.update(cx, |search_bar, cx| {
- search_bar.select_prev_match(&SelectPrevMatch, cx);
- });
- window.read_with(cx, |cx| {
- assert!(
- editor.is_focused(cx),
- "Should still have editor focused after SelectPrevMatch"
- );
- });
- let last_match_selections = search_bar.update(cx, |search_bar, cx| {
- let all_selections =
- editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
- assert_eq!(
- all_selections.len(),
- 1,
- "On previous match, should deselect items and select the previous item"
- );
- assert_eq!(
- all_selections, initial_selections,
- "Previous match should be the same as the first selection"
- );
- assert_eq!(
- search_bar.active_match_index,
- Some(0),
- "Match index should be updated to the previous one"
- );
- all_selections
- });
+ let last_match_selections = window
+ .update(cx, |_, cx| {
+ search_bar.update(cx, |search_bar, cx| {
+ let handle = search_bar.query_editor.focus_handle(cx);
+ cx.focus(&handle);
+ search_bar.activate_current_match(cx);
+ });
+ assert!(
+ !editor.read(cx).is_focused(cx),
+ "Initially, the editor should not be focused"
+ );
+ let initial_selections = editor.update(cx, |editor, cx| {
+ let initial_selections = editor.selections.display_ranges(cx);
+ assert_eq!(
+ initial_selections.len(), 1,
+ "Expected to have only one selection before adding carets to all matches, but got: {initial_selections:?}",
+ );
+ initial_selections
+ });
+ search_bar.update(cx, |search_bar, cx| {
+ assert_eq!(search_bar.active_match_index, Some(0));
+ let handle = search_bar.query_editor.focus_handle(cx);
+ cx.focus(&handle);
+ search_bar.select_all_matches(&SelectAllMatches, cx);
+ });
+ assert!(
+ editor.read(cx).is_focused(cx),
+ "Should focus editor after successful SelectAllMatches"
+ );
+ search_bar.update(cx, |search_bar, cx| {
+ let all_selections =
+ editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
+ assert_eq!(
+ all_selections.len(),
+ expected_query_matches_count,
+ "Should select all `a` characters in the buffer, but got: {all_selections:?}"
+ );
+ assert_eq!(
+ search_bar.active_match_index,
+ Some(0),
+ "Match index should not change after selecting all matches"
+ );
+ });
+ search_bar.update(cx, |this, cx| this.select_next_match(&SelectNextMatch, cx));
+ assert!(
+ editor.read(cx).is_focused(cx),
+ "Should still have editor focused after SelectNextMatch"
+ );
+ search_bar.update(cx, |search_bar, cx| {
+ let all_selections =
+ editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
+ assert_eq!(
+ all_selections.len(),
+ 1,
+ "On next match, should deselect items and select the next match"
+ );
+ assert_ne!(
+ all_selections, initial_selections,
+ "Next match should be different from the first selection"
+ );
+ assert_eq!(
+ search_bar.active_match_index,
+ Some(1),
+ "Match index should be updated to the next one"
+ );
+ let handle = search_bar.query_editor.focus_handle(cx);
+ cx.focus(&handle);
+ search_bar.select_all_matches(&SelectAllMatches, cx);
+ });
+ assert!(
+ editor.read(cx).is_focused(cx),
+ "Should focus editor after successful SelectAllMatches"
+ );
+ search_bar.update(cx, |search_bar, cx| {
+ let all_selections =
+ editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
+ assert_eq!(
+ all_selections.len(),
+ expected_query_matches_count,
+ "Should select all `a` characters in the buffer, but got: {all_selections:?}"
+ );
+ assert_eq!(
+ search_bar.active_match_index,
+ Some(1),
+ "Match index should not change after selecting all matches"
+ );
+ });
+ search_bar.update(cx, |search_bar, cx| {
+ search_bar.select_prev_match(&SelectPrevMatch, cx);
+ });
+ assert!(
+ editor.read(cx).is_focused(&cx),
+ "Should still have editor focused after SelectPrevMatch"
+ );
+ search_bar.update(cx, |search_bar, cx| {
+ let all_selections =
+ editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
+ assert_eq!(
+ all_selections.len(),
+ 1,
+ "On previous match, should deselect items and select the previous item"
+ );
+ assert_eq!(
+ all_selections, initial_selections,
+ "Previous match should be the same as the first selection"
+ );
+ assert_eq!(
+ search_bar.active_match_index,
+ Some(0),
+ "Match index should be updated to the previous one"
+ );
+ all_selections
+ })
+ })
+ .unwrap();
- search_bar
- .update(cx, |search_bar, cx| {
- cx.focus(search_bar.query_editor.as_any());
- search_bar.search("abas_nonexistent_match", None, cx)
+ window
+ .update(cx, |_, cx| {
+ search_bar.update(cx, |search_bar, cx| {
+ let handle = search_bar.query_editor.focus_handle(cx);
+ cx.focus(&handle);
+ search_bar.search("abas_nonexistent_match", None, cx)
+ })
})
+ .unwrap()
.await
.unwrap();
- search_bar.update(cx, |search_bar, cx| {
- search_bar.select_all_matches(&SelectAllMatches, cx);
- });
- window.read_with(cx, |cx| {
+ window.update(cx, |_, cx| {
+ search_bar.update(cx, |search_bar, cx| {
+ search_bar.select_all_matches(&SelectAllMatches, cx);
+ });
assert!(
- !editor.is_focused(cx),
+ editor.update(cx, |this, cx| !this.is_focused(cx.window_context())),
"Should not switch focus to editor if SelectAllMatches does not find any matches"
);
- });
- search_bar.update(cx, |search_bar, cx| {
- let all_selections =
- editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
- assert_eq!(
- all_selections, last_match_selections,
- "Should not select anything new if there are no matches"
- );
- assert!(
- search_bar.active_match_index.is_none(),
- "For no matches, there should be no active match index"
- );
+ search_bar.update(cx, |search_bar, cx| {
+ let all_selections =
+ editor.update(cx, |editor, cx| editor.selections.display_ranges(cx));
+ assert_eq!(
+ all_selections, last_match_selections,
+ "Should not select anything new if there are no matches"
+ );
+ assert!(
+ search_bar.active_match_index.is_none(),
+ "For no matches, there should be no active match index"
+ );
+ });
});
}
#[gpui::test]
async fn test_search_query_history(cx: &mut TestAppContext) {
- crate::project_search::tests::init_test(cx);
-
+ //crate::project_search::tests::init_test(cx);
+ init_globals(cx);
let buffer_text = r#"
A regular expression (shortened as regex or regexp;[1] also referred to as
rational expression[2][3]) is a sequence of characters that specifies a search
@@ -1442,12 +1454,12 @@ mod tests {
for "find" or "find and replace" operations on strings, or for input validation.
"#
.unindent();
- let buffer = cx.add_model(|cx| Buffer::new(0, cx.model_id() as u64, buffer_text));
- let window = cx.add_window(|_| EmptyView);
+ let buffer = cx.build_model(|cx| Buffer::new(0, cx.entity_id().as_u64(), buffer_text));
+ let (window, cx) = cx.add_window_view(|_| EmptyView {});
- let editor = window.add_view(cx, |cx| Editor::for_buffer(buffer.clone(), None, cx));
+ let editor = cx.build_view(|cx| Editor::for_buffer(buffer.clone(), None, cx));
- let search_bar = window.add_view(cx, |cx| {
+ let search_bar = cx.build_view(|cx| {
let mut search_bar = BufferSearchBar::new(cx);
search_bar.set_active_pane_item(Some(&editor), cx);
search_bar.show(cx);
@@ -1470,7 +1482,7 @@ mod tests {
.await
.unwrap();
// Ensure that the latest search is active.
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "c");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
@@ -1479,14 +1491,14 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.next_history_query(&NextHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
search_bar.update(cx, |search_bar, cx| {
search_bar.next_history_query(&NextHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
@@ -1495,7 +1507,7 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.previous_history_query(&PreviousHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "c");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
@@ -1504,7 +1516,7 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.previous_history_query(&PreviousHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "b");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
@@ -1513,14 +1525,14 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.previous_history_query(&PreviousHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "a");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
search_bar.update(cx, |search_bar, cx| {
search_bar.previous_history_query(&PreviousHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "a");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
@@ -1529,7 +1541,7 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.next_history_query(&NextHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "b");
assert_eq!(search_bar.search_options, SearchOptions::CASE_SENSITIVE);
});
@@ -1538,7 +1550,7 @@ mod tests {
.update(cx, |search_bar, cx| search_bar.search("ba", None, cx))
.await
.unwrap();
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "ba");
assert_eq!(search_bar.search_options, SearchOptions::NONE);
});
@@ -1547,42 +1559,42 @@ mod tests {
search_bar.update(cx, |search_bar, cx| {
search_bar.previous_history_query(&PreviousHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "c");
assert_eq!(search_bar.search_options, SearchOptions::NONE);
});
search_bar.update(cx, |search_bar, cx| {
search_bar.previous_history_query(&PreviousHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "b");
assert_eq!(search_bar.search_options, SearchOptions::NONE);
});
search_bar.update(cx, |search_bar, cx| {
search_bar.next_history_query(&NextHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "c");
assert_eq!(search_bar.search_options, SearchOptions::NONE);
});
search_bar.update(cx, |search_bar, cx| {
search_bar.next_history_query(&NextHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "ba");
assert_eq!(search_bar.search_options, SearchOptions::NONE);
});
search_bar.update(cx, |search_bar, cx| {
search_bar.next_history_query(&NextHistoryQuery, cx);
});
- search_bar.read_with(cx, |search_bar, cx| {
+ search_bar.update(cx, |search_bar, cx| {
assert_eq!(search_bar.query(cx), "");
assert_eq!(search_bar.search_options, SearchOptions::NONE);
});
}
#[gpui::test]
async fn test_replace_simple(cx: &mut TestAppContext) {
- let (editor, search_bar) = init_test(cx);
+ let (editor, search_bar, cx) = init_test(cx);
search_bar
.update(cx, |search_bar, cx| {
@@ -1599,7 +1611,7 @@ mod tests {
search_bar.replace_all(&ReplaceAll, cx)
});
assert_eq!(
- editor.read_with(cx, |this, cx| { this.text(cx) }),
+ editor.update(cx, |this, cx| { this.text(cx) }),
r#"
A regular expr$1 (shortened as regex or regexp;[1] also referred to as
rational expr$1[2][3]) is a sequence of characters that specifies a search
@@ -1625,7 +1637,7 @@ mod tests {
});
// Notice how the first or in the text (shORtened) is not replaced. Neither are the remaining hits of `or` in the text.
assert_eq!(
- editor.read_with(cx, |this, cx| { this.text(cx) }),
+ editor.update(cx, |this, cx| { this.text(cx) }),
r#"
A regular expr$1 (shortened as regex banana regexp;[1] also referred to as
rational expr$1[2][3]) is a sequence of characters that specifies a search
@@ -1649,7 +1661,7 @@ mod tests {
search_bar.replace_all(&ReplaceAll, cx)
});
assert_eq!(
- editor.read_with(cx, |this, cx| { this.text(cx) }),
+ editor.update(cx, |this, cx| { this.text(cx) }),
r#"
A regular expr$1 (shortened as regex banana regexp;1number also referred to as
rational expr$12number3number) is a sequence of characters that specifies a search
@@ -1675,7 +1687,7 @@ mod tests {
// The only word affected by this edit should be `algorithms`, even though there's a bunch
// of words in this text that would match this regex if not for WHOLE_WORD.
assert_eq!(
- editor.read_with(cx, |this, cx| { this.text(cx) }),
+ editor.update(cx, |this, cx| { this.text(cx) }),
r#"
A regular expr$1 (shortened as regex banana regexp;1number also referred to as
rational expr$12number3number) is a sequence of characters that specifies a search