|
Packit |
b00eeb |
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
Packit |
b00eeb |
/* unit-test-util.c: Test gck-util.c
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
Copyright (C) 2011 Collabora Ltd.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
The Gnome Keyring Library is free software; you can redistribute it and/or
|
|
Packit |
b00eeb |
modify it under the terms of the GNU Library General Public License as
|
|
Packit |
b00eeb |
published by the Free Software Foundation; either version 2 of the
|
|
Packit |
b00eeb |
License, or (at your option) any later version.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
The Gnome Keyring Library is distributed in the hope that it will be useful,
|
|
Packit |
b00eeb |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
b00eeb |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
b00eeb |
Library General Public License for more details.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
You should have received a copy of the GNU Library General Public
|
|
Packit |
b00eeb |
License along with the Gnome Library; see the file COPYING.LIB. If not,
|
|
Packit |
b00eeb |
see <http://www.gnu.org/licenses/>.
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
Author: Stef Walter <stefw@collabora.co.uk>
|
|
Packit |
b00eeb |
*/
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include "config.h"
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include "egg/egg-decimal.h"
|
|
Packit |
b00eeb |
#include "egg/egg-testing.h"
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
#include <stdlib.h>
|
|
Packit |
b00eeb |
#include <stdio.h>
|
|
Packit |
b00eeb |
#include <string.h>
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
typedef struct {
|
|
Packit |
b00eeb |
const gchar *decimal;
|
|
Packit |
b00eeb |
const gchar *result;
|
|
Packit |
b00eeb |
gsize length;
|
|
Packit |
b00eeb |
} TestDecimal;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static TestDecimal decimal_fixtures[] = {
|
|
Packit |
b00eeb |
{ "35", "\x23", 1 },
|
|
Packit |
b00eeb |
{ "2048", "\x08\x00", 2 },
|
|
Packit |
b00eeb |
{ "209328042309", "\x30\xBC\xEC\x71\x45", 5 },
|
|
Packit |
b00eeb |
{ "0002048", "\x08\x00", 2 },
|
|
Packit |
b00eeb |
{ "20480000", "\x01\x38\x80\x00", 4 },
|
|
Packit |
b00eeb |
{ "2521368004379664277055118629334750468402260732427135194366161280379"
|
|
Packit |
b00eeb |
"6661942758264006541602516197962800670706891657576953487072507942596"
|
|
Packit |
b00eeb |
"6374424122494538738176144081024494339591946626053519298721214406983"
|
|
Packit |
b00eeb |
"3606711407748948613853344896472022957466922483835202523097287025430"
|
|
Packit |
b00eeb |
"5078987427716449092979306938082113263545271808186244259338032237756"
|
|
Packit |
b00eeb |
"9175402872261192563172038927792670653714043622677577357160052045893"
|
|
Packit |
b00eeb |
"9513984477743817388078699536715866468499111753894230211101792648120"
|
|
Packit |
b00eeb |
"1128688482121549927434503046858485918719606735307033123916744787670"
|
|
Packit |
b00eeb |
"4316000505177621722934283063062034258685067324811300901286708201589"
|
|
Packit |
b00eeb |
"59867993533757",
|
|
Packit |
b00eeb |
"\xC7\xBB\x16\xF4\xB8\x04\x24\x0F\xFC\xC2\xA7\xAF\x8C\x6E\x67\xE1\x16"
|
|
Packit |
b00eeb |
"\x7F\xEB\xFA\x7F\xAA\x9D\xFD\x7C\xF2\x75\xB8\xA5\x1F\x27\x35\xF2\xD4"
|
|
Packit |
b00eeb |
"\x9D\x78\xFB\xF6\x5C\xED\x10\xB4\xE4\x32\x58\x2D\xC9\x1E\x86\x54\xF7"
|
|
Packit |
b00eeb |
"\x89\x7F\x03\x84\x68\x32\x76\xA9\xA7\x97\xC3\xA3\x6F\x7A\x46\x85\x43"
|
|
Packit |
b00eeb |
"\x5E\x14\x4D\x47\x01\x81\x06\xE5\xC0\x61\xD7\xC8\x7C\x9B\xE1\x9D\x84"
|
|
Packit |
b00eeb |
"\x87\x75\x77\x80\x0E\xAE\x91\xB1\x05\x12\xDE\x92\xF2\x98\x84\x1F\x43"
|
|
Packit |
b00eeb |
"\xD4\xC4\x57\x77\x95\xC5\xE6\x82\xEE\xEA\x0A\xB3\xDD\x8C\x44\x45\x9A"
|
|
Packit |
b00eeb |
"\x12\xAC\xF9\xC2\x22\xA1\x3F\x03\x31\xDD\x84\xF7\x75\x51\xE0\xFA\x24"
|
|
Packit |
b00eeb |
"\x8E\x6F\xE9\x58\x4C\xA3\x42\x73\xB9\x5E\x2F\x0D\xCC\xDC\x22\x8A\x48"
|
|
Packit |
b00eeb |
"\x75\x4A\x76\xA2\x9D\x03\xBA\x5F\xC8\x57\xB5\x1F\x5C\x85\x7E\x8C\x0F"
|
|
Packit |
b00eeb |
"\xF2\x73\xDA\x96\x67\x7C\xC6\x4D\x54\x2C\x45\x63\xD1\xA6\x7F\xF1\xA0"
|
|
Packit |
b00eeb |
"\x1F\x3F\x9E\xDF\xF3\x7F\x24\x3D\x6E\xB8\xF7\x4C\xC8\xA7\x27\x95\xA1"
|
|
Packit |
b00eeb |
"\xDA\x8F\x98\x32\x32\x1B\x7D\xB6\x1B\xFC\x8D\x73\x7C\xD1\x48\x99\xD0"
|
|
Packit |
b00eeb |
"\xAC\x7C\xF1\x5B\x95\xA5\xFE\xD8\x12\x57\x5C\x7A\x6B\xC5\x5C\x7D\x92"
|
|
Packit |
b00eeb |
"\xB1\x91\x88\x36\x58\x19\x30\x67\x2D\x73\xF3\x5A\xA6\x31\xC4\x5C\x2D"
|
|
Packit |
b00eeb |
"\x3D"
|
|
Packit |
b00eeb |
, 256 }
|
|
Packit |
b00eeb |
};
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static const gchar *decimal_failures[] = {
|
|
Packit |
b00eeb |
"-35",
|
|
Packit |
b00eeb |
"abcd",
|
|
Packit |
b00eeb |
" 3 33",
|
|
Packit |
b00eeb |
};
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static void
|
|
Packit |
b00eeb |
test_decode_success (gconstpointer data)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
const TestDecimal *fixture = data;
|
|
Packit |
b00eeb |
guchar *decoded;
|
|
Packit |
b00eeb |
gsize n_decoded;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
decoded = egg_decimal_decode (fixture->decimal, -1, &n_decoded);
|
|
Packit |
b00eeb |
egg_assert_cmpmem (fixture->result, fixture->length, ==, decoded, n_decoded);
|
|
Packit |
b00eeb |
g_free (decoded);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
static void
|
|
Packit |
b00eeb |
test_decode_failure (gconstpointer data)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
const gchar *failure = data;
|
|
Packit |
b00eeb |
guchar *decoded;
|
|
Packit |
b00eeb |
gsize n_decoded;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
decoded = egg_decimal_decode (failure, -1, &n_decoded);
|
|
Packit |
b00eeb |
g_assert (decoded == NULL);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
int
|
|
Packit |
b00eeb |
main (int argc, char **argv)
|
|
Packit |
b00eeb |
{
|
|
Packit |
b00eeb |
gchar *name;
|
|
Packit |
b00eeb |
gchar *decimal;
|
|
Packit |
b00eeb |
const gchar *suffix;
|
|
Packit |
b00eeb |
guint i;
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
g_test_init (&argc, &argv, NULL);
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
for (i = 0; i < G_N_ELEMENTS (decimal_fixtures); i++) {
|
|
Packit |
b00eeb |
/* Ellipsize long numbers in test names */
|
|
Packit |
b00eeb |
decimal = g_strndup (decimal_fixtures[i].decimal, 41);
|
|
Packit |
b00eeb |
if (strlen (decimal) == 41) {
|
|
Packit |
b00eeb |
decimal[40] = 0;
|
|
Packit |
b00eeb |
suffix = "_long";
|
|
Packit |
b00eeb |
} else {
|
|
Packit |
b00eeb |
suffix = "";
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
name = g_strdup_printf ("/decimal/decode-success/%s%s", decimal, suffix);
|
|
Packit |
b00eeb |
g_test_add_data_func (name, &decimal_fixtures[i], test_decode_success);
|
|
Packit |
b00eeb |
g_free (name);
|
|
Packit |
b00eeb |
g_free (decimal);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
for (i = 0; i < G_N_ELEMENTS (decimal_failures); i++) {
|
|
Packit |
b00eeb |
name = g_strdup_printf ("/decimal/decode-failure/%s", decimal_failures[i]);
|
|
Packit |
b00eeb |
g_strcanon (name, "abcdefghijklmnopqrstuvwxyz-_/0123456789", '_');
|
|
Packit |
b00eeb |
g_test_add_data_func (name, decimal_failures[i], test_decode_failure);
|
|
Packit |
b00eeb |
g_free (name);
|
|
Packit |
b00eeb |
}
|
|
Packit |
b00eeb |
|
|
Packit |
b00eeb |
return g_test_run ();
|
|
Packit |
b00eeb |
}
|