aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/datalog/tests
diff options
context:
space:
mode:
authorJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-03-06 01:37:08 +0000
committerJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-03-06 01:37:08 +0000
commit14c51b3b516e0487424319cba9c97ee0958a43c1 (patch)
tree465efcc6a809e5770238de84c7af93697b1cfec6 /src/clojure/contrib/datalog/tests
parentd6b2018ea742f89cd55f2b6ff30f5e6b839a3e74 (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.clj15
-rw-r--r--src/clojure/contrib/datalog/tests/test_magic.clj30
-rw-r--r--src/clojure/contrib/datalog/tests/test_rules.clj12
-rw-r--r--src/clojure/contrib/datalog/tests/test_softstrat.clj34
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