diff options
author | Jeffrey Straszheim <straszheimjeffrey@gmail.com> | 2009-03-06 01:37:08 +0000 |
---|---|---|
committer | Jeffrey Straszheim <straszheimjeffrey@gmail.com> | 2009-03-06 01:37:08 +0000 |
commit | 14c51b3b516e0487424319cba9c97ee0958a43c1 (patch) | |
tree | 465efcc6a809e5770238de84c7af93697b1cfec6 /src/clojure/contrib/datalog/tests | |
parent | d6b2018ea742f89cd55f2b6ff30f5e6b839a3e74 (diff) |
Fixed lousy representation for adorned predicates
Diffstat (limited to 'src/clojure/contrib/datalog/tests')
-rw-r--r-- | src/clojure/contrib/datalog/tests/test_literals.clj | 15 | ||||
-rw-r--r-- | src/clojure/contrib/datalog/tests/test_magic.clj | 30 | ||||
-rw-r--r-- | src/clojure/contrib/datalog/tests/test_rules.clj | 12 | ||||
-rw-r--r-- | src/clojure/contrib/datalog/tests/test_softstrat.clj | 34 |
4 files changed, 55 insertions, 36 deletions
diff --git a/src/clojure/contrib/datalog/tests/test_literals.clj b/src/clojure/contrib/datalog/tests/test_literals.clj index 3ce64279..107a4dc6 100644 --- a/src/clojure/contrib/datalog/tests/test_literals.clj +++ b/src/clojure/contrib/datalog/tests/test_literals.clj @@ -95,9 +95,9 @@ (deftest test-adorned-literal (is (= (literal-predicate (adorned-literal pl #{:x})) - [:fred #{:x}])) + {:pred :fred :bound #{:x}})) (is (= (literal-predicate (adorned-literal nl #{:x :y :q})) - [:fred #{:x :y}])) + {:pred :fred :bound #{:x :y}})) (is (= (:term-bindings (adorned-literal nl #{:x})) {:x '?x :y '?y :z 3})) (is (= (adorned-literal cl #{}) @@ -117,12 +117,17 @@ (deftest test-magic-literal (is (= (magic-literal pl) - {:predicate [:fred :magic nil], :term-bindings {}, :literal-type :clojure.contrib.datalog.literals/literal})) + {:predicate {:pred :fred :magic true}, :term-bindings {}, :literal-type :clojure.contrib.datalog.literals/literal})) (is (= (magic-literal (adorned-literal pl #{:x})) - {:predicate [:fred :magic #{:x}], + {:predicate {:pred :fred :magic true :bound #{:x}}, :term-bindings {:x '?x}, :literal-type :clojure.contrib.datalog.literals/literal}))) +(comment + (use 'clojure.contrib.stacktrace) (e) + (use :reload 'clojure.contrib.datalog.literals) +) + (def db1 (make-database (relation :fred [:x :y]) @@ -151,7 +156,7 @@ [{'?x 3 '?y 1}]))) (deftest test-project-literal - (is (= ((project-literal db2 lit4 [{'?x 1 '?y 3}{'?x 4 '?y 2}]) [:joan #{:x}]) + (is (= ((project-literal db2 lit4 [{'?x 1 '?y 3}{'?x 4 '?y 2}]) {:pred :joan :bound #{:x}}) (datalog-relation ;; Schema #{:y :x} diff --git a/src/clojure/contrib/datalog/tests/test_magic.clj b/src/clojure/contrib/datalog/tests/test_magic.clj index 9fbbf741..b790475f 100644 --- a/src/clojure/contrib/datalog/tests/test_magic.clj +++ b/src/clojure/contrib/datalog/tests/test_magic.clj @@ -33,10 +33,11 @@ (deftest test-adorn-rules-set (is (= ars (rules-set - (<- ([:p #{:x}] :y ?y :x ?x) ([:e #{:x}] :y ?y :x ?x)) - (<- ([:p #{:x}] :y ?y :x ?x) ([:e #{:x}] :y ?z :x ?x) ([:p #{:x}] :y ?y :x ?z)) - (<- ([:e #{:x}] :y ?y :x ?y) (:c :y ?y :x ?x)) - (<- ([:e #{:x}] :y ?y :x ?x) (:b :y ?y :x ?x)))))) + (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :e :bound #{:x}} :y ?y :x ?x)) + (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :e :bound #{:x}} :y ?z :x ?x) + ({:pred :p :bound #{:x}} :y ?y :x ?z)) + (<- ({:pred :e :bound #{:x}} :y ?y :x ?y) (:c :y ?y :x ?x)) + (<- ({:pred :e :bound #{:x}} :y ?y :x ?x) (:b :y ?y :x ?x)))))) (def m (magic-transform ars)) @@ -44,12 +45,21 @@ (deftest test-magic-transform (is (= m (rules-set - (<- ([:e #{:x}] :y ?y :x ?y) ([:e :magic #{:x}] :x ?y) (:c :y ?y :x ?x)) - (<- ([:e #{:x}] :y ?y :x ?x) ([:e :magic #{:x}] :x ?x) (:b :y ?y :x ?x)) - (<- ([:p :magic #{:x}] :x ?z) ([:p :magic #{:x}] :x ?x) ([:e #{:x}] :y ?z :x ?x)) - (<- ([:p #{:x}] :y ?y :x ?x) ([:p :magic #{:x}] :x ?x) ([:e #{:x}] :y ?z :x ?x) ([:p #{:x}] :y ?y :x ?z)) - (<- ([:e :magic #{:x}] :x ?x) ([:p :magic #{:x}] :x ?x)) - (<- ([:p #{:x}] :y ?y :x ?x) ([:p :magic #{:x}] :x ?x) ([:e #{:x}] :y ?y :x ?x)))))) + (<- ({:pred :e :bound #{:x}} :y ?y :x ?y) ({:pred :e :magic true :bound #{:x}} :x ?y) (:c :y ?y :x ?x)) + + (<- ({:pred :e :bound #{:x}} :y ?y :x ?x) ({:pred :e :magic true :bound #{:x}} :x ?x) (:b :y ?y :x ?x)) + + (<- ({:pred :p :magic true :bound #{:x}} :x ?z) ({:pred :p :magic true :bound #{:x}} :x ?x) + ({:pred :e :bound #{:x}} :y ?z :x ?x)) + + (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x) + ({:pred :e :bound #{:x}} :y ?z :x ?x) + ({:pred :p :bound #{:x}} :y ?y :x ?z)) + + (<- ({:pred :e :magic true :bound #{:x}} :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x)) + + (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x) + ({:pred :e :bound #{:x}} :y ?y :x ?x)))))) diff --git a/src/clojure/contrib/datalog/tests/test_rules.clj b/src/clojure/contrib/datalog/tests/test_rules.clj index 96e83d22..a42ad757 100644 --- a/src/clojure/contrib/datalog/tests/test_rules.clj +++ b/src/clojure/contrib/datalog/tests/test_rules.clj @@ -38,20 +38,22 @@ (deftest test-sip (is (= (compute-sip #{:x} #{:mary :sally} tr-1) - (<- ([:fred #{:x}] :x ?x :y ?y) ([:mary #{:x}] :z ?z :x ?x) ([:sally #{:z}] :y ?y :z ?z)))) + (<- ({:pred :fred :bound #{:x}} :x ?x :y ?y) + ({:pred :mary :bound #{:x}} :z ?z :x ?x) + ({:pred :sally :bound #{:z}} :y ?y :z ?z)))) (is (= (compute-sip #{} #{:mary :sally} tr-1) - (<- (:fred :y ?y :x ?x) (:mary :z ?z :x ?x) ([:sally #{:z}] :y ?y :z ?z)))) + (<- (:fred :y ?y :x ?x) (:mary :z ?z :x ?x) ({:pred :sally :bound #{:z}} :y ?y :z ?z)))) (is (= (compute-sip #{} #{:mary} tr-2) - (<- (:fred) (not! [:mary #{:x}] :x 3)))) + (<- (:fred) (not! {:pred :mary :bound #{:x}} :x 3)))) (is (= (compute-sip #{} #{} tr-2) tr-2)) (is (= (display-rule (compute-sip #{:x} #{:mary :sally} tr-3)) - (display-rule (<- ([:fred #{:x}] :x ?x :y ?y) - ([:mary #{:x}] :x ?x) + (display-rule (<- ({:pred :fred :bound #{:x}} :x ?x :y ?y) + ({:pred :mary :bound #{:x}} :x ?x) (:sally :y ?y) (if > ?x ?y)))))) ; Display rule is used because = does not work on diff --git a/src/clojure/contrib/datalog/tests/test_softstrat.clj b/src/clojure/contrib/datalog/tests/test_softstrat.clj index 512d7718..4132c102 100644 --- a/src/clojure/contrib/datalog/tests/test_softstrat.clj +++ b/src/clojure/contrib/datalog/tests/test_softstrat.clj @@ -34,31 +34,33 @@ (deftest test-soft-stratification (let [soft (:stratification ws) q (:query ws)] - (is (= q (?- [:p #{:x}] :x 1))) + (is (= q (?- {:pred :p :bound #{:x}} :x 1))) (is (= (count soft) 4)) (is (subset? (rules-set - (<- ([:q #{:x}] :x ?x) ([:q :magic #{:x}] :x ?x) (:d :x ?x)) - (<- ([:q :magic #{:x}] :x ?x) ([:p :magic #{:x}] :x ?x) - (:b :z ?z :y ?y :x ?x))) + (<- ({:pred :q :bound #{:x}} :x ?x) ({:pred :q :magic true :bound #{:x}} :x ?x) + (:d :x ?x)) + + (<- ({:pred :q :magic true :bound #{:x}} :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x) + (:b :z ?z :y ?y :x ?x))) (nth soft 0))) (is (= (nth soft 1) (rules-set - (<- ([:q :magic #{:x}] :x ?y) ([:p :magic #{:x}] :x ?x) - (:b :z ?z :y ?y :x ?x) - (not! [:q #{:x}] :x ?x))))) + (<- ({:pred :q :magic true :bound #{:x}} :x ?y) ({:pred :p :magic true :bound #{:x}} :x ?x) + (:b :z ?z :y ?y :x ?x) + (not! {:pred :q :bound #{:x}} :x ?x))))) (is (= (nth soft 2) (rules-set - (<- ([:q :magic #{:x}] :x ?z) ([:p :magic #{:x}] :x ?x) - (:b :z ?z :y ?y :x ?x) - (not! [:q #{:x}] :x ?x) - (not! [:q #{:x}] :x ?y))))) + (<- ({:pred :q :magic true :bound #{:x}} :x ?z) ({:pred :p :magic true :bound #{:x}} :x ?x) + (:b :z ?z :y ?y :x ?x) + (not! {:pred :q :bound #{:x}} :x ?x) + (not! {:pred :q :bound #{:x}} :x ?y))))) (is (= (nth soft 3) (rules-set - (<- ([:p #{:x}] :x ?x) ([:p :magic #{:x}] :x ?x) - (:b :z ?z :y ?y :x ?x) - (not! [:q #{:x}] :x ?x) - (not! [:q #{:x}] :x ?y) - (not! [:q #{:x}] :x ?z))))))) + (<- ({:pred :p :bound #{:x}} :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x) + (:b :z ?z :y ?y :x ?x) + (not! {:pred :q :bound #{:x}} :x ?x) + (not! {:pred :q :bound #{:x}} :x ?y) + (not! {:pred :q :bound #{:x}} :x ?z))))))) (def tdb-1 |