diff options
author | Louis Pilfold <louis@lpil.uk> | 2022-01-01 16:03:32 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-01-01 16:03:32 +0000 |
commit | d3d0ff192ebb29827c63e28f3aa8ef101b575efe (patch) | |
tree | bd1c64fcab00c9b0f0684b54f30e0da90a159207 | |
parent | cdcf2fffcc49e0d5d24708cb54169a96fa356054 (diff) | |
download | gleam_json-d3d0ff192ebb29827c63e28f3aa8ef101b575efe.tar.gz gleam_json-d3d0ff192ebb29827c63e28f3aa8ef101b575efe.zip |
Test string builder generation
-rw-r--r-- | src/gleam/json.gleam | 9 | ||||
-rw-r--r-- | test/gleam_json_test.gleam | 34 |
2 files changed, 23 insertions, 20 deletions
diff --git a/src/gleam/json.gleam b/src/gleam/json.gleam index 43c8dda..b509d7c 100644 --- a/src/gleam/json.gleam +++ b/src/gleam/json.gleam @@ -13,22 +13,18 @@ pub type DecodeError { } // TODO: document -// TODO: test pub external fn decode(String) -> Result(Dynamic, DecodeError) = "thoas" "decode" // TODO: document -// TODO: test pub external fn to_string(Json) -> String = "gleam_json_ffi" "json_to_string" // TODO: document -// TODO: test -external fn to_string_builder(Json) -> String = - "thoas_encode" "encode" +pub external fn to_string_builder(Json) -> StringBuilder = + "gleam_json_ffi" "json_to_iodata" // TODO: document -// TODO: test pub external fn string(input: String) -> Json = "thoas_encode" "string" @@ -38,7 +34,6 @@ pub external fn bool(input: Bool) -> Json = "thoas_encode" "boolean" // TODO: document -// TODO: test pub external fn int(input: Int) -> Json = "thoas_encode" "integer" diff --git a/test/gleam_json_test.gleam b/test/gleam_json_test.gleam index 80849e3..7617ebb 100644 --- a/test/gleam_json_test.gleam +++ b/test/gleam_json_test.gleam @@ -1,6 +1,7 @@ import gleam/dynamic -import gleam/json +import gleam/json.{Json} import gleam/option.{None, Some} +import gleam/string_builder import gleam/result import gleeunit import gleeunit/should @@ -27,34 +28,41 @@ pub fn decode_unexpected_byte_test() { pub fn encode_string_test() { json.string("hello") - |> json.to_string() - |> should.equal("\"hello\"") + |> should_encode("\"hello\"") } pub fn encode_null_test() { json.null() - |> json.to_string() - |> should.equal("null") + |> should_encode("null") } pub fn encode_object_test() { json.object([#("foo", json.int(5))]) - |> json.to_string() - |> should.equal("{\"foo\":5}") + |> should_encode("{\"foo\":5}") } pub fn encode_list_test() { json.list([json.int(5), json.int(6)]) - |> json.to_string() - |> should.equal("[5,6]") + |> should_encode("[5,6]") } -pub fn encode_nullable_test() { +pub fn encode_nullable_some_test() { json.nullable(Some(5), json.int) - |> json.to_string() - |> should.equal("5") + |> should_encode("5") +} +pub fn encode_nullable_none_test() { json.nullable(None, json.int) + |> should_encode("null") +} + +fn should_encode(data: Json, expected: String) { + data |> json.to_string() - |> should.equal("null") + |> should.equal(expected) + + data + |> json.to_string_builder + |> string_builder.to_string + |> should.equal(json.to_string(data)) } |