]> Repositorios git - scryer-prolog.git/commitdiff
Tests for run_query_iter()
authorbakaq <[email protected]>
Wed, 14 Aug 2024 21:30:56 +0000 (18:30 -0300)
committerbakaq <[email protected]>
Wed, 14 Aug 2024 23:02:03 +0000 (20:02 -0300)
src/machine/lib_machine.rs

index a420d79e4ea0fef75fd42e3b98e70f0001ffdae5..dba599c88fcad71f199f855c7998925dc026a8b2 100644 (file)
@@ -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);
+    }
 }