Refactor strings (avoid using dynamically allocated memory)
Refactored strings functions to make them use supplied string instead of allocating new ones. Additionally, split String/Int.c into several files to avoid define mess that was present before.
This commit is contained in:
@@ -13,16 +13,14 @@ static int compareString(double value,
|
||||
int precision,
|
||||
const char *ref)
|
||||
{
|
||||
char str[2000];
|
||||
int result;
|
||||
char *str;
|
||||
|
||||
str = BH_StringFromDouble(value, format, precision);
|
||||
BH_VERIFY(BH_StringFromDouble(str, 2000, value, format, precision, NULL) == BH_OK);
|
||||
result = strcmp(str, ref);
|
||||
if (result)
|
||||
printf("Value: %.17g\tReference: %s\tGot: %s\n", value, ref, str);
|
||||
|
||||
BH_StringFree(str);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -31,15 +29,13 @@ static int roundtripString(double value,
|
||||
int format)
|
||||
{
|
||||
double result;
|
||||
char *str;
|
||||
char str[2000];
|
||||
|
||||
str = BH_StringFromDouble(value, format, -1);
|
||||
BH_VERIFY(BH_StringFromDouble(str, 2000, value, format, -1, NULL) == BH_OK);
|
||||
result = BH_StringToDouble(str, NULL);
|
||||
if (result != value)
|
||||
printf("Value: %.17g\tGot: %.17g\tStr: %s\n", value, result, str);
|
||||
|
||||
BH_StringFree(str);
|
||||
|
||||
return result != value;
|
||||
}
|
||||
|
||||
@@ -267,7 +263,7 @@ BH_UNIT_TEST(ShortestRoundTrip)
|
||||
|
||||
BH_UNIT_TEST(Parity)
|
||||
{
|
||||
char buffer[16], output[2000];
|
||||
char buffer[2000], output[2000];
|
||||
uint64_t frac;
|
||||
double value;
|
||||
int i, j, k;
|
||||
@@ -285,18 +281,15 @@ BH_UNIT_TEST(Parity)
|
||||
|
||||
for (k = 0; k < 18; k++)
|
||||
{
|
||||
char *str;
|
||||
|
||||
sprintf(buffer, "%%.%dg", k);
|
||||
str = BH_StringFromDouble(value, 'g', k);
|
||||
sprintf(output, buffer, value);
|
||||
BH_VERIFY(BH_StringFromDouble(buffer, 2000, value, 'g', k, NULL) == BH_OK);
|
||||
|
||||
if (strcmp(str, output))
|
||||
if (strcmp(buffer, output))
|
||||
{
|
||||
printf("(%.17g) (%d) %s vs %s\n", value, k, str, output);
|
||||
printf("(%.17g) (%d) %s vs %s\n", value, k, buffer, output);
|
||||
BH_FAIL("Strings aren't equal");
|
||||
}
|
||||
BH_StringFree(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,48 +4,40 @@
|
||||
|
||||
BH_UNIT_TEST(Int8)
|
||||
{
|
||||
char *str;
|
||||
char str[9];
|
||||
size_t size;
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8s(-13, 16));
|
||||
BH_VERIFY(BH_StringFromInt8s(str, 9, -13, 16, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8s(str, &size, 16) == -13);
|
||||
BH_VERIFY(size == 2);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8s(-13, 10));
|
||||
BH_VERIFY(BH_StringFromInt8s(str, 9, -13, 10, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8s(str, &size, 10) == -13);
|
||||
BH_VERIFY(size == 3);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8s(-13, 8));
|
||||
BH_VERIFY(BH_StringFromInt8s(str, 9, -13, 8, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8s(str, &size, 8) == -13);
|
||||
BH_VERIFY(size == 3);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8s(-13, 2));
|
||||
BH_VERIFY(BH_StringFromInt8s(str, 9, -13, 2, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8s(str, &size, 2) == -13);
|
||||
BH_VERIFY(size == 5);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8u(200, 16));
|
||||
BH_VERIFY(BH_StringFromInt8u(str, 9, 200, 16, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8u(str, &size, 16) == 200);
|
||||
BH_VERIFY(size == 2);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8u(200, 10));
|
||||
BH_VERIFY(BH_StringFromInt8u(str, 9, 200, 10, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8u(str, &size, 10) == 200);
|
||||
BH_VERIFY(size == 3);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8u(200, 8));
|
||||
BH_VERIFY(BH_StringFromInt8u(str, 9, 200, 8, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8u(str, &size, 8) == 200);
|
||||
BH_VERIFY(size == 3);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt8u(200, 2));
|
||||
BH_VERIFY(BH_StringFromInt8u(str, 9, 200, 2, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt8u(str, &size, 2) == 200);
|
||||
BH_VERIFY(size == 8);
|
||||
BH_StringFree(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -53,48 +45,40 @@ BH_UNIT_TEST(Int8)
|
||||
|
||||
BH_UNIT_TEST(Int16)
|
||||
{
|
||||
char *str;
|
||||
char str[17];
|
||||
size_t size;
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16s(-1234, 16));
|
||||
BH_VERIFY(BH_StringFromInt16s(str, 17, -1234, 16, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16s(str, &size, 16) == -1234);
|
||||
BH_VERIFY(size == 4);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16s(-1234, 10));
|
||||
BH_VERIFY(BH_StringFromInt16s(str, 17, -1234, 10, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16s(str, &size, 10) == -1234);
|
||||
BH_VERIFY(size == 5);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16s(-1234, 8));
|
||||
BH_VERIFY(BH_StringFromInt16s(str, 17, -1234, 8, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16s(str, &size, 8) == -1234);
|
||||
BH_VERIFY(size == 5);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16s(-1234, 2));
|
||||
BH_VERIFY(BH_StringFromInt16s(str, 17, -1234, 2, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16s(str, &size, 2) == -1234);
|
||||
BH_VERIFY(size == 12);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16u(43210, 16));
|
||||
BH_VERIFY(BH_StringFromInt16u(str, 17, 43210, 16, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16u(str, &size, 16) == 43210);
|
||||
BH_VERIFY(size == 4);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16u(43210, 10));
|
||||
BH_VERIFY(BH_StringFromInt16u(str, 17, 43210, 10, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16u(str, &size, 10) == 43210);
|
||||
BH_VERIFY(size == 5);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16u(43210, 8));
|
||||
BH_VERIFY(BH_StringFromInt16u(str, 17, 43210, 8, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16u(str, &size, 8) == 43210);
|
||||
BH_VERIFY(size == 6);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt16u(43210, 2));
|
||||
BH_VERIFY(BH_StringFromInt16u(str, 17, 43210, 2, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt16u(str, &size, 2) == 43210);
|
||||
BH_VERIFY(size == 16);
|
||||
BH_StringFree(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -102,48 +86,40 @@ BH_UNIT_TEST(Int16)
|
||||
|
||||
BH_UNIT_TEST(Int32)
|
||||
{
|
||||
char *str;
|
||||
char str[33];
|
||||
size_t size;
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32s(-1234567890l, 16));
|
||||
BH_VERIFY(BH_StringFromInt32s(str, 33, -1234567890l, 16, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32s(str, &size, 16) == -1234567890l);
|
||||
BH_VERIFY(size == 9);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32s(-1234567890l, 10));
|
||||
BH_VERIFY(BH_StringFromInt32s(str, 33, -1234567890l, 10, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32s(str, &size, 10) == -1234567890l);
|
||||
BH_VERIFY(size == 11);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32s(-1234567890l, 8));
|
||||
BH_VERIFY(BH_StringFromInt32s(str, 33, -1234567890l, 8, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32s(str, &size, 8) == -1234567890l);
|
||||
BH_VERIFY(size == 12);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32s(-1234567890l, 2));
|
||||
BH_VERIFY(BH_StringFromInt32s(str, 33, -1234567890l, 2, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32s(str, &size, 2) == -1234567890l);
|
||||
BH_VERIFY(size == 32);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32u(3456789012ul, 16));
|
||||
BH_VERIFY(BH_StringFromInt32u(str, 33, 3456789012ul, 16, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32u(str, &size, 16) == 3456789012ul);
|
||||
BH_VERIFY(size == 8);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32u(3456789012ul, 10));
|
||||
BH_VERIFY(BH_StringFromInt32u(str, 33, 3456789012ul, 10, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32u(str, &size, 10) == 3456789012ul);
|
||||
BH_VERIFY(size == 10);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32u(3456789012ul, 8));
|
||||
BH_VERIFY(BH_StringFromInt32u(str, 33, 3456789012ul, 8, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32u(str, &size, 8) == 3456789012ul);
|
||||
BH_VERIFY(size == 11);
|
||||
BH_StringFree(str);
|
||||
|
||||
BH_VERIFY(str = BH_StringFromInt32u(3456789012ul, 2));
|
||||
BH_VERIFY(BH_StringFromInt32u(str, 33, 3456789012ul, 2, NULL) == BH_OK);
|
||||
BH_VERIFY(BH_StringToInt32u(str, &size, 2) == 3456789012ul);
|
||||
BH_VERIFY(size == 32);
|
||||
BH_StringFree(str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user