|
9 | 9 |
|
10 | 10 | (deftest numbers-test |
11 | 11 | (is+ {:count 1000 |
12 | | - :types {java.lang.Long 1000} |
13 | | - :frequencies map? |
| 12 | + :types [[java.lang.Long 1000]] |
| 13 | + :frequencies seq? |
14 | 14 | :numbers {:n 1000, :zeros 1, :max 999, :min 0, :mean 499.5}} |
15 | 15 | (analytics (range 1000))) |
16 | 16 |
|
17 | 17 | (is+ {:count 100 |
18 | | - :types {java.lang.Integer 50, java.lang.Long 50} |
19 | | - :frequencies {0 50, 1 50} |
| 18 | + :types [[java.lang.Integer 50] [java.lang.Long 50]] |
| 19 | + :frequencies [[0 50] [1 50]] |
20 | 20 | :numbers {:n 100, :zeros 50, :max 1, :min 0, :mean 0.5}} |
21 | 21 | (analytics (concat (map int (repeat 50 0)) (repeat 50 1)))) |
22 | 22 |
|
23 | 23 | (is+ {:count 6 |
24 | | - :types {java.lang.Long 3, nil 3} |
25 | | - :frequencies {nil 3, 0 1, 1 1, 2 1} |
| 24 | + :types [[java.lang.Long 3] [nil 3]] |
| 25 | + :frequencies [[nil 3] [0 1] [1 1] [2 1]] |
26 | 26 | :numbers {:n 3, :zeros 1, :max 2, :min 0, :mean 1.0}} |
27 | 27 | (analytics [0 nil 1 nil 2 nil]))) |
28 | 28 |
|
29 | 29 | (deftest strings-test |
30 | 30 | (is+ {:count 100 |
31 | | - :types {java.lang.String 100} |
32 | | - :frequencies map? |
| 31 | + :types [[java.lang.String 100]] |
| 32 | + :frequencies seq? |
33 | 33 | :strings {:n 100, :blank 0, :ascii 100, :max-len 2, :min-len 1, :avg-len (approx 1.9)}} |
34 | 34 | (analytics (map str (range 100)))) |
35 | 35 |
|
36 | 36 | (is+ {:count 6, |
37 | | - :types {java.lang.String 5, nil 1} |
38 | | - :frequencies map? |
| 37 | + :types [[java.lang.String 5] [nil 1]] |
| 38 | + :frequencies seq? |
39 | 39 | :strings {:n 5, :blank 3, :ascii 4, :max-len 6, :min-len 0, :avg-len (approx 2.8)}} |
40 | 40 | (analytics [nil "" " " " " "hello" "привіт"]))) |
41 | 41 |
|
42 | 42 | (deftest colls-stats |
43 | 43 | (is+ {:count 20 |
44 | | - :types {clojure.lang.LongRange 19, clojure.lang.PersistentList$EmptyList 1} |
45 | | - :frequencies map? |
| 44 | + :types [[clojure.lang.LongRange 19] [clojure.lang.PersistentList$EmptyList 1]] |
| 45 | + :frequencies seq? |
46 | 46 | :collections {:n 20, :empty 1, :max-size 19, :min-size 0, :avg-size 9.5}} |
47 | 47 | (analytics (map range (range 20))))) |
48 | 48 |
|
49 | 49 | (deftest heterogeneous-list-stats |
50 | 50 | (is+ {:count 90, |
51 | | - :types {java.lang.Long 20, java.lang.Integer 20, java.lang.String 20, clojure.lang.PersistentVector 20, nil 10} |
52 | | - :frequencies {nil 10, [42] 10, [] 10 ;; and others |
53 | | - } |
| 51 | + :types (mc/via #(into {} %) {java.lang.Long 20, java.lang.Integer 20, java.lang.String 20, clojure.lang.PersistentVector 20, nil 10}) |
| 52 | + :frequencies (mc/via #(into {} %) {nil 10, [42] 10, [] 10}) ;; and others |
54 | 53 | :numbers {:n 40, :zeros 2, :max 19, :min 0, :mean 9.5} |
55 | 54 | :strings {:n 20, :blank 0, :ascii 20, :max-len 2, :min-len 1, :avg-len 1.5} |
56 | 55 | :collections {:n 20, :empty 10, :max-size 1, :min-size 0, :avg-size 0.5}} |
|
63 | 62 |
|
64 | 63 | (deftest keyvals-test |
65 | 64 | (is+ {:count 100 |
66 | | - :keys {:types {java.lang.Long 100} |
67 | | - :frequencies map? |
| 65 | + :keys {:types [[java.lang.Long 100]] |
| 66 | + :frequencies seq? |
68 | 67 | :numbers {:n 100, :zeros 1, :max 99, :min 0, :mean 49.5}} |
69 | | - :values {:types {java.lang.String 100} |
70 | | - :frequencies map? |
| 68 | + :values {:types [[java.lang.String 100]] |
| 69 | + :frequencies seq? |
71 | 70 | :strings {:n 100, :blank 0, :ascii 100, :max-len 2, :min-len 1, :avg-len (approx 1.9)}}} |
72 | 71 | (analytics (zipmap (range 100) (map str (range 100)))))) |
73 | 72 |
|
74 | 73 | (deftest list-of-tuples-test |
75 | 74 | (is+ {:count 100 |
76 | | - :tuples [{:types {java.lang.Long 100} |
| 75 | + :tuples [{:types [[java.lang.Long 100]] |
77 | 76 | :numbers {:n 100, :zeros 1, :max 99, :min 0, :mean 49.5}} |
78 | | - {:types {java.lang.String 100} |
| 77 | + {:types [[java.lang.String 100]] |
79 | 78 | :strings {:n 100, :blank 0, :ascii 100, :max-len 2, :min-len 1, :avg-len (approx 1.9)}} |
80 | | - {:types {nil 50, java.lang.Long 50} |
81 | | - :frequencies {nil 50, 42 50} |
| 79 | + {:types [[nil 50] [java.lang.Long 50]] |
| 80 | + :frequencies [[nil 50] [42 50]] |
82 | 81 | :numbers {:n 50, :zeros 0, :max 42, :min 42, :mean 42.0}}]} |
83 | 82 | (analytics (map #(cond-> [% (str %)] |
84 | 83 | (odd? %) (conj 42)) |
|
87 | 86 | (deftest list-of-records-test |
88 | 87 | (testing "analytics on a list of records analyzes values for each unique key individually" |
89 | 88 | (is+ {:count 100 |
90 | | - :by-key {:s {:types {java.lang.String 100} |
91 | | - :frequencies map? |
| 89 | + :by-key {:s {:types [[java.lang.String 100]] |
| 90 | + :frequencies seq? |
92 | 91 | :strings {:n 100, :blank 0, :ascii 50, :max-len 7, :min-len 5, :avg-len (approx 6.4)}} |
93 | | - :kw {:types {nil 66, clojure.lang.Keyword 34}, :frequencies {nil 66, :occasional 34}} |
94 | | - :i {:types {java.lang.Long 100} |
| 92 | + :kw {:types [[nil 66] [clojure.lang.Keyword 34]], :frequencies [[nil 66] [:occasional 34]]} |
| 93 | + :i {:types [[java.lang.Long 100]] |
95 | 94 | :numbers {:n 100, :zeros 1, :max 99, :min 0, :mean 49.5}}}} |
96 | 95 | (analytics (map #(cond-> {:i % |
97 | 96 | :s (str "test" % (when (even? %) "ї"))} |
|
122 | 121 | (analytics (repeat 100 [1 "test"])))) |
123 | 122 | (is+ {:cutoff? true |
124 | 123 | :count 100 |
125 | | - :keys {:types {java.lang.Long 100}} |
126 | | - :values {:types {java.lang.Long 100}}} |
| 124 | + :keys {:types [[java.lang.Long 100]]} |
| 125 | + :values {:types [[java.lang.Long 100]]}} |
127 | 126 | (binding [orchard.inspect.analytics/*size-cutoff* 100] |
128 | 127 | (analytics (zipmap (range 200) (range 200))))))) |
0 commit comments