Full test of eina_convert.

SVN revision: 35694
This commit is contained in:
Cedric BAIL 2008-08-27 14:14:42 +00:00
parent 9824a1a86c
commit 604a020f15
2 changed files with 47 additions and 5 deletions

View File

@ -163,7 +163,7 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
if (strncmp(str, "0x", 2))
{
eina_error_set(EINA_ERROR_CONVERT_0X_NOT_FOUND);
EINA_ERROR_PDBG("'0x' not found in '%s'", src);
EINA_ERROR_PDBG("'0x' not found in '%s'\n", src);
return EINA_FALSE;
}
@ -184,9 +184,6 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
mantisse <<= 4;
mantisse += HEXA_TO_INT(*str);
}
str++;
length--; if (length <= 0) goto on_length_error;
}
if (sign < 0) mantisse = -mantisse;
@ -194,7 +191,7 @@ eina_convert_atod(const char *src, int length, long long *m, long *e)
if (*str != 'p')
{
eina_error_set(EINA_ERROR_CONVERT_P_NOT_FOUND);
EINA_ERROR_PDBG("'p' not found in '%s'", src);
EINA_ERROR_PDBG("'p' not found in '%s'\n", src);
return EINA_FALSE;
}
sign = +1;

View File

@ -18,6 +18,8 @@
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <float.h>
#include "eina_convert.h"
#include "eina_suite.h"
@ -52,8 +54,51 @@ START_TEST(eina_convert_simple)
}
END_TEST
#define EET_TEST_DOUBLE0 123.45689
#define EET_TEST_DOUBLE1 1.0
#define EET_TEST_DOUBLE2 0.25
#define EET_TEST_DOUBLE3 0.0001234
#define EET_TEST_DOUBLE4 123456789.9876543210
static void
_eina_convert_check(double test, int length)
{
char tmp[128];
long long int m = 0;
long e = 0;
double r;
fail_if(eina_convert_dtoa(test, tmp) != length);
fail_if(eina_convert_atod(tmp, 128, &m, &e) != EINA_TRUE);
r = ldexp((double)m, e);
fail_if(fabs(r - test) > DBL_MIN);
}
START_TEST(eina_convert_double)
{
long long int m = 0;
long e = 0;
eina_convert_init();
_eina_convert_check(EET_TEST_DOUBLE0, 20);
_eina_convert_check(-EET_TEST_DOUBLE0, 21);
_eina_convert_check(EET_TEST_DOUBLE1, 6);
_eina_convert_check(EET_TEST_DOUBLE2, 6);
_eina_convert_check(EET_TEST_DOUBLE3, 21);
_eina_convert_check(EET_TEST_DOUBLE4, 21);
fail_if(eina_convert_atod("ah ah ah", 8, &m, &e) != EINA_FALSE);
fail_if(eina_convert_atod("0xjo", 8, &m, &e) != EINA_FALSE);
fail_if(eina_convert_atod("0xp", 8, &m, &e) != EINA_FALSE);
eina_convert_shutdown();
}
END_TEST
void
eina_test_convert(TCase *tc)
{
tcase_add_test(tc, eina_convert_simple);
tcase_add_test(tc, eina_convert_double);
}