From: bakaq Date: Wed, 14 Aug 2024 21:30:56 +0000 (-0300) Subject: Tests for run_query_iter() X-Git-Tag: v0.10.0~120^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=ed1b25cb307d465ebdaab79f94b93a031bc7e6a3;p=scryer-prolog.git Tests for run_query_iter() --- 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); + } }