aboutsummaryrefslogtreecommitdiff
path: root/test/gleam_json_test.gleam
blob: 768a9940dc8bad7c817d0e94d138311f3a70d3a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import gleam/dynamic
import gleam/json
import gleam/option.{None, Some}
import gleam/result
import gleeunit
import gleeunit/should

pub fn main() {
  gleeunit.main()
}

pub fn decode_test() {
  json.decode("5")
  |> result.map(dynamic.from)
  |> should.equal(Ok(dynamic.from(5)))

  json.decode(".")
  |> result.nil_error()
  |> should.equal(Error(Nil))
}

pub fn encode_string_test() {
  json.string("hello")
  |> json.to_string()
  |> should.equal("\"hello\"")
}

pub fn encode_null_test() {
  json.null()
  |> json.to_string()
  |> should.equal("null")
}

pub fn encode_object_test() {
  json.object([#("foo", json.int(5))])
  |> json.to_string()
  |> should.equal("{\"foo\":5}")
}

pub fn encode_nullable_test() {
  json.nullable(Some(5), json.int)
  |> json.to_string()
  |> should.equal("5")

  json.nullable(None, json.int)
  |> json.to_string()
  |> should.equal("null")
}