summaryrefslogtreecommitdiff
path: root/gnulib-tests/test-mbsalign.c
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2013-02-16 14:42:43 +0000
committerIgor Pashev <pashev.igor@gmail.com>2013-02-16 14:42:43 +0000
commit974ab3dd887985e3aa347f3c6521f819296396a0 (patch)
tree802fb82c9f8ec8acd7a60fba7824c2df6f0073ad /gnulib-tests/test-mbsalign.c
parent8e7ba70eba02f88d4f3ba12e07ab9c7bdf32240a (diff)
downloadcoreutils-upstream/8.21.tar.gz
Imported Upstream version 8.21upstream/8.21
Diffstat (limited to 'gnulib-tests/test-mbsalign.c')
-rw-r--r--gnulib-tests/test-mbsalign.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/gnulib-tests/test-mbsalign.c b/gnulib-tests/test-mbsalign.c
index 86aa8773..d3e92daa 100644
--- a/gnulib-tests/test-mbsalign.c
+++ b/gnulib-tests/test-mbsalign.c
@@ -1,5 +1,5 @@
/* Test that mbsalign works as advertised.
- Copyright (C) 2010-2012 Free Software Foundation, Inc.
+ Copyright (C) 2010-2013 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
@@ -38,6 +38,35 @@ main (void)
width = 4;
n = mbsalign ("es", dest, sizeof dest, &width, MBS_ALIGN_CENTER, 0);
ASSERT (*dest == ' ' && *(dest + n - 1) == ' ');
+ ASSERT (n == 4);
+
+ /* Test center alignment, with no trailing padding. */
+ width = 4;
+ n = mbsalign ("es", dest, sizeof dest, &width, MBS_ALIGN_CENTER,
+ MBA_NO_RIGHT_PAD);
+ ASSERT (n == 3);
+ ASSERT (*dest == ' ' && *(dest + n - 1) == 's');
+
+ /* Test left alignment, with no trailing padding. (truncate only). */
+ width = 4;
+ n = mbsalign ("es", dest, sizeof dest, &width, MBS_ALIGN_LEFT,
+ MBA_NO_RIGHT_PAD);
+ ASSERT (n == 2);
+ ASSERT (*dest == 'e' && *(dest + n - 1) == 's');
+
+ /* Test center alignment, with no padding. (truncate only). */
+ width = 4;
+ n = mbsalign ("es", dest, sizeof dest, &width, MBS_ALIGN_CENTER,
+ MBA_NO_LEFT_PAD | MBA_NO_RIGHT_PAD);
+ ASSERT (n == 2);
+ ASSERT (*dest == 'e' && *(dest + n - 1) == 's');
+
+ /* Test center alignment, with no left padding. (may be useful for RTL?) */
+ width = 4;
+ n = mbsalign ("es", dest, sizeof dest, &width, MBS_ALIGN_CENTER,
+ MBA_NO_LEFT_PAD);
+ ASSERT (n == 3);
+ ASSERT (*dest == 'e' && *(dest + n - 1) == ' ');
if (setlocale (LC_ALL, "en_US.UTF8"))
{
@@ -55,16 +84,19 @@ main (void)
/* Test multibyte center alignment. */
width = 4;
n = mbsalign ("és", dest, sizeof dest, &width, MBS_ALIGN_CENTER, 0);
+ ASSERT (n == 5);
ASSERT (*dest == ' ' && *(dest + n - 1) == ' ');
/* Test multibyte left alignment. */
width = 4;
n = mbsalign ("és", dest, sizeof dest, &width, MBS_ALIGN_LEFT, 0);
+ ASSERT (n == 5);
ASSERT (*(dest + n - 1) == ' ' && *(dest + n - 2) == ' ');
/* Test multibyte right alignment. */
width = 4;
n = mbsalign ("és", dest, sizeof dest, &width, MBS_ALIGN_RIGHT, 0);
+ ASSERT (n == 5);
ASSERT (*(dest) == ' ' && *(dest + 1) == ' ');
/* multibyte multicell truncation. */
@@ -94,6 +126,12 @@ main (void)
n = mbsalign ("t\tés" /* 6 including NUL */ , dest, sizeof dest,
&width, MBS_ALIGN_LEFT, 0);
ASSERT (n == 7);
+
+ /* Test forced unibyte truncation. */
+ width = 4;
+ n = mbsalign ("t\tés", dest, sizeof dest, &width, MBS_ALIGN_LEFT,
+ MBA_UNIBYTE_ONLY);
+ ASSERT (n == 4);
}
return 0;