milkwood-clj/test/milkwood_clj/analyse_test.clj

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}}}}))))