     assert "666F6F626172" == encode16("foobar")
     assert "A1B2C3D4E5F67891" == encode16(<<161, 178, 195, 212, 229, 246, 120, 145>>)
 
-    assert "a1b2c3d4e5f67891" == encode16(<<161, 178, 195, 212, 229, 246, 120, 145>>, case: :lower)
+    assert "a1b2c3d4e5f67891" ==
+             encode16(<<161, 178, 195, 212, 229, 246, 120, 145>>, case: :lower)
   end
 
   test "decode16/1" do

    assert {:ok, "foobar"} == decode16("666F6F626172")
    assert {:ok, <<161, 178, 195, 212, 229, 246, 120, 145>>} == decode16("A1B2C3D4E5F67891")

    assert {:ok, <<161, 178, 195, 212, 229, 246, 120, 145>>} == decode16("a1b2c3d4e5f67891", case: :lower)
    assert {:ok, <<161, 178, 195, 212, 229, 246, 120, 145>>} == decode16("a1B2c3D4e5F67891", case: :mixed)
  end

  test "decode16!/1" do

  end

  test "encode then decode is identity" do
    for {encode, decode} <- [
          {&encode16/2, &decode16!/2},
          {&encode32/2, &decode32!/2},
          {&hex_encode32/2, &hex_decode32!/2},
          {&encode64/2, &decode64!/2},
          {&url_encode64/2, &url_decode64!/2}
        ],
        encode_case <- [:upper, :lower],
        decode_case <- [:upper, :lower, :mixed],
        encode_case == decode_case or decode_case == :mixed,
        pad? <- [true, false],
        len <- 0..256 do
      data =
