diff options
author | Richard Viney <richard.viney@gmail.com> | 2024-11-11 23:00:37 +1300 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-11-11 10:56:27 +0000 |
commit | c982361167325650ff4546d62c52f6b3feed24ab (patch) | |
tree | bea400e693e3449cf5e654a5d73fab23f7458812 /test | |
parent | 978afd77909904c87dd0306f9905586bfd5c1cc2 (diff) | |
download | gleam_stdlib-c982361167325650ff4546d62c52f6b3feed24ab.tar.gz gleam_stdlib-c982361167325650ff4546d62c52f6b3feed24ab.zip |
Add `bit_size()` and `starts_with()` to `gleam/bit_array`
Diffstat (limited to 'test')
-rw-r--r-- | test/gleam/bit_array_test.gleam | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/test/gleam/bit_array_test.gleam b/test/gleam/bit_array_test.gleam index a563c15..555c61a 100644 --- a/test/gleam/bit_array_test.gleam +++ b/test/gleam/bit_array_test.gleam @@ -4,6 +4,37 @@ import gleam/result import gleam/should import gleam/string +pub fn bit_size_test() { + bit_array.bit_size(<<>>) + |> should.equal(0) + + bit_array.bit_size(<<0>>) + |> should.equal(8) + + bit_array.bit_size(<<-1:32>>) + |> should.equal(32) + + bit_array.bit_size(<<0:-8>>) + |> should.equal(0) +} + +// This test is target specific since it's using non byte-aligned BitArrays +// and those are not supported on the JavaScript target. +@target(erlang) +pub fn bit_size_erlang_only_test() { + bit_array.bit_size(<<0:1>>) + |> should.equal(1) + + bit_array.bit_size(<<7:3>>) + |> should.equal(3) + + bit_array.bit_size(<<-1:190>>) + |> should.equal(190) + + bit_array.bit_size(<<0:-1>>) + |> should.equal(0) +} + pub fn byte_size_test() { bit_array.byte_size(bit_array.from_string("hello")) |> should.equal(5) @@ -379,3 +410,52 @@ pub fn compare_different_sizes_test() { bit_array.compare(<<0:2>>, <<0:1>>) |> should.equal(order.Gt) } + +pub fn starts_with_test() { + bit_array.starts_with(<<>>, <<>>) + |> should.be_true + + bit_array.starts_with(<<0>>, <<>>) + |> should.be_true + + bit_array.starts_with(<<>>, <<0>>) + |> should.be_false + + bit_array.starts_with(<<0, 1, 2>>, <<0>>) + |> should.be_true + + bit_array.starts_with(<<0, 1, 2>>, <<0, 1>>) + |> should.be_true + + bit_array.starts_with(<<0, 1, 2>>, <<0, 1, 2>>) + |> should.be_true + + bit_array.starts_with(<<0, 1, 2>>, <<0, 1, 2, 3>>) + |> should.be_false + + bit_array.starts_with(<<0, 1, 2>>, <<1>>) + |> should.be_false +} + +// This test is target specific since it's using non byte-aligned BitArrays +// and those are not supported on the JavaScript target. +@target(erlang) +pub fn starts_with_erlang_only_test() { + bit_array.starts_with(<<1:1>>, <<1:1>>) + |> should.be_true + + bit_array.starts_with(<<1:1>>, <<>>) + |> should.be_true + + bit_array.starts_with(<<1:1>>, <<1:2>>) + |> should.be_false + + bit_array.starts_with(<<-1:127>>, <<-1:33>>) + |> should.be_true + + bit_array.starts_with(<<-1:127>>, <<-1:128>>) + |> should.be_false + + bit_array.starts_with(<<0:127>>, <<1:127>>) + |> should.be_false +} |