39 lines
1.3 KiB
Fennel
39 lines
1.3 KiB
Fennel
(import-macros {: is-matching : describe : it} :test)
|
|
(local is (require :test.is))
|
|
|
|
(local stringio (require :test.pl.stringio))
|
|
(local json-rpc (require :fennel-ls.json-rpc))
|
|
|
|
(describe "json-rpc"
|
|
(describe "read"
|
|
(it "parses incoming messages"
|
|
(let [out (stringio.open
|
|
"Content-Length: 29\r\n\r\n{\"my json content\":\"is cool\"}")]
|
|
(is.same
|
|
{"my json content" "is cool"}
|
|
(json-rpc.read out))))
|
|
|
|
(it "can read multiple incoming messages"
|
|
(let [out (stringio.open
|
|
"Content-Length: 29\r\n\r\n{\"my json content\":\"is cool\"}Content-Length: 29\r\n\r\n{\"my json content\":\"is neat\"}")]
|
|
(is.same
|
|
{"my json content" "is cool"}
|
|
(json-rpc.read out))
|
|
(is.same
|
|
{"my json content" "is neat"}
|
|
(json-rpc.read out))
|
|
(is.same
|
|
nil
|
|
(json-rpc.read out))))
|
|
|
|
(it "can report compiler errors"
|
|
(let [out (stringio.open "Content-Length: 9\r\n\r\n{{{{{}}}}")]
|
|
(is (= (type (json-rpc.read out)) :string)))))
|
|
|
|
(describe "write"
|
|
(it "serializes outgoing messages"
|
|
(let [in (stringio.create)]
|
|
(json-rpc.write in {"my json content" "is cool"})
|
|
(is.same "Content-Length: 29\r\n\r\n{\"my json content\":\"is cool\"}"
|
|
(in:value))))))
|