Mercurial > lasercutter
view src/clojure/contrib/test_contrib/datalog/tests/test_magic.clj @ 10:ef7dbbd6452c
added clojure source goodness
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 21 Aug 2010 06:25:44 -0400 |
parents | |
children |
line wrap: on
line source
1 ;; Copyright (c) Jeffrey Straszheim. All rights reserved. The use and2 ;; distribution terms for this software are covered by the Eclipse Public3 ;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can4 ;; be found in the file epl-v10.html at the root of this distribution. By5 ;; using this software in any fashion, you are agreeing to be bound by the6 ;; terms of this license. You must not remove this notice, or any other,7 ;; from this software.8 ;;9 ;; test-magic.clj10 ;;11 ;; A Clojure implementation of Datalog -- Magic Tests12 ;;13 ;; straszheimjeffrey (gmail)14 ;; Created 18 Feburary 200916 (ns clojure.contrib.datalog.tests.test-magic17 (:use clojure.test)18 (:use clojure.contrib.datalog.magic19 clojure.contrib.datalog.rules))23 (def rs (rules-set24 (<- (:p :x ?x :y ?y) (:e :x ?x :y ?y))25 (<- (:p :x ?x :y ?y) (:e :x ?x :y ?z) (:p :x ?z :y ?y))26 (<- (:e :x ?x :y ?y) (:b :x ?x :y ?y))27 (<- (:e :x ?y :y ?y) (:c :x ?x :y ?y))))29 (def q (adorn-query (?- :p :x 1 :y ?y)))31 (def ars (adorn-rules-set rs q))33 (deftest test-adorn-rules-set34 (is (= ars35 (rules-set36 (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :e :bound #{:x}} :y ?y :x ?x))37 (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :e :bound #{:x}} :y ?z :x ?x)38 ({:pred :p :bound #{:x}} :y ?y :x ?z))39 (<- ({:pred :e :bound #{:x}} :y ?y :x ?y) (:c :y ?y :x ?x))40 (<- ({:pred :e :bound #{:x}} :y ?y :x ?x) (:b :y ?y :x ?x))))))43 (def m (magic-transform ars))45 (deftest test-magic-transform46 (is (= m47 (rules-set48 (<- ({:pred :e :bound #{:x}} :y ?y :x ?y) ({:pred :e :magic true :bound #{:x}} :x ?y) (:c :y ?y :x ?x))50 (<- ({:pred :e :bound #{:x}} :y ?y :x ?x) ({:pred :e :magic true :bound #{:x}} :x ?x) (:b :y ?y :x ?x))52 (<- ({:pred :p :magic true :bound #{:x}} :x ?z) ({:pred :p :magic true :bound #{:x}} :x ?x)53 ({:pred :e :bound #{:x}} :y ?z :x ?x))55 (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x)56 ({:pred :e :bound #{:x}} :y ?z :x ?x)57 ({:pred :p :bound #{:x}} :y ?y :x ?z))59 (<- ({:pred :e :magic true :bound #{:x}} :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x))61 (<- ({:pred :p :bound #{:x}} :y ?y :x ?x) ({:pred :p :magic true :bound #{:x}} :x ?x)62 ({:pred :e :bound #{:x}} :y ?y :x ?x))))))67 (comment68 (run-tests)69 )71 ;; End of file