summaryrefslogtreecommitdiffstats
path: root/src/core/src/modules/list/tests/old_search.xrs
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/src/modules/list/tests/old_search.xrs')
-rw-r--r--src/core/src/modules/list/tests/old_search.xrs599
1 files changed, 599 insertions, 0 deletions
diff --git a/src/core/src/modules/list/tests/old_search.xrs b/src/core/src/modules/list/tests/old_search.xrs
new file mode 100644
index 0000000..cf784f9
--- /dev/null
+++ b/src/core/src/modules/list/tests/old_search.xrs
@@ -0,0 +1,599 @@
+use std::time::Duration;
+
+use view::assert_rendered_output;
+
+use super::*;
+use crate::{
+ assert_results,
+ process::Artifact,
+ search::{testutil::SearchableRunner, Interrupter},
+ testutil::{EventHandlerTestContext, module_test, ModuleTestContext},
+};
+
+pub(crate) struct TestContext {
+ module_test_context:ModuleTestContext,
+ pub(crate) list: List,
+}
+
+
+impl TestContext {
+ fn get_build_data<'tc>(&self, module: &'tc mut dyn Module) -> &'tc ViewData {
+ module.build_view_data(&self.render_context)
+ }
+
+ #[allow(clippy::unused_self)]
+ pub(crate) fn activate(&self, module: &'_ mut dyn Module, state: State) -> Results {
+ module.activate(state)
+ }
+
+ #[allow(clippy::unused_self)]
+ pub(crate) fn deactivate(&mut self, module: &'_ mut dyn Module) -> Results {
+ module.deactivate()
+ }
+
+ pub(crate) fn build_view_data<'tc>(&self, module: &'tc mut dyn Module) -> &'tc ViewData {
+ self.get_build_data(module)
+ }
+
+ pub(crate) fn read_event(&mut self, module: &'_ mut dyn Module) -> Event {
+ let input_options = module.input_options();
+ self.event_handler_context.event_handler.read_event(
+ self.event_handler_context.state.read_event(),
+ input_options,
+ |event, key_bindings| module.read_event(event, key_bindings),
+ )
+ }
+
+ pub(crate) fn handle_event(&mut self, module: &'_ mut dyn Module) -> Results {
+ let event = self.read_event(module);
+ let mut results = Results::new();
+ results.event(event);
+ results.append(module.handle_event(event, &self.view_context.state));
+ results
+ }
+
+ pub(crate) fn handle_n_events(&mut self, module: &'_ mut dyn Module, n: usize) -> Vec<Results> {
+ let mut results = vec![];
+ for _ in 0..n {
+ results.push(self.handle_event(module));
+ }
+ results
+ }
+
+ pub(crate) fn handle_all_events(&mut self, module: &'_ mut dyn Module) -> Vec<Results> {
+ self.handle_n_events(module, self.event_handler_context.number_events)
+ }
+
+ pub(crate) fn take_todo_file(&mut self) -> TodoFile {
+ self.todo_file.take().expect("Cannot take the TodoFile more than once")
+ }
+}
+
+#[derive(Debug, Eq, PartialEq)]
+enum Action {
+ Start,
+ Finish,
+ FinishWithNext(usize),
+ FinishWithPrevious(usize),
+}
+
+pub(crate) fn search_test<C>(action: Action, term: &str, lines: &[&str], callback: C)
+where C: FnOnce(TestContext) {
+ let mut events = vec![Event::from(StandardEvent::SearchStart)];
+
+ for c in term.chars() {
+ events.push(Event::from(c))
+ }
+
+ match action {
+ Action::Start => {},
+ Action::Finish => {
+ events.push(Event::from(StandardEvent::SearchFinish));
+ },
+ Action::FinishWithNext(n) => {
+ events.push(Event::from(StandardEvent::SearchFinish));
+ for _ in n {
+ events.push(Event::from(StandardEvent::SearchNext));
+ }
+ },
+ Action::FinishWithPrevious(n) => {
+ events.push(Event::from(StandardEvent::SearchFinish));
+ for _ in n {
+ events.push(Event::from(StandardEvent::SearchPrevious));
+ }
+ },
+ }
+ module_test(lines, events.as_slice(), |mut context| {
+ let list = create_list(&Config::new(), context.take_todo_file());
+ callback(TestContext {
+ event_handler_context: context.event_handler_context,
+ list,
+ });
+ });
+}
+
+// #[test]
+// fn with_match_on_hash() {
+// module_test(
+// &["pick aaaaaaaa comment1"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from('a'),
+// Event::from('a'),
+// Event::from('a'),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = SearchableRunner::new(&module.search).run_search("aaa");
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {IndicatorColor}aaaaaaaa{Normal} comment1{Pad( )}",
+// "{TRAILING}",
+// "{Normal}/aaa{Normal,Underline}"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn with_no_match() {
+// module_test(
+// &["pick aaaaaaaa comment1"],
+// &[Event::from(StandardEvent::SearchStart), Event::from('x')],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = SearchableRunner::new(&module.search).run_search("x");
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa comment1{Pad( )}",
+// "{TRAILING}",
+// "{Normal}/x{Normal,Underline}"
+// );
+// },
+// );
+// }
+
+// #[test]
+// fn start_with_matches_and_with_term() {
+// module_test(
+// &["pick aaaaaaaa comment1"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from('a'),
+// Event::from(StandardEvent::SearchFinish),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = SearchableRunner::new(&module.search).run_search("a");
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {IndicatorColor,Underline}aaaaaaaa{Normal} comment1{Pad( )}",
+// "{TRAILING}",
+// "{Normal}[a]: 1/1"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn start_with_no_matches_and_with_term() {
+// module_test(
+// &["pick aaaaaaaa comment1"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa comment1{Pad( )}",
+// "{TRAILING}",
+// "{Normal}[x]: No Results"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn start_with_no_term() {
+// module_test(
+// &["pick aaaaaaaa comment1"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from(StandardEvent::SearchFinish),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa comment1{Pad( )}"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn normal_mode_next() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchNext),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor,Underline}x{Normal}2{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}cccccccc {IndicatorColor}x{Normal}3",
+// "{TRAILING}",
+// "{Normal}[x]: 2/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn visual_mode_next() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(MetaEvent::ToggleVisualMode),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchNext),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal,Dimmed} > {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1{Pad( )}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor,Underline}x{Normal}2{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}cccccccc {IndicatorColor}x{Normal}3",
+// "{TRAILING}",
+// "{Normal}[x]: 2/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn normal_mode_next_with_wrap() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchNext),
+// Event::from(StandardEvent::SearchNext),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor,Underline}x{Normal}1{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor}x{Normal}2",
+// "{Normal} {ActionPick}pick {Normal}cccccccc {IndicatorColor}x{Normal}3",
+// "{TRAILING}",
+// "{Normal}[x]: 1/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn visual_mode_next_with_wrap() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(MetaEvent::ToggleVisualMode),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchNext),
+// Event::from(StandardEvent::SearchNext),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor,Underline}x{Normal}1{Pad( )}",
+// "{Selected}{Normal,Dimmed} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor}x{Normal}2{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}cccccccc {IndicatorColor}x{Normal}3",
+// "{TRAILING}",
+// "{Normal}[x]: 1/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn normal_mode_previous() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchPrevious),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor,Underline}x{Normal}2{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}cccccccc {IndicatorColor}x{Normal}3",
+// "{TRAILING}",
+// "{Normal}[x]: 2/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn visual_mode_previous() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(MetaEvent::ToggleVisualMode),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchPrevious),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor,Underline}x{Normal}2{Pad( )}",
+// "{Selected}{Normal,Dimmed} > {ActionPick}pick {Normal}cccccccc {IndicatorColor}x{Normal}3{Pad( )}",
+// "{TRAILING}",
+// "{Normal}[x]: 2/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn normal_mode_previous_with_wrap() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchPrevious),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1",
+// "{Normal} {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor}x{Normal}2",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}cccccccc {IndicatorColor,Underline}x{Normal}3{Pad( )}",
+// "{TRAILING}",
+// "{Normal}[x]: 3/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn visual_mode_previous_with_wrap() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(MetaEvent::ToggleVisualMode),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchPrevious),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal,Dimmed} > {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1{Pad( )}",
+// "{Selected}{Normal,Dimmed} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor}x{Normal}2{Pad( )}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}cccccccc {IndicatorColor,Underline}x{Normal}3{Pad( )}",
+// "{TRAILING}",
+// "{Normal}[x]: 3/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn cancel() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(StandardEvent::SearchStart),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}aaaaaaaa x1{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}bbbbbbbb x2",
+// "{Normal} {ActionPick}pick {Normal}cccccccc x3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn set_search_start_hint() {
+// module_test(
+// &[
+// "pick aaaaaaaa x1",
+// "pick aaaaaaaa a",
+// "pick bbbbbbbb x2",
+// "pick aaaaaaaa b",
+// "pick bbbbbbbb x3",
+// ],
+// &[
+// Event::from(MetaEvent::MoveCursorDown),
+// Event::from(StandardEvent::SearchStart),
+// Event::from('x'),
+// Event::from(StandardEvent::SearchFinish),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa {IndicatorColor}x{Normal}1",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa a",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor,Underline}x{Normal}2{Pad( )}",
+// "{Normal} {ActionPick}pick {Normal}aaaaaaaa b",
+// "{Normal} {ActionPick}pick {Normal}bbbbbbbb {IndicatorColor}x{Normal}3",
+// "{TRAILING}",
+// "{Normal}[x]: 2/3"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn highlight_multiple() {
+// module_test(
+// &["pick 12345678 xaxxaxxx"],
+// &[Event::from(StandardEvent::SearchStart), Event::from('x')],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let mut search = module.search.clone();
+// let _ = search.search(Interrupter::new(SEARCH_TIMEOUT), "x");
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionPick}pick {Normal}12345678 \
+// {IndicatorColor}x{Normal}a{IndicatorColor}xx{Normal}a{IndicatorColor}xxx{Normal}{Pad( )}",
+// "{TRAILING}",
+// "{Normal}/x{Normal,Underline}"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn skip_no_content() {
+// module_test(
+// &["break"],
+// &[Event::from(StandardEvent::SearchStart), Event::from('x')],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let _ = test_context.handle_all_events(&mut module);
+// let view_data = test_context.build_view_data(&mut module);
+// assert_rendered_output!(
+// view_data,
+// "{TITLE}{HELP}",
+// "{BODY}",
+// "{Selected}{Normal} > {ActionBreak}break {Normal}{Pad( )}",
+// "{TRAILING}",
+// "{Normal}/x{Normal,Underline}"
+// );
+// },
+// );
+// }
+//
+// #[test]
+// fn handle_other_event() {
+// module_test(
+// &["pick aaaaaaaa x1", "pick bbbbbbbb x2", "pick cccccccc x3"],
+// &[
+// Event::from(StandardEvent::SearchStart),
+// Event::from(StandardEvent::SearchFinish),
+// Event::from(MetaEvent::Abort),
+// ],
+// |mut test_context| {
+// let mut module = create_list(&Config::new(), test_context.take_todo_file());
+// let mut results: Vec<_> = test_context.handle_all_events(&mut module);
+// assert_results!(
+// results.remove(results.len() - 1),
+// Artifact::Event(Event::from(MetaEvent::Abort)),
+// Artifact::ChangeState(State::ConfirmAbort)
+// );
+// },
+// );
+// }