From 46e348142d782cfd94ba37421f92e2871b0f4c22 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Thu, 8 Oct 2026 02:12:17 -0300 Subject: fix tests --- test/unit/evaluators/FOL.ml | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'test/unit/evaluators') diff --git a/test/unit/evaluators/FOL.ml b/test/unit/evaluators/FOL.ml index 0a3dabc..a0789aa 100644 --- a/test/unit/evaluators/FOL.ml +++ b/test/unit/evaluators/FOL.ml @@ -23,6 +23,9 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = BatMap.String.of_list ["name", Concepts.Value.String name; "age", Concepts.Value.Integer age] } + (* a plan comes resolved, so it reads nothing through [within] *) + let nowhere = Kernel.Prototype.mixture [] + let drain result = let open Utilities.Result in let* enumerable = Protocols.Enumerable.require result in @@ -50,7 +53,8 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = let* evaluator = Option.to_result ~none:(missing "fol") found in let* evaluator = Protocols.Evaluator.require evaluator in let* result = - Rnt.Evaluators.FOL.(program (Base employee)) |> Protocols.Evaluator.invoke evaluator + Rnt.Evaluators.FOL.(program (Base employee)) + |> Protocols.Evaluator.invoke evaluator ~within:nowhere in drain result end @@ -74,7 +78,7 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = let* evaluator = Protocols.Evaluator.require (Rnt.Evaluators.FOL.make ()) in let* result = Rnt.Evaluators.FOL.(program (Project (Base employees, BatFingerTree.singleton "name"))) - |> Protocols.Evaluator.invoke evaluator + |> Protocols.Evaluator.invoke evaluator ~within:nowhere in drain result end @@ -100,7 +104,9 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = (Project (Base Kernel.Path.("employee" @/ this), BatFingerTree.singleton "name")) ) in let* evaluator = Protocols.Evaluator.require (Rnt.Evaluators.FOL.make ()) in - let* result = Rnt.Evaluators.FOL.program plan |> Protocols.Evaluator.invoke evaluator in + let* result = + Rnt.Evaluators.FOL.program plan |> Protocols.Evaluator.invoke evaluator ~within:nowhere + in drain result end |> Helpers.condition_as_failure @@ -147,7 +153,9 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = instantiate (Kernel.Path.lookup root) (Base Kernel.Path.("view" @/ this)) ) in let* evaluator = Protocols.Evaluator.require (Rnt.Evaluators.FOL.make ()) in - let* result = Rnt.Evaluators.FOL.program plan |> Protocols.Evaluator.invoke evaluator in + let* result = + Rnt.Evaluators.FOL.program plan |> Protocols.Evaluator.invoke evaluator ~within:nowhere + in drain result end |> Helpers.condition_as_failure @@ -158,6 +166,29 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = [["name", Concepts.Value.String "Alaric"]] (projected |> List.map (fun tuple -> BatMap.String.bindings tuple.Concepts.Tuple.attributes)) + let run_a_stored_program_within conn = + let projected = + begin + let open Utilities.Result in + let* employees = H.relation conn ["name"; "age"] [employee "Alaric" 42] in + let* view = + store conn + Rnt.Evaluators.FOL.( + Project (Base Kernel.Path.("employee" @/ this), BatFingerTree.singleton "name") ) + in + let* root = namespace ["employee", employees] in + let* evaluator = Protocols.Evaluator.require (Rnt.Evaluators.FOL.make ()) in + let* result = Protocols.Evaluator.invoke evaluator view ~within:root in + drain result + end + |> Helpers.condition_as_failure + in + check + (list (list (pair string Helpers.value))) + "the stored source read its relations where it was told to" + [["name", Concepts.Value.String "Alaric"]] + (projected |> List.map (fun tuple -> BatMap.String.bindings tuple.Concepts.Tuple.attributes)) + let refuse_a_program_that_reads_itself conn = let expanded = begin @@ -197,7 +228,7 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = let* evaluator = Protocols.Evaluator.require (Rnt.Evaluators.FOL.make ()) in let* result = Rnt.Evaluators.FOL.(program (Project (Base source, BatFingerTree.singleton "value"))) - |> Protocols.Evaluator.invoke evaluator + |> Protocols.Evaluator.invoke evaluator ~within:nowhere in let* enumerable = Protocols.Enumerable.require result in let* cursor = Protocols.Enumerable.enumerate enumerable in @@ -220,6 +251,8 @@ module Make (S : Abstract.Storage.STORAGE) (C : Helpers.Storage.CONFIGURATOR) = (H.with_connection instantiate_a_program "fol-test"); test_case "expand-a-stored-program" `Quick (H.with_connection expand_a_stored_program "fol-test"); + test_case "run-a-stored-program-within" `Quick + (H.with_connection run_a_stored_program_within "fol-test"); test_case "refuse-a-program-that-reads-itself" `Quick (H.with_connection refuse_a_program_that_reads_itself "fol-test"); test_case "pull-one-tuple-at-a-time" `Quick pull_one_tuple_at_a_time ] ) -- cgit v1.2.3