     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

  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 =

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

    assert <<161, 178, 195, 212, 229, 246, 120, 145>> ==
             decode16!("a1b2c3d4e5f67891", case: :lower)

    assert <<161, 178, 195, 212, 229, 246, 120, 145>> ==
             decode16!("a1B2c3D4e5F67891", case: :mixed)
  end

  test "decode16/1 errors on non-alphabet digit" do
