mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-11 03:46:17 +01:00
base64: Add tests for incremental decoding with very small block size
At the moment, sizes 1-3 are commented out since they fail, but a future patch will fix that. https://bugzilla.gnome.org/show_bug.cgi?id=694843
This commit is contained in:
parent
f641699299
commit
27b19cee1b
@ -332,6 +332,48 @@ test_base64_encode_decode (void)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
test_base64_decode_smallblock (gconstpointer blocksize_p)
|
||||
{
|
||||
const guint blocksize = GPOINTER_TO_UINT (blocksize_p);
|
||||
guint i;
|
||||
|
||||
for (i = 0; ok_100_encode_strs[i]; i++)
|
||||
{
|
||||
const char *str = ok_100_encode_strs[i];
|
||||
const char *p;
|
||||
gsize len = strlen (str);
|
||||
gint state = 0;
|
||||
guint save = 0;
|
||||
guchar *decoded;
|
||||
gsize decoded_size = 0;
|
||||
guchar *decoded_atonce;
|
||||
gsize decoded_atonce_size = 0;
|
||||
|
||||
decoded = g_malloc (len / 4 * 3 + 3);
|
||||
|
||||
p = str;
|
||||
while (len > 0)
|
||||
{
|
||||
int chunk_len = MIN (blocksize, len);
|
||||
gsize size = g_base64_decode_step (p, chunk_len,
|
||||
decoded + decoded_size,
|
||||
&state, &save);
|
||||
decoded_size += size;
|
||||
len -= chunk_len;
|
||||
p += chunk_len;
|
||||
}
|
||||
|
||||
decoded_atonce = g_base64_decode (str, &decoded_atonce_size);
|
||||
|
||||
g_assert_cmpint (decoded_size, ==, decoded_atonce_size);
|
||||
g_assert (memcmp (decoded, decoded_atonce, decoded_size) == 0);
|
||||
|
||||
g_free (decoded);
|
||||
g_free (decoded_atonce);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
@ -366,5 +408,16 @@ main (int argc, char *argv[])
|
||||
g_test_add_func ("/base64/decode-inplace", test_base64_decode_inplace);
|
||||
g_test_add_func ("/base64/encode-decode", test_base64_encode_decode);
|
||||
|
||||
/*
|
||||
g_test_add_data_func ("/base64/incremental/smallblock/1", GINT_TO_POINTER(1),
|
||||
test_base64_decode_smallblock);
|
||||
g_test_add_data_func ("/base64/incremental/smallblock/2", GINT_TO_POINTER(2),
|
||||
test_base64_decode_smallblock);
|
||||
g_test_add_data_func ("/base64/incremental/smallblock/3", GINT_TO_POINTER(3),
|
||||
test_base64_decode_smallblock);
|
||||
*/
|
||||
g_test_add_data_func ("/base64/incremental/smallblock/4", GINT_TO_POINTER(4),
|
||||
test_base64_decode_smallblock);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user