[haiku-commits] r37421 - haiku/branches/developer/zooey/posix-locale/src/tests/system/libroot/posix

  • From: zooey@xxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 7 Jul 2010 22:42:45 +0200 (CEST)

Author: zooey
Date: 2010-07-07 22:42:45 +0200 (Wed, 07 Jul 2010)
New Revision: 37421
Changeset: http://dev.haiku-os.org/changeset/37421/haiku

Modified:
   
haiku/branches/developer/zooey/posix-locale/src/tests/system/libroot/posix/locale_test.cpp
Log:
* added tests for wctype functions

Modified: 
haiku/branches/developer/zooey/posix-locale/src/tests/system/libroot/posix/locale_test.cpp
===================================================================
--- 
haiku/branches/developer/zooey/posix-locale/src/tests/system/libroot/posix/locale_test.cpp
  2010-07-07 19:37:41 UTC (rev 37420)
+++ 
haiku/branches/developer/zooey/posix-locale/src/tests/system/libroot/posix/locale_test.cpp
  2010-07-07 20:42:45 UTC (rev 37421)
@@ -8,6 +8,8 @@
 #include <locale.h>
 #include <stdio.h>
 #include <time.h>
+//#include <wchar.h>
+#include <wctype.h>
 
 
 void
@@ -142,6 +144,74 @@
 }
 
 
