30 lines
1.3 KiB
Clojure
30 lines
1.3 KiB
Clojure
(ns mw-parser.utils-test
|
|
(:require [clojure.test :refer [deftest is testing]]
|
|
[mw-parser.utils :refer [assert-type rule? search-tree
|
|
suitable-fragment? TODO]]))
|
|
|
|
(deftest fragment-tests
|
|
(testing "Functions finding and identifying rule fragments"
|
|
(let [rule '(:RULE
|
|
(:IF "if")
|
|
(:PROPERTY-CONDITION
|
|
(:SYMBOL "state")
|
|
(:QUALIFIER (:EQUIVALENCE (:IS "is")))
|
|
(:SYMBOL "forest"))
|
|
(:ACTIONS
|
|
(:SIMPLE-ACTION
|
|
(:SYMBOL "state")
|
|
(:BECOMES "should be")
|
|
(:SYMBOL "climax"))))
|
|
not-rule [:FROBOZ :foo :bar :ban]]
|
|
(is (rule? rule))
|
|
(is (not (rule? not-rule)))
|
|
(is (= nil (assert-type rule :RULE)))
|
|
(is (thrown-with-msg?
|
|
Exception #"Expected a :RULE fragment" (assert-type not-rule :RULE)))
|
|
(is (= '(:EQUIVALENCE (:IS "is")) (search-tree rule :EQUIVALENCE)))
|
|
(is (= nil (search-tree rule :EQUIVOCATION)))
|
|
(is (suitable-fragment? '(:EQUIVALENCE (:IS "is")) :EQUIVALENCE))
|
|
(is (not (suitable-fragment? :EQUIVALENCE :EQUIVALENCE)))
|
|
(is (not (suitable-fragment? '(:EQUIVALENCE (:IS "is")) :QUALIFIER)))
|
|
(is (= (TODO "Froboz") "Froboz"))))) |