diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2013-02-16 14:42:43 +0000 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2013-02-16 14:42:43 +0000 |
commit | 974ab3dd887985e3aa347f3c6521f819296396a0 (patch) | |
tree | 802fb82c9f8ec8acd7a60fba7824c2df6f0073ad /gnulib-tests/test-mbsalign.c | |
parent | 8e7ba70eba02f88d4f3ba12e07ab9c7bdf32240a (diff) | |
download | coreutils-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.c | 40 |
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; |