40 lines
1.3 KiB
Clojure
40 lines
1.3 KiB
Clojure
(ns milkwood-clj.analyse-test
|
|
(:require [clojure.test :refer :all]
|
|
[milkwood-clj.analyse :refer :all]))
|
|
|
|
(deftest flat-rule-test
|
|
(testing "Create a rule set with a single rule"
|
|
(is (= (add-rule nil '("a" "b" "c" "d")) '{"a" {"b" {"c" {"d" nil}}}}))))
|
|
|
|
(deftest two-distinct-rule-test
|
|
(testing "Create a set of two rules with no common tokens"
|
|
(is
|
|
(=
|
|
(add-rule (add-rule nil '("a" "b" "c" "d")) '("a" "b" "e" "f"))
|
|
'{"a" {"b" {"c" {"d" nil} "e" {"f" nil}}}}))))
|
|
|
|
(deftest two-fork-rule-test
|
|
(testing "Create a set of two rules with common initial tokens"
|
|
(is
|
|
(=
|
|
(add-rule (add-rule nil '("a" "b" "c" "d")) '("p" "q" "r" "s"))
|
|
'{"a" {"b" {"c" {"d" nil}}} "p" {"q" {"r" {"s" nil}}}}))))
|
|
|
|
(deftest merge-two-rules
|
|
(testing "Merge two rule trees each comprising a single rule, with no tokens common between trees"
|
|
(is
|
|
(=
|
|
(merge-rules
|
|
(add-rule nil '("a" "b" "c" "d"))
|
|
(add-rule nil '("p" "q" "r" "s")))
|
|
'{"a" {"b" {"c" {"d" nil}}} "p" {"q" {"r" {"s" nil}}}}))))
|
|
|
|
(deftest merge-fork-rules
|
|
(testing "Merge two rule tees each comprising a single rule, with common initial tokens"
|
|
(is
|
|
(=
|
|
(merge-rules
|
|
(add-rule nil '("a" "b" "c" "d"))
|
|
(add-rule nil '("a" "b" "e" "f")))
|
|
'{"a" {"b" {"c" {"d" nil} "e" {"f" nil}}}}))))
|