anchor.diff:    (is (equal (list 0 2 4 6)
                (seq :start 0 :step 2 :end 6))
         "seq works correctly with START, STEP, and END"))
  +
  +(test seq-range
  +  "Test the `seq-range' function"
  +  ;; FIX
  +  )
   
   ;;; conversions (FIX: add more)
   ;; NOTE: Many of the conversion functions are affected by floating point rounding errors.
  
positive.code: ;;; utility
  
  (test gete
    (is (equal (alexandria:iota *max-pattern-yield-length*)
               (gete (next-upto-n (pbind :foo (pseries))) :foo))
        "gete returns correct results"))
  
  (test string-keyword
    (is (eq :foo
            (cl-patterns::string-keyword "foo"))
        "string-keyword correctly converts strings to keywords"))
  
  (test nth-wrap
    (is (= 3
           (cl-patterns::nth-wrap 7 (list 0 1 2 3)))
        "nth-wrap returns correct results"))
  
  (test normalized-sum
    (is (= 1
           (reduce #'+ (cl-patterns::normalized-sum (list 0 1 2 3 4 5))))
        "normalized-sum returns a list whose elements add up to 1"))
  
  (test index-of-greater-than
    (is (= 4
           (cl-patterns::index-of-greater-than 3 (list 1 2 3 3 4 4)))
        "index-of-greater-than returns correct results"))
  
  (test keys
    "Test `keys' and its various methods"
  
negative.code:                 :collect (random-range 0 1.0)))
        "random-range returns floats when two arguments are provided but only one is a float"))
  
  (test exponential-random-range
    "Test the `exponential-random-range' function"
    ;; FIX
    )
  
  (test seq
    "Test the `seq' function"
    (is (equal (list 0 1 2 3)
               (seq :start 0 :end 3))
        "seq works correctly when START is lower than END")
  