elisp_spec.fnl

Branches > main > latest > files / nvim / pack / plugins / opt / conjure / fnl / conjure-spec / remote / transport / elisp_spec.fnl

(local {: describe : it} (require :plenary.busted))
(local assert (require :luassert.assert))
(local elisp (require :conjure.remote.transport.elisp))

(describe "remote.transport.elisp"
  (fn []
    (describe "reads"
      (fn []
        (it "strings and symbols"
          (fn []
            (assert.are.equals nil (elisp.read ""))
            (assert.are.equals "foo" (elisp.read "\"foo\""))
            (assert.are.equals "foo" (elisp.read "  \"foo\"  "))
            (assert.are.equals "foo" (elisp.read ":foo"))
            (assert.are.equals "foo" (elisp.read "   :foo    "))
            (assert.are.equals "bar" (elisp.read "   :foo \"hi\" \n :bar  "))))
        (it "numbers"
          (fn []
            (assert.are.equals 0 (elisp.read "0"))
            (assert.are.equals 1 (elisp.read " 1  "))
            (assert.are.equals 0.5 (elisp.read "  0.5"))
            (assert.are.equals 30 (elisp.read "   30 "))
            (assert.are.equals 30.2 (elisp.read "   30.2 "))
            (assert.are.equals 0.2 (elisp.read ".2 "))
            (assert.are.equals -0.3 (elisp.read "   -.3 "))
            (assert.are.equals -20.25 (elisp.read "   -20.25 "))))
        (it "lists"
          (fn []
            (assert.same [] (elisp.read "()"))
            (assert.same [ [] [] ] (elisp.read "(()())"))
            (assert.same [1 [2 3 4] 5 [6 :seven] :eight 9] (elisp.read "(1 (2 3 4) 5 (6 \"seven\") :eight 9)"))
            (assert.same [1 2 3] (elisp.read "(1 2 3)"))))
        (it "nested forms"
          (fn []
            (assert.same
              ["Class" ": " ["value" "clojure.lang.PersistentArrayMap" 0] ["newline"]
               "Contents: " ["newline"]
               "  " ["value" "a" 1] " = " ["value" "1" 2] ["newline"]
               "  " ["value" "b" 3] " = " ["value" "2" 4] ["newline"]]
              (elisp.read "(\"Class\" \": \" (:value \"clojure.lang.PersistentArrayMap\" 0) (:newline) \"Contents: \" (:newline) \"  \" (:value \"a\" 1) \" = \" (:value \"1\" 2) (:newline) \"  \" (:value \"b\" 3) \" = \" (:value \"2\" 4) (:newline))"))))))))