From ed1b25cb307d465ebdaab79f94b93a031bc7e6a3 Mon Sep 17 00:00:00 2001 From: bakaq Date: Wed, 14 Aug 2024 18:30:56 -0300 Subject: [PATCH] Tests for run_query_iter() --- src/machine/lib_machine.rs | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/machine/lib_machine.rs b/src/machine/lib_machine.rs index a420d79e..dba599c8 100644 --- a/src/machine/lib_machine.rs +++ b/src/machine/lib_machine.rs @@ -637,4 +637,45 @@ mod tests { assert_eq!(output, Ok(QueryResolution::False)); } + + #[test] + #[cfg_attr(miri, ignore)] + fn query_iterator_determinism() { + let mut machine = Machine::new_lib(); + + { + let mut iterator = machine.run_query_iter("X = 1.".into()); + + iterator.next(); + assert_eq!(iterator.next(), None); + } + + { + let mut iterator = machine.run_query_iter("X = 1 ; false.".into()); + + iterator.next(); + + assert_eq!(iterator.next(), Some(Ok(QueryResolutionLine::False))); + assert_eq!(iterator.next(), None); + } + + { + let mut iterator = machine.run_query_iter("false.".into()); + + assert_eq!(iterator.next(), Some(Ok(QueryResolutionLine::False))); + assert_eq!(iterator.next(), None); + } + } + + #[test] + #[cfg_attr(miri, ignore)] + fn query_iterator_backtracking_when_no_variables() { + let mut machine = Machine::new_lib(); + + let mut iterator = machine.run_query_iter("true;false.".into()); + + assert_eq!(iterator.next(), Some(Ok(QueryResolutionLine::True))); + assert_eq!(iterator.next(), Some(Ok(QueryResolutionLine::False))); + assert_eq!(iterator.next(), None); + } } -- 2.54.0