git.fiddlerwoaroof.com
t/emitter.lisp
5a0596e0
 (in-package :cl-user)
 (defpackage cl-yaml-test.emitter
   (:use :cl :fiveam)
85d0b811
   (:import-from :alexandria
                 :alist-hash-table)
bb4f27b9
   (:export :emitter)
   (:documentation "Emitter tests."))
5a0596e0
 (in-package :cl-yaml-test.emitter)
 
 ;;; Macros
 
 (defmacro define-test-cases ((name) &rest pairs)
   `(test ,name
      ,@(loop for (form string) in pairs collecting
          `(is (equal (yaml.emitter:emit-to-string ,form)
                      ,string)))))
 
 ;;; Tests
 
 (def-suite emitter
   :description "YAML emitter tests.")
 (in-suite emitter)
 
 (define-test-cases (boolean)
   (t
    "true")
   (nil
    "false"))
c171905f
 
 (define-test-cases (integers)
   (1
    "1")
   (123
    "123")
   (+123
    "123")
   (-123
    "-123"))
 
 (define-test-cases (floats)
   (1.23
    "1.23")
   (6.62607e-34
    "6.62607e-34"))
942da252
 
 (define-test-cases (lists)
   ((list 1 2 3)
a796a9a6
    "[1, 2, 3]")
   ((vector 1 2 3)
942da252
    "[1, 2, 3]"))
0d0901cc
 
 (test hash-tables
   (let ((table (alexandria:alist-hash-table
                 (list (cons "a" 1)
                       (cons "b" 2)))))
     (is
      (equal (yaml:emit-to-string table)
3de4596d
             "{ \"b\": 2, \"a\": 1 }"))))
af1f1446
 
 (test toplevel-function
   (is
     (equal (yaml:emit-to-string 1)
5a1ebeb4
            "1"))
   (is
     (equal (with-output-to-string (stream)
              (yaml:emit 1 stream))
af1f1446
            "1")))