Skip to content

Instantly share code, notes, and snippets.

@paologf
Created November 24, 2014 09:54
Show Gist options
  • Save paologf/1e9b7a0ea9ae5ad99a00 to your computer and use it in GitHub Desktop.
Save paologf/1e9b7a0ea9ae5ad99a00 to your computer and use it in GitHub Desktop.
claratest project for clara_rules issue
(ns claratest.core
(:require [clara.rules :refer :all]))
(def clara_session (atom nil))
(defquery get-all-run-request
"query to get all fact of type RunRequest"
[]
[?a <- :RunRequest])
(defquery get-all-run-request-started
"query to get all fact of type RunRequest"
[]
[?a <- :RunRequestStarted])
(defrule run-rule
[:RunRequest [{uuid :uuid desc :desc}] (= ?uuid uuid) (= ?desc desc)]
[:not [:RunRequestStarted [{uuid :uuid}] (= ?uuid uuid)]]
=>
(prn "RUNREQUEST" (query @clara_session get-all-run-request)))
(defproject claratest "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]
[org.toomuchcode/clara-rules "0.6.2"]])
(ns claratest.core-test
(:require [clojure.test :refer :all]
[claratest.core :refer :all]
[clara.rules :refer :all]
))
(deftest run-rule-test
(swap!
clara_session
(fn [s]
(mk-session 'claratest.core :fact-type-fn :fact-type :cache true)))
(swap! clara_session insert {:fact-type :RunRequest :uuid "1" :desc "ciccio"})
(fire-rules @clara_session)
(is (= 1 (count (query @clara_session get-all-run-request))))
(is (= 0 (count (query @clara_session get-all-run-request-started))))
(time (Thread/sleep 1000))
(swap! clara_session insert {:fact-type :RunRequestStarted :uuid "1" :retracted false})
(fire-rules @clara_session)
(is (= 1 (count (query @clara_session get-all-run-request))))
(is (= 1 (count (query @clara_session get-all-run-request-started))))
(time (Thread/sleep 1000))
(prn "REMOVING RUNREQUEST")
(swap! clara_session retract {:fact-type :RunRequest :uuid "1" :desc "ciccio"})
(fire-rules @clara_session)
(is (= 0 (count (query @clara_session get-all-run-request))))
(is (= 1 (count (query @clara_session get-all-run-request-started))))
(time (Thread/sleep 1000))
(prn "REMOVING RUNREQUESTSTARTED")
(swap! clara_session retract {:fact-type :RunRequestStarted :uuid "1"})
(fire-rules @clara_session)
(is (= 0 (count (query @clara_session get-all-run-request))))
(is (= 0 (count (query @clara_session get-all-run-request-started))))
(time (Thread/sleep 1000))
(fire-rules @clara_session)
(is (= 0 (count (query @clara_session get-all-run-request))))
(is (= 0 (count (query @clara_session get-all-run-request-started))))
(time (Thread/sleep 1000))
(fire-rules @clara_session)
(time (Thread/sleep 1000))
(fire-rules @clara_session)
(time (Thread/sleep 1000))
(fire-rules @clara_session)
(time (Thread/sleep 1000))
(fire-rules @clara_session))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment