X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-wcwidth.c;h=f6f97924bba5d8298d79b8af8ed5cec379bd515a;hb=a4f38ec6be21630e9640cf8ead742c3a8d733fc2;hp=4412ecc2d8a936402c49401c1127351339a55b56;hpb=7d084f9eeb5b975b556170a7c7da8db9ecc9282c;p=gnulib.git diff --git a/tests/test-wcwidth.c b/tests/test-wcwidth.c index 4412ecc2d..f6f97924b 100644 --- a/tests/test-wcwidth.c +++ b/tests/test-wcwidth.c @@ -1,10 +1,10 @@ /* Test of wcwidth() function. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2010 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + 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 - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -12,8 +12,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* Written by Bruno Haible , 2007. */ @@ -21,20 +20,14 @@ #include +#include "signature.h" +SIGNATURE_CHECK (wcwidth, int, (wchar_t)); + #include -#include -#include - -#define ASSERT(expr) \ - do \ - { \ - if (!(expr)) \ - { \ - fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \ - abort (); \ - } \ - } \ - while (0) +#include + +#include "localcharset.h" +#include "macros.h" int main () @@ -46,27 +39,33 @@ main () ASSERT (wcwidth (wc) == 1); /* Switch to an UTF-8 locale. */ - if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL) + if (setlocale (LC_ALL, "fr_FR.UTF-8") != NULL + /* Check whether it's really an UTF-8 locale. + On OpenBSD 4.0, the setlocale call succeeds only for the LC_CTYPE + category and therefore returns "C/fr_FR.UTF-8/C/C/C/C", but the + LC_CTYPE category is effectively set to an ASCII LC_CTYPE category; + in particular, locale_charset() returns "ASCII". */ + && strcmp (locale_charset (), "UTF-8") == 0) { /* Test width of ASCII characters. */ for (wc = 0x20; wc < 0x7F; wc++) - ASSERT (wcwidth (wc) == 1); + ASSERT (wcwidth (wc) == 1); /* Test width of some non-spacing characters. */ ASSERT (wcwidth (0x0301) == 0); ASSERT (wcwidth (0x05B0) == 0); /* Test width of some format control characters. */ - ASSERT (wcwidth (0x200E) == 0); - ASSERT (wcwidth (0x2060) == 0); + ASSERT (wcwidth (0x200E) <= 0); + ASSERT (wcwidth (0x2060) <= 0); #if 0 /* wchar_t may be only 16 bits. */ - ASSERT (wcwidth (0xE0001) == 0); - ASSERT (wcwidth (0xE0044) == 0); + ASSERT (wcwidth (0xE0001) <= 0); + ASSERT (wcwidth (0xE0044) <= 0); #endif /* Test width of some zero width characters. */ ASSERT (wcwidth (0x200B) == 0); - ASSERT (wcwidth (0xFEFF) == 0); + ASSERT (wcwidth (0xFEFF) <= 0); /* Test width of some CJK characters. */ ASSERT (wcwidth (0x3000) == 2);