aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGiacomo Cavalieri <giacomo.cavalieri@icloud.com>2024-11-12 18:54:54 +0100
committerLouis Pilfold <louis@lpil.uk>2024-11-15 15:22:34 +0000
commit5fced08f04dd7c2dad7c644b1333926a9126d7c9 (patch)
treeea6cca57245fb6022f433ac7b9886a3979ebe2c9 /test
parent32f29ae21f8466f431ac92a264e9b6482bc63c1c (diff)
downloadgleam_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.gleam94
-rw-r--r--test/gleam/string_tree_test.gleam149
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")
+}