aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/gleam/bit_array_test.gleam60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/gleam/bit_array_test.gleam b/test/gleam/bit_array_test.gleam
index 7095205..903b0c8 100644
--- a/test/gleam/bit_array_test.gleam
+++ b/test/gleam/bit_array_test.gleam
@@ -219,3 +219,63 @@ pub fn decode64_crash_regression_1_test() {
|> bit_array.base64_decode()
|> should.equal(Error(Nil))
}
+
+pub fn base16_test() {
+ bit_array.base16_encode(<<"":utf8>>)
+ |> should.equal("")
+
+ bit_array.base16_encode(<<"f":utf8>>)
+ |> should.equal("66")
+
+ bit_array.base16_encode(<<"fo":utf8>>)
+ |> should.equal("666F")
+
+ bit_array.base16_encode(<<"foo":utf8>>)
+ |> should.equal("666F6F")
+
+ bit_array.base16_encode(<<"foob":utf8>>)
+ |> should.equal("666F6F62")
+
+ bit_array.base16_encode(<<"fooba":utf8>>)
+ |> should.equal("666F6F6261")
+
+ bit_array.base16_encode(<<"foobar":utf8>>)
+ |> should.equal("666F6F626172")
+
+ bit_array.base16_encode(<<161, 178, 195, 212, 229, 246, 120, 145>>)
+ |> should.equal("A1B2C3D4E5F67891")
+}
+
+pub fn base16_decode_test() {
+ bit_array.base16_decode("")
+ |> should.equal(Ok(<<>>))
+
+ bit_array.base16_decode("66")
+ |> should.equal(Ok(<<"f":utf8>>))
+
+ bit_array.base16_decode("666F")
+ |> should.equal(Ok(<<"fo":utf8>>))
+
+ bit_array.base16_decode("666F6F")
+ |> should.equal(Ok(<<"foo":utf8>>))
+
+ bit_array.base16_decode("666F6F62")
+ |> should.equal(Ok(<<"foob":utf8>>))
+
+ bit_array.base16_decode("666F6F6261")
+ |> should.equal(Ok(<<"fooba":utf8>>))
+
+ bit_array.base16_decode("666F6F626172")
+ |> should.equal(Ok(<<"foobar":utf8>>))
+
+ bit_array.base16_decode("A1B2C3D4E5F67891")
+ |> should.equal(Ok(<<161, 178, 195, 212, 229, 246, 120, 145>>))
+
+ // Not a hex string
+ bit_array.base16_decode("?")
+ |> should.equal(Error(Nil))
+
+ // Lowercase hex
+ bit_array.base16_decode("a1b2c3d4e5f67891")
+ |> should.equal(Ok(<<161, 178, 195, 212, 229, 246, 120, 145>>))
+}