git.fiddlerwoaroof.com
t/emitter2.lisp
90e18416
 (in-package :cl-user)
 (defpackage cl-yaml-test.emitter2
   (:use :cl :fiveam)
   (:export :emitter2)
   (:documentation "Emitter tests - libyaml-based emitter."))
 (in-package :cl-yaml-test.emitter2)
 
 (defmacro define-test-cases ((name) &rest pairs)
   `(test ,name
      ,@(loop for (form string) in pairs collecting
             `(is (equal (yaml.emitter:with-emitter-to-string (emitter)
                           (yaml.emitter:emit-stream (emitter)
                             (yaml.emitter:emit-document (emitter :implicit t)
                               (yaml.emitter:emit-scalar emitter ,form))))
                         ,(format nil "~a~%...~%" string)))))) ;; Document end marker
                                                               ;; is libyaml behavior
 
 (defun test-emit-sequence (sequence style)
   (yaml.emitter:with-emitter-to-string (emitter)
     (yaml.emitter:emit-stream (emitter)
       (yaml.emitter:emit-document (emitter :implicit t)
         (yaml.emitter:emit-sequence (emitter :style style)
           (mapcar (lambda (element) (yaml.emitter:emit-scalar emitter element))
                   sequence))))))
 
 (defun test-emit-mapping (mapping style)
   (yaml.emitter:with-emitter-to-string (emitter)
     (yaml.emitter:emit-stream (emitter)
       (yaml.emitter:emit-document (emitter :implicit t)
         (yaml.emitter:emit-mapping (emitter :style style)
           (mapcar (lambda (pair)
                     (yaml.emitter:emit-scalar emitter (car pair))
                     (yaml.emitter:emit-scalar emitter (cdr pair)))
                   mapping))))))
 
 (def-suite emitter2
     :description "YAML libyaml-based emitter tests.")
 (in-suite emitter2)
 
 (define-test-cases (boolean)
   (t "true")
   (nil "false"))
 
 (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"))
 
 (test flow-sequence
   (is (equal (test-emit-sequence '(1 "a" 3.14f0 3.14d0) :flow-sequence-style)
              "[1, a, 3.14, 3.14]
 ")))
 
 (test block-sequence
   (is (equal (test-emit-sequence '(1 "a" 3.14f0 3.14d0) :block-sequence-style)
              "- 1
 - a
 - 3.14
 - 3.14
 ")))
 
 (test flow-mapping
   (is (equal (test-emit-mapping '(("integer" . 1) ("string" . "test") ("bool" . nil))
                                 :flow-mapping-style)
              "{integer: 1, string: test, bool: false}
 ")))
 
 (test block-mapping
   (is (equal (test-emit-mapping '(("integer" . 1) ("string" . "test") ("bool" . nil))
                                 :block-mapping-style)
              "integer: 1
 string: test
 bool: false
 ")))