git.fiddlerwoaroof.com
Raw Blame History
(in-package :cl-user)
(defpackage cl-yaml-test.scalar
  (:use :cl :fiveam)
  (:export :scalar)
  (:documentation "Scalar parsing tests."))
(in-package :cl-yaml-test.scalar)

;;; Macros

(defmacro scalar-equal (string value)
  `(is
    (equal (yaml.scalar:parse-scalar ,string)
           ,value)))

;;; Tests

(def-suite scalar
  :description "YAML scalar parsing tests.")
(in-suite scalar)

(test special-constants
  ;; Null
  (scalar-equal "null" nil)
  (scalar-equal "Null" nil)
  (scalar-equal "NULL" nil)
  (scalar-equal "~" nil)
  ;; Boolean
  (scalar-equal "true" t)
  (scalar-equal "True" t)
  (scalar-equal "TRUE" t)
  (scalar-equal "false" nil)
  (scalar-equal "False" nil)
  (scalar-equal "FALSE" nil))

(test integers
  (scalar-equal "123" 123)
  (scalar-equal "012345" 12345)
  (scalar-equal "-555" -555)
  (scalar-equal "0x25" 37))

(test floats
  (scalar-equal "1.234" 1.234)
  (scalar-equal "1e5" 1e5))

(test special-floats
  (scalar-equal ".nan" :NaN)
  (scalar-equal ".NaN" :NaN)
  (scalar-equal ".NAN" :NaN)
  (scalar-equal ".inf" :+Inf)
  (scalar-equal ".Inf" :+Inf)
  (scalar-equal ".INF" :+Inf)
  (scalar-equal "-.inf" :-Inf)
  (scalar-equal "-.Inf" :-Inf)
  (scalar-equal "-.INF" :-Inf))