   #?(:cljs (:require [test-utils.core :as tuc])
      :clj (:require (test-utils [core :as tuc]))))
 
-(def physical-quantities [:density
+(def physical-quantities [:angle
+                          :duration
+                          :density
                           :energy
                           :force
                           :length

(defn rand-physical-quantity []
  (rand-nth physical-quantities))

(def quantity-unit-map {:density                [:lb-per-cu-ft :kg-per-m3]
                        :energy                 [:ft-lb :J]
                        :force                  [:lbf :N]
                        :length                 [:ft :m]

        measurement (generate-measurement-f unit)]
    [measurement (measurement-as-f measurement (first (remove (partial = unit) units)))]))

(generate-measurement-pair (set (quantity-unit-map :density))
                           rand-density-unit typical-density density-as)

(defn rand-measurement
  ([]
   (rand-measurement (rand-physical-quantity)))
  ([physical-quantity]
   ((quantity-generate-measurement-map physical-quantity) (rand-unit physical-quantity))))

((quantity-generate-measurement-map :angle))
((quantity-generate-measurement-map :angle) (rand-unit :angle))
(rand-measurement :angle)
(generate-measurement-pair #{:deg} (fn [] :deg) (fn [] (typical-azimuth (rand-nth 360))) identity)
