gnucash/src/backend/file/test/test-string-converters.c

116 lines
2.7 KiB
C
Raw Normal View History

#include "config.h"
#include <stdlib.h>
#include "sixtp-dom-parsers.h"
#include "sixtp-dom-generators.h"
#include "gnc-engine-util.h"
#include "test-stuff.h"
#include "test-engine-stuff.h"
#include "test-file-stuff.h"
#include "gnc-date.h"
#include "gnc-numeric.h"
#include "guid.h"
static void
test_binary()
{
int i;
for(i = 0; i < 20; i++)
{
bin_data *test_data1;
void *test_data2;
gint64 test_data2_len;
gchar *converted;
test_data1 = get_random_binary_data();
converted = binary_to_string(test_data1->data, test_data1->len);
if(!converted)
{
failure_args("binary_data", __FILE__, __LINE__, "binary_to_string returned NULL");
continue;
}
if(!string_to_binary(converted, &test_data2, &test_data2_len))
{
failure_args("binary_data", __FILE__, __LINE__,
"string_to_binary returned FALSE with data:\n%s\n",
converted);
continue;
}
if(test_data2_len != test_data1->len)
{
failure_args("binary_data", __FILE__, __LINE__,
"lengths don't match: %lld vs %d",
(long long int) test_data2_len, test_data1->len);
continue;
}
{
int j;
guchar *d1 = test_data1->data;
guchar *d2 = (guchar*)test_data2;
for(j = 0; j < test_data2_len; j++)
{
if(d1[j] != d2[j])
{
failure_args("binary_data", __FILE__, __LINE__,
"data doesn't match at point %d.\n%d vs %d",
i, d1[j], d2[j]);
continue;
}
}
}
success("binary_data");
}
}
static char *test_strings[] = {
"FooBar",
"<Ugly crap>",
"Something with a & in it",
"Ugly(*!&@#$NTHOEAUTF\"ntaheu09.h,. \n\t",
"\n\t\n\t",
NULL
};
static void
test_string_converters(void)
{
char *mark;
int i;
for(i = 0, mark = test_strings[i]; mark; i++, mark = test_strings[i])
{
xmlNodePtr test_node;
gchar *backout;
test_node = text_to_dom_tree("test-string", mark);
backout = dom_tree_to_text(test_node);
do_test_args(
safe_strcmp(backout, mark) == 0,
"string converting", __FILE__, __LINE__, "with string %s", mark);
}
}
int
main(int argc, char **argv)
{
test_binary();
fflush(stdout);
test_string_converters();
fflush(stdout);
print_test_results();
exit(get_rv());
}