   ;; limited in the same fashion." -- RFC 7231 Section 5.3.1
   [rep acceptable]
   (when
+      ;; TODO: Case sensitivity/insensitivity requirements
       (= (:parameters acceptable) (:parameters rep))
     (cond
       (and (= (:type acceptable) (:type rep))

             {:content-type (mime/string->media-type "text/html;level=1")}) 2)
           ;; We get a specificty score of 3, indicating we matched on the
           ;; text/html rather than the preceeding text/*
           1)))

  ;; TODO: Test charsets

  ;; TODO: Test encodings

  )

;; "A request without any Accept header
;; field implies that the user agent

            {:content-type (mime/string->media-type "text/html")})
           [(float 1.0) 3 0 (float 1.0)])))

  (testing "Basic match, with multiple options"
    (is (= (get-highest-content-type-quality
            {:headers {"accept" "image/png,text/html"}}
            {:content-type (mime/string->media-type "text/html")})
           [(float 1.0) 3 0 (float 1.0)])))

  (testing "Basic match, with multiple options and q values"
      (is (= (get-highest-content-type-quality
              {:headers {"accept" "image/png,text/html;q=0.9"}}
              {:content-type (mime/string->media-type "text/html;q=0.8")})
             [(float 0.9) 3 0 (float 0.8)])))

  (testing "Basic reject"
    (is (= (get-highest-content-type-quality
            {:headers {"accept" "text/html"}}
            {:content-type (mime/string->media-type "text/plain")})
           :rejected)))

  (testing "Basic reject with multiple options"
    (is (= (get-highest-content-type-quality
