summaryrefslogtreecommitdiff
path: root/tests/uniconv/test-u8-conv-to-enc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/uniconv/test-u8-conv-to-enc.c')
-rw-r--r--tests/uniconv/test-u8-conv-to-enc.c213
1 files changed, 100 insertions, 113 deletions
diff --git a/tests/uniconv/test-u8-conv-to-enc.c b/tests/uniconv/test-u8-conv-to-enc.c
index 271fb051..d758e9b3 100644
--- a/tests/uniconv/test-u8-conv-to-enc.c
+++ b/tests/uniconv/test-u8-conv-to-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion from UTF-8 to legacy encodings.
- Copyright (C) 2007-2009 Free Software Foundation, Inc.
+ Copyright (C) 2007-2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,24 +21,11 @@
#include "uniconv.h"
#include <errno.h>
-#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "unistr.h"
-
-#define SIZEOF(array) (sizeof (array) / sizeof (array[0]))
-#define ASSERT(expr) \
- do \
- { \
- if (!(expr)) \
- { \
- fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
- fflush (stderr); \
- abort (); \
- } \
- } \
- while (0)
+#include "macros.h"
/* Magic number for detecting bounds violations. */
#define MAGIC 0x1983EFF1
@@ -71,33 +58,33 @@ main ()
static const uint8_t input[] = "\303\204rger mit b\303\266sen B\303\274bchen ohne Augenma\303\237";
static const char expected[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
for (o = 0; o < 2; o++)
- {
- size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
- size_t length;
- char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
- input, u8_strlen (input),
- offsets,
- NULL, &length);
- ASSERT (result != NULL);
- ASSERT (length == strlen (expected));
- ASSERT (memcmp (result, expected, length) == 0);
- if (o)
- {
- for (i = 0; i < 41; i++)
- ASSERT (offsets[i] == (i < 1 ? i :
- i == 1 ? (size_t)(-1) :
- i < 13 ? i - 1 :
- i == 13 ? (size_t)(-1) :
- i < 20 ? i - 2 :
- i == 20 ? (size_t)(-1) :
- i < 40 ? i - 3 :
- i == 40 ? (size_t)(-1) :
- i - 4));
- ASSERT (offsets[41] == MAGIC);
- free (offsets);
- }
- free (result);
- }
+ {
+ size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
+ size_t length;
+ char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
+ input, u8_strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 41; i++)
+ ASSERT (offsets[i] == (i < 1 ? i :
+ i == 1 ? (size_t)(-1) :
+ i < 13 ? i - 1 :
+ i == 13 ? (size_t)(-1) :
+ i < 20 ? i - 2 :
+ i == 20 ? (size_t)(-1) :
+ i < 40 ? i - 3 :
+ i == 40 ? (size_t)(-1) :
+ i - 4));
+ ASSERT (offsets[41] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
}
/* Test conversion from UTF-8 to ISO-8859-1 with EILSEQ. */
@@ -106,60 +93,60 @@ main ()
enum iconv_ilseq_handler handler = handlers[h];
static const uint8_t input[] = "Rafa\305\202 Maszkowski"; /* RafaƂ Maszkowski */
for (o = 0; o < 2; o++)
- {
- size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
- size_t length = 0xdead;
- char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
- input, u8_strlen (input),
- offsets,
- NULL, &length);
- switch (handler)
- {
- case iconveh_error:
- ASSERT (result == NULL);
- ASSERT (errno == EILSEQ);
- ASSERT (length == 0xdead);
- break;
- case iconveh_question_mark:
- {
- static const char expected[] = "Rafa? Maszkowski";
- static const char expected_translit[] = "Rafal Maszkowski";
- ASSERT (result != NULL);
- ASSERT (length == strlen (expected));
- ASSERT (memcmp (result, expected, length) == 0
- || memcmp (result, expected_translit, length) == 0);
- if (o)
- {
- for (i = 0; i < 17; i++)
- ASSERT (offsets[i] == (i < 5 ? i :
- i == 5 ? (size_t)(-1) :
- i - 1));
- ASSERT (offsets[17] == MAGIC);
- free (offsets);
- }
- free (result);
- }
- break;
- case iconveh_escape_sequence:
- {
- static const char expected[] = "Rafa\\u0142 Maszkowski";
- ASSERT (result != NULL);
- ASSERT (length == strlen (expected));
- ASSERT (memcmp (result, expected, length) == 0);
- if (o)
- {
- for (i = 0; i < 17; i++)
- ASSERT (offsets[i] == (i < 5 ? i :
- i == 5 ? (size_t)(-1) :
- i + 4));
- ASSERT (offsets[17] == MAGIC);
- free (offsets);
- }
- free (result);
- }
- break;
- }
- }
+ {
+ size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
+ size_t length = 0xdead;
+ char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
+ input, u8_strlen (input),
+ offsets,
+ NULL, &length);
+ switch (handler)
+ {
+ case iconveh_error:
+ ASSERT (result == NULL);
+ ASSERT (errno == EILSEQ);
+ ASSERT (length == 0xdead);
+ break;
+ case iconveh_question_mark:
+ {
+ static const char expected[] = "Rafa? Maszkowski";
+ static const char expected_translit[] = "Rafal Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0
+ || memcmp (result, expected_translit, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i - 1));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ case iconveh_escape_sequence:
+ {
+ static const char expected[] = "Rafa\\u0142 Maszkowski";
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (expected));
+ ASSERT (memcmp (result, expected, length) == 0);
+ if (o)
+ {
+ for (i = 0; i < 17; i++)
+ ASSERT (offsets[i] == (i < 5 ? i :
+ i == 5 ? (size_t)(-1) :
+ i + 4));
+ ASSERT (offsets[17] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
+ break;
+ }
+ }
}
/* Test conversion from UTF-8 to ISO-8859-1 with EINVAL. */
@@ -168,23 +155,23 @@ main ()
enum iconv_ilseq_handler handler = handlers[h];
static const uint8_t input[] = "\342";
for (o = 0; o < 2; o++)
- {
- size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
- size_t length;
- char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
- input, u8_strlen (input),
- offsets,
- NULL, &length);
- ASSERT (result != NULL);
- ASSERT (length == strlen (""));
- if (o)
- {
- ASSERT (offsets[0] == 0);
- ASSERT (offsets[1] == MAGIC);
- free (offsets);
- }
- free (result);
- }
+ {
+ size_t *offsets = (o ? new_offsets (u8_strlen (input)) : NULL);
+ size_t length;
+ char *result = u8_conv_to_encoding ("ISO-8859-1", handler,
+ input, u8_strlen (input),
+ offsets,
+ NULL, &length);
+ ASSERT (result != NULL);
+ ASSERT (length == strlen (""));
+ if (o)
+ {
+ ASSERT (offsets[0] == 0);
+ ASSERT (offsets[1] == MAGIC);
+ free (offsets);
+ }
+ free (result);
+ }
}
#endif