diff options
author | Giacomo Cavalieri <giacomo.cavalieri@icloud.com> | 2024-11-12 18:54:54 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-11-15 15:22:34 +0000 |
commit | 5fced08f04dd7c2dad7c644b1333926a9126d7c9 (patch) | |
tree | ea6cca57245fb6022f433ac7b9886a3979ebe2c9 /test | |
parent | 32f29ae21f8466f431ac92a264e9b6482bc63c1c (diff) | |
download | gleam_stdlib-5fced08f04dd7c2dad7c644b1333926a9126d7c9.tar.gz gleam_stdlib-5fced08f04dd7c2dad7c644b1333926a9126d7c9.zip |
add string and bytes tree modules
Diffstat (limited to 'test')
-rw-r--r-- | test/gleam/bytes_tree_test.gleam | 94 | ||||
-rw-r--r-- | test/gleam/string_tree_test.gleam | 149 |
2 files changed, 243 insertions, 0 deletions
diff --git a/test/gleam/bytes_tree_test.gleam b/test/gleam/bytes_tree_test.gleam new file mode 100644 index 0000000..1f7245a --- /dev/null +++ b/test/gleam/bytes_tree_test.gleam @@ -0,0 +1,94 @@ +import gleam/bytes_tree +import gleam/should +import gleam/string_tree + +pub fn tree_test() { + let data = + bytes_tree.from_bit_array(<<1>>) + |> bytes_tree.append(<<2>>) + |> bytes_tree.append(<<3>>) + |> bytes_tree.prepend(<<0>>) + + data + |> bytes_tree.to_bit_array + |> should.equal(<<0, 1, 2, 3>>) + + data + |> bytes_tree.byte_size + |> should.equal(4) +} + +pub fn tree_with_strings_test() { + let data = + bytes_tree.from_bit_array(<<1>>) + |> bytes_tree.append_string("2") + |> bytes_tree.append_string("3") + |> bytes_tree.prepend_string("0") + + data + |> bytes_tree.to_bit_array + |> should.equal(<<"0":utf8, 1, "2":utf8, "3":utf8>>) + + data + |> bytes_tree.byte_size + |> should.equal(4) +} + +pub fn tree_with_trees_test() { + let data = + bytes_tree.from_bit_array(<<1>>) + |> bytes_tree.append_tree(bytes_tree.from_bit_array(<<2>>)) + |> bytes_tree.append_tree(bytes_tree.from_bit_array(<<3>>)) + |> bytes_tree.prepend_tree(bytes_tree.from_bit_array(<<0>>)) + + data + |> bytes_tree.to_bit_array + |> should.equal(<<0, 1, 2, 3>>) + + data + |> bytes_tree.byte_size + |> should.equal(4) +} + +pub fn concat_test() { + [ + bytes_tree.from_bit_array(<<1, 2>>), + bytes_tree.from_bit_array(<<3, 4>>), + bytes_tree.from_bit_array(<<5, 6>>), + ] + |> bytes_tree.concat + |> bytes_tree.to_bit_array + |> should.equal(<<1, 2, 3, 4, 5, 6>>) +} + +pub fn concat_bit_arrays_test() { + bytes_tree.concat_bit_arrays([<<"h":utf8>>, <<"e":utf8>>, <<"y":utf8>>]) + |> bytes_tree.to_bit_array + |> should.equal(<<"hey":utf8>>) +} + +pub fn from_bit_array() { + // Regression test: no additional modification of the tree + bytes_tree.from_bit_array(<<>>) + |> bytes_tree.to_bit_array + |> should.equal(<<>>) +} + +pub fn from_string_test() { + // Regression test: no additional modification of the tree + bytes_tree.from_string("") + |> bytes_tree.to_bit_array + |> should.equal(<<>>) +} + +pub fn new_test() { + bytes_tree.new() + |> bytes_tree.to_bit_array + |> should.equal(<<>>) +} + +pub fn from_string_tree_test() { + string_tree.from_string("hello") + |> bytes_tree.from_string_tree + |> should.equal(bytes_tree.from_string("hello")) +} diff --git a/test/gleam/string_tree_test.gleam b/test/gleam/string_tree_test.gleam new file mode 100644 index 0000000..f2f14e3 --- /dev/null +++ b/test/gleam/string_tree_test.gleam @@ -0,0 +1,149 @@ +import gleam/should +import gleam/string_tree + +pub fn string_tree_test() { + let data = + string_tree.from_string("ello") + |> string_tree.append(",") + |> string_tree.append(" world!") + |> string_tree.prepend("H") + + data + |> string_tree.to_string + |> should.equal("Hello, world!") + + data + |> string_tree.byte_size + |> should.equal(13) + + let data = + string_tree.from_string("ello") + |> string_tree.append_tree(string_tree.from_string(",")) + |> string_tree.append_tree( + string_tree.concat([ + string_tree.from_string(" wo"), + string_tree.from_string("rld!"), + ]), + ) + |> string_tree.prepend_tree(string_tree.from_string("H")) + + data + |> string_tree.to_string + |> should.equal("Hello, world!") + + data + |> string_tree.byte_size + |> should.equal(13) +} + +pub fn reverse_test() { + "Ĺo͂řȩm̅" + |> string_tree.from_string + |> string_tree.reverse + |> string_tree.reverse + |> string_tree.to_string + |> should.equal("Ĺo͂řȩm̅") + + "Ĺo͂řȩm̅" + |> string_tree.from_string + |> string_tree.reverse + |> string_tree.to_string + |> should.equal("m̅ȩřo͂Ĺ") + + "👶🏿" + |> string_tree.from_string + |> string_tree.reverse + |> string_tree.reverse + |> string_tree.to_string + |> should.equal("👶🏿") + + "👶🏿" + |> string_tree.from_string + |> string_tree.reverse + |> string_tree.to_string + |> should.equal("👶🏿") +} + +pub fn lowercase_test() { + ["Gleam", "Gleam"] + |> string_tree.from_strings + |> string_tree.lowercase + |> string_tree.to_string + |> should.equal("gleamgleam") +} + +pub fn uppercase_test() { + ["Gleam", "Gleam"] + |> string_tree.from_strings + |> string_tree.uppercase + |> string_tree.to_string + |> should.equal("GLEAMGLEAM") +} + +pub fn split_test() { + "Gleam,Erlang,Elixir" + |> string_tree.from_string + |> string_tree.split(",") + |> should.equal([ + string_tree.from_string("Gleam"), + string_tree.from_string("Erlang"), + string_tree.from_string("Elixir"), + ]) + + ["Gleam, Erl", "ang,Elixir"] + |> string_tree.from_strings + |> string_tree.split(", ") + |> should.equal([ + string_tree.from_string("Gleam"), + string_tree.from_strings(["Erl", "ang,Elixir"]), + ]) +} + +pub fn is_equal_test() { + string_tree.from_string("12") + |> string_tree.is_equal(string_tree.from_strings(["1", "2"])) + |> should.be_true + + string_tree.from_string("12") + |> string_tree.is_equal(string_tree.from_string("12")) + |> should.be_true + + string_tree.from_string("12") + |> string_tree.is_equal(string_tree.from_string("2")) + |> should.be_false +} + +pub fn is_empty_test() { + string_tree.from_string("") + |> string_tree.is_empty + |> should.be_true + + string_tree.from_string("12") + |> string_tree.is_empty + |> should.be_false + + string_tree.from_strings([]) + |> string_tree.is_empty + |> should.be_true + + string_tree.from_strings(["", ""]) + |> string_tree.is_empty + |> should.be_true +} + +pub fn new_test() { + string_tree.new() + |> string_tree.to_string + |> should.equal("") +} + +pub fn join_test() { + [ + string_tree.from_string("Gleam"), + string_tree.from_string("Elixir"), + string_tree.from_string("Erlang"), + ] + |> string_tree.join(", ") + |> string_tree.to_string + |> should.equal("Gleam, Elixir, Erlang") +} |