+unsigned short
+determineFullClassInfo(int i)
+{
+       unsigned short classInfo = 0;
+
+       if (isblank(i))
+               classInfo |= _ISblank;
+       if (iscntrl(i))
+               classInfo |= _IScntrl;
+       if (ispunct(i))
+               classInfo |= _ISpunct;
+       if (isalnum(i))
+               classInfo |= _ISalnum;
+       if (isupper(i))
+               classInfo |= _ISupper;
+       if (islower(i))
+               classInfo |= _ISlower;
+       if (isalpha(i))
+               classInfo |= _ISalpha;
+       if (isdigit(i))
+               classInfo |= _ISdigit;
+       if (isxdigit(i))
+               classInfo |= _ISxdigit;
+       if (isspace(i))
+               classInfo |= _ISspace;
+       if (isprint(i))
+               classInfo |= _ISprint;
+       if (isgraph(i))
+               classInfo |= _ISgraph;
+
+       return classInfo;
+}
+
+
+unsigned short
+determineWideFullClassInfo(int i)
+{
+       unsigned short classInfo = 0;
+
+       if (iswblank(i))
+               classInfo |= _ISblank;
+       if (iswcntrl(i))
+               classInfo |= _IScntrl;
+       if (iswpunct(i))
+               classInfo |= _ISpunct;
+       if (iswalnum(i))
+               classInfo |= _ISalnum;
+       if (iswupper(i))
+               classInfo |= _ISupper;
+       if (iswlower(i))
+               classInfo |= _ISlower;
+       if (iswalpha(i))
+               classInfo |= _ISalpha;
+       if (iswdigit(i))
+               classInfo |= _ISdigit;
+       if (iswxdigit(i))
+               classInfo |= _ISxdigit;
+       if (iswspace(i))
+               classInfo |= _ISspace;
+       if (iswprint(i))
+               classInfo |= _ISprint;
+       if (iswgraph(i))
+               classInfo |= _ISgraph;
+
+       return classInfo;
+}
+
+
 void
 test_posix_ctype()
 {
@@ -254,31 +324,7 @@
        printf("ctype of POSIX locale\n");
        int problemCount = 0;
        for (int i = 0; i < 256; ++i) {
-               unsigned short classInfo = 0;
-               if (isblank(i))
-                       classInfo |= _ISblank;
-               if (iscntrl(i))
-                       classInfo |= _IScntrl;
-               if (ispunct(i))
-                       classInfo |= _ISpunct;
-               if (isalnum(i))
-                       classInfo |= _ISalnum;
-               if (isupper(i))
-                       classInfo |= _ISupper;
-               if (islower(i))
-                       classInfo |= _ISlower;
-               if (isalpha(i))
-                       classInfo |= _ISalpha;
-               if (isdigit(i))
-                       classInfo |= _ISdigit;
-               if (isxdigit(i))
-                       classInfo |= _ISxdigit;
-               if (isspace(i))
-                       classInfo |= _ISspace;
-               if (isprint(i))
-                       classInfo |= _ISprint;
-               if (isgraph(i))
-                       classInfo |= _ISgraph;
+               unsigned short classInfo = determineFullClassInfo(i);
 
                if (classInfo != classInfo_POSIX[i]) {
                        printf("\tPROBLEM: %d = %x (expected %x)\n", i, 
classInfo,
@@ -417,31 +463,7 @@
        printf("ctype of de_DE.ISO8859-1 locale\n");
        int problemCount = 0;
        for (int i = 0; i < 256; ++i) {
-               unsigned short classInfo = 0;
-               if (isblank(i))
-                       classInfo |= _ISblank;
-               if (iscntrl(i))
-                       classInfo |= _IScntrl;
-               if (ispunct(i))
-                       classInfo |= _ISpunct;
-               if (isalnum(i))
-                       classInfo |= _ISalnum;
-               if (isupper(i))
-                       classInfo |= _ISupper;
-               if (islower(i))
-                       classInfo |= _ISlower;
-               if (isalpha(i))
-                       classInfo |= _ISalpha;
-               if (isdigit(i))
-                       classInfo |= _ISdigit;
-               if (isxdigit(i))
-                       classInfo |= _ISxdigit;
-               if (isspace(i))
-                       classInfo |= _ISspace;
-               if (isprint(i))
-                       classInfo |= _ISprint;
-               if (isgraph(i))
-                       classInfo |= _ISgraph;
+               unsigned short classInfo = determineFullClassInfo(i);
 
                if (classInfo != classInfo_ISO8859_1[i]) {
                        printf("\tPROBLEM: %d = %x (expected %x)\n", i, 
classInfo,
@@ -580,31 +602,7 @@
        printf("ctype of de_DE.UTF-8 locale\n");
        int problemCount = 0;
        for (int i = 0; i < 256; ++i) {
-               unsigned short classInfo = 0;
-               if (isblank(i))
-                       classInfo |= _ISblank;
-               if (iscntrl(i))
-                       classInfo |= _IScntrl;
-               if (ispunct(i))
-                       classInfo |= _ISpunct;
-               if (isalnum(i))
-                       classInfo |= _ISalnum;
-               if (isupper(i))
-                       classInfo |= _ISupper;
-               if (islower(i))
-                       classInfo |= _ISlower;
-               if (isalpha(i))
-                       classInfo |= _ISalpha;
-               if (isdigit(i))
-                       classInfo |= _ISdigit;
-               if (isxdigit(i))
-                       classInfo |= _ISxdigit;
-               if (isspace(i))
-                       classInfo |= _ISspace;
-               if (isprint(i))
-                       classInfo |= _ISprint;
-               if (isgraph(i))
-                       classInfo |= _ISgraph;
+               unsigned short classInfo = determineFullClassInfo(i);
 
                if (classInfo != classInfo_UTF8[i]) {
                        printf("\tPROBLEM: %d = %x (expected %x)\n", i, 
classInfo,
@@ -640,6 +638,232 @@
 }
 
 
+void
+test_posix_wctype()
+{
+       const wchar_t* text = L"Hi there, how do you do? (äÜößáéúíó€'¤¹²$%#@) 
12";
+
+       const unsigned short int wc_POSIX[48] = {
+               0x48, 0x69, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
+               0x2c, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x64, 0x6f,
+               0x20, 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f, 0x3f,
+               0x20, 0x28, 0xe4, 0xdc, 0xf6, 0xdf, 0xe1, 0xe9,
+               0xfa, 0xed, 0xf3, 0x20ac, 0x27, 0xa4, 0xb9, 0xb2,
+               0x24, 0x25, 0x23, 0x40, 0x29, 0x20, 0x31, 0x32
+       };
+       const unsigned short int classInfo_POSIX[48] = {
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit,
+               _ISprint|_ISgraph|_ISpunct, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph|_ISpunct,
+               _ISspace|_ISprint|_ISblank, _ISprint|_ISgraph|_ISpunct, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph,
+               _ISprint|_ISgraph|_ISpunct, _ISprint|_ISgraph, 
_ISprint|_ISgraph, _ISprint|_ISgraph,
+               _ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, 
_ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
+               _ISpunct|_ISprint|_ISgraph, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit
+       };
+
+       setlocale(LC_CTYPE, "POSIX");
+       printf("wctype of POSIX locale\n");
+       int problemCount = 0;
+
+       wint_t wc = *text;
+       for (int i = 0; wc != 0; wc = *++text, ++i) {
+               unsigned short classInfo = determineWideFullClassInfo(wc);
+               if (wc != wc_POSIX[i]) {
+                       printf("\tPROBLEM: wc for char #%d = %x (expected 
%x)\n", i, wc,
+                               wc_POSIX[i]);
+                       problemCount++;
+               }
+
+               if (classInfo != classInfo_POSIX[i]) {
+                       printf("\tPROBLEM: classinfo for #%d = %x (expected 
%x)\n", i,
+                               classInfo, classInfo_POSIX[i]);
+                       problemCount++;
+               }
+       }
+       if (problemCount)
+               printf("\t%d problem(s) found!\n", problemCount);
+       else
+               printf("\tall fine\n");
+}
+
+
+void
+test_iso8859_1_wctype()
+{
+       const wchar_t* text = L"Hi there, how do you do? (äÜößáéúíó€'¤¹²$%#@) 
12";
+
+       const unsigned short int wc_ISO8859_1[48] = {
+               0x48, 0x69, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
+               0x2c, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x64, 0x6f,
+               0x20, 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f, 0x3f,
+               0x20, 0x28, 0xe4, 0xdc, 0xf6, 0xdf, 0xe1, 0xe9,
+               0xfa, 0xed, 0xf3, 0x20ac, 0x27, 0xa4, 0xb9, 0xb2,
+               0x24, 0x25, 0x23, 0x40, 0x29, 0x20, 0x31, 0x32
+       };
+       const unsigned short int classInfo_ISO8859_1[48] = {
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit,
+               _ISprint|_ISgraph|_ISpunct, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph|_ISpunct,
+               _ISspace|_ISprint|_ISblank, _ISprint|_ISgraph|_ISpunct, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph,
+               _ISprint|_ISgraph|_ISpunct, _ISprint|_ISgraph, 
_ISprint|_ISgraph, _ISprint|_ISgraph,
+               _ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, 
_ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
+               _ISpunct|_ISprint|_ISgraph, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit
+       };
+
+       setlocale(LC_CTYPE, "de_DE.ISO8859-1");
+       printf("wctype of de_DE.ISO8859-1 locale\n");
+       int problemCount = 0;
+
+       wint_t wc = *text;
+       for (int i = 0; wc != 0; wc = *++text, ++i) {
+               unsigned short classInfo = determineWideFullClassInfo(wc);
+               if (wc != wc_ISO8859_1[i]) {
+                       printf("\tPROBLEM: wc for char #%d = %x (expected 
%x)\n", i, wc,
+                               wc_ISO8859_1[i]);
+                       problemCount++;
+               }
+
+               if (classInfo != classInfo_ISO8859_1[i]) {
+                       printf("\tPROBLEM: classinfo for #%d = %x (expected 
%x)\n", i,
+                               classInfo, classInfo_ISO8859_1[i]);
+                       problemCount++;
+               }
+       }
+       if (problemCount)
+               printf("\t%d problem(s) found!\n", problemCount);
+       else
+               printf("\tall fine\n");
+}
+
+
+void
+test_iso8859_15_wctype()
+{
+       const wchar_t* text = L"Hi there, how do you do? (äÜößáéúíó€'¤¹²$%#@) 
12";
+
+       const unsigned short int wc_ISO8859_15[48] = {
+               0x48, 0x69, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
+               0x2c, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x64, 0x6f,
+               0x20, 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f, 0x3f,
+               0x20, 0x28, 0xe4, 0xdc, 0xf6, 0xdf, 0xe1, 0xe9,
+               0xfa, 0xed, 0xf3, 0x20ac, 0x27, 0xa4, 0xb9, 0xb2,
+               0x24, 0x25, 0x23, 0x40, 0x29, 0x20, 0x31, 0x32
+       };
+       const unsigned short int classInfo_ISO8859_15[48] = {
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit,
+               _ISprint|_ISgraph|_ISpunct, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph|_ISpunct,
+               _ISspace|_ISprint|_ISblank, _ISprint|_ISgraph|_ISpunct, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph,
+               _ISprint|_ISgraph|_ISpunct, _ISprint|_ISgraph, 
_ISprint|_ISgraph, _ISprint|_ISgraph,
+               _ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, 
_ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
+               _ISpunct|_ISprint|_ISgraph, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit
+       };
+
+       setlocale(LC_CTYPE, "de_DE.ISO8859-15");
+       printf("wctype of de_DE.ISO8859-15 locale\n");
+       int problemCount = 0;
+
+       wint_t wc = *text;
+       for (int i = 0; wc != 0; wc = *++text, ++i) {
+               unsigned short classInfo = determineWideFullClassInfo(wc);
+               if (wc != wc_ISO8859_15[i]) {
+                       printf("\tPROBLEM: wc for char #%d = %x (expected 
%x)\n", i, wc,
+                               wc_ISO8859_15[i]);
+                       problemCount++;
+               }
+
+               if (classInfo != classInfo_ISO8859_15[i]) {
+                       printf("\tPROBLEM: classinfo for #%d = %x (expected 
%x)\n", i,
+                               classInfo, classInfo_ISO8859_15[i]);
+                       problemCount++;
+               }
+       }
+       if (problemCount)
+               printf("\t%d problem(s) found!\n", problemCount);
+       else
+               printf("\tall fine\n");
+}
+
+
+void
+test_utf8_wctype()
+{
+       const wchar_t* text = L"Hi there, how do you do? (äÜößáéúíó€'¤¹²$%#@) 
12";
+
+       const unsigned short int wc_UTF8[48] = {
+               0x48, 0x69, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
+               0x2c, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x64, 0x6f,
+               0x20, 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f, 0x3f,
+               0x20, 0x28, 0xe4, 0xdc, 0xf6, 0xdf, 0xe1, 0xe9,
+               0xfa, 0xed, 0xf3, 0x20ac, 0x27, 0xa4, 0xb9, 0xb2,
+               0x24, 0x25, 0x23, 0x40, 0x29, 0x20, 0x31, 0x32
+       };
+       const unsigned short int classInfo_UTF8[48] = {
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit,
+               _ISprint|_ISgraph|_ISpunct, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower|_ISxdigit, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph|_ISpunct,
+               _ISspace|_ISprint|_ISblank, _ISprint|_ISgraph|_ISpunct, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISupper,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower,
+               _ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, 
_ISprint|_ISgraph|_ISalpha|_ISalnum|_ISlower, _ISprint|_ISgraph,
+               _ISprint|_ISgraph|_ISpunct, _ISprint|_ISgraph, 
_ISprint|_ISgraph, _ISprint|_ISgraph,
+               _ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, 
_ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
+               _ISpunct|_ISprint|_ISgraph, _ISspace|_ISprint|_ISblank, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit, 
_ISprint|_ISgraph|_ISalnum|_ISdigit|_ISxdigit
+       };
+
+       setlocale(LC_CTYPE, "de_DE.UTF-8");
+       printf("wctype of de_DE.UTF-8 locale\n");
+       int problemCount = 0;
+
+       wint_t wc = *text;
+       for (int i = 0; wc != 0; wc = *++text, ++i) {
+               unsigned short classInfo = determineWideFullClassInfo(wc);
+               if (wc != wc_UTF8[i]) {
+                       printf("\tPROBLEM: wc for char #%d = %x (expected 
%x)\n", i, wc,
+                               wc_UTF8[i]);
+                       problemCount++;
+               }
+
+               if (classInfo != classInfo_UTF8[i]) {
+                       printf("\tPROBLEM: classinfo for #%d = %x (expected 
%x)\n", i,
+                               classInfo, classInfo_UTF8[i]);
+                       problemCount++;
+               }
+       }
+       if (problemCount)
+               printf("\t%d problem(s) found!\n", problemCount);
+       else
+               printf("\tall fine\n");
+}
+
+
+void
+test_wctype()
+{
+       test_posix_wctype();
+       test_iso8859_1_wctype();
+       test_iso8859_15_wctype();
+       test_utf8_wctype();
+}
+
+
 /*
  * Test several different aspects of the POSIX locale and the functions
  * influenced by it.
@@ -651,6 +875,7 @@
        test_localeconv();
        test_strftime();
        test_ctype();
+       test_wctype();
 
        return 0;
 }


Other related posts:

  • » [haiku-commits] r37421 - haiku/branches/developer/zooey/posix-locale/src/tests/system/libroot/posix - zooey