rlm@10
|
1 ;; Copyright (c) Jeffrey Straszheim. All rights reserved. The use and
|
rlm@10
|
2 ;; distribution terms for this software are covered by the Eclipse Public
|
rlm@10
|
3 ;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can
|
rlm@10
|
4 ;; be found in the file epl-v10.html at the root of this distribution. By
|
rlm@10
|
5 ;; using this software in any fashion, you are agreeing to be bound by the
|
rlm@10
|
6 ;; terms of this license. You must not remove this notice, or any other,
|
rlm@10
|
7 ;; from this software.
|
rlm@10
|
8 ;;
|
rlm@10
|
9 ;; test-util.clj
|
rlm@10
|
10 ;;
|
rlm@10
|
11 ;; A Clojure implementation of Datalog -- Utilities Tests
|
rlm@10
|
12 ;;
|
rlm@10
|
13 ;; straszheimjeffrey (gmail)
|
rlm@10
|
14 ;; Created 11 Feburary 2009
|
rlm@10
|
15
|
rlm@10
|
16 (ns clojure.contrib.datalog.tests.test-util
|
rlm@10
|
17 (:use clojure.test
|
rlm@10
|
18 clojure.contrib.datalog.util)
|
rlm@10
|
19 (:use [clojure.contrib.except :only (throwf)]))
|
rlm@10
|
20
|
rlm@10
|
21 (deftest test-is-var?
|
rlm@10
|
22 (is (is-var? '?x))
|
rlm@10
|
23 (is (is-var? '?))
|
rlm@10
|
24 (is (not (is-var? '??x)))
|
rlm@10
|
25 (is (not (is-var? '??)))
|
rlm@10
|
26 (is (not (is-var? 'x)))
|
rlm@10
|
27 (is (not (is-var? "fred")))
|
rlm@10
|
28 (is (not (is-var? :q))))
|
rlm@10
|
29
|
rlm@10
|
30 (deftest test-map-values
|
rlm@10
|
31 (let [map {:fred 1 :sally 2}]
|
rlm@10
|
32 (is (= (map-values #(* 2 %) map) {:fred 2 :sally 4}))
|
rlm@10
|
33 (is (= (map-values identity {}) {}))))
|
rlm@10
|
34
|
rlm@10
|
35 (deftest test-keys-to-vals
|
rlm@10
|
36 (let [map {:fred 1 :sally 2 :joey 3}]
|
rlm@10
|
37 (is (= (set (keys-to-vals map [:fred :sally])) #{1 2}))
|
rlm@10
|
38 (is (= (set (keys-to-vals map [:fred :sally :becky])) #{1 2}))
|
rlm@10
|
39 (is (empty? (keys-to-vals map [])))
|
rlm@10
|
40 (is (empty? (keys-to-vals {} [:fred])))))
|
rlm@10
|
41
|
rlm@10
|
42 (deftest test-reverse-map
|
rlm@10
|
43 (let [map {:fred 1 :sally 2 :joey 3}
|
rlm@10
|
44 map-1 (assoc map :mary 3)]
|
rlm@10
|
45 (is (= (reverse-map map) {1 :fred 2 :sally 3 :joey}))
|
rlm@10
|
46 (is (or (= (reverse-map map-1) {1 :fred 2 :sally 3 :joey})
|
rlm@10
|
47 (= (reverse-map map-1) {1 :fred 2 :sally 3 :mary})))))
|
rlm@10
|
48
|
rlm@10
|
49 (def some-maps
|
rlm@10
|
50 [
|
rlm@10
|
51 { :a 1 :b 2 }
|
rlm@10
|
52 { :c 3 :b 3 }
|
rlm@10
|
53 { :d 4 :a 1 }
|
rlm@10
|
54 { :g 4 :b 4 }
|
rlm@10
|
55 { :a 2 :b 1 }
|
rlm@10
|
56 { :e 1 :f 1 }
|
rlm@10
|
57 ])
|
rlm@10
|
58
|
rlm@10
|
59 (def reduced (preduce + some-maps))
|
rlm@10
|
60 (def merged (apply merge-with + some-maps))
|
rlm@10
|
61
|
rlm@10
|
62 (deftest test-preduce
|
rlm@10
|
63 (is (= reduced merged)))
|
rlm@10
|
64
|
rlm@10
|
65 (comment
|
rlm@10
|
66 (run-tests)
|
rlm@10
|
67 )
|
rlm@10
|
68
|
rlm@10
|
69 ; End of file
|