/tests/ctype/src.c

https://github.com/ssssssssssss/emscripten · C · 196 lines · 167 code · 20 blank · 9 comment · 15 complexity · 5cc9e5ad6f7f3cef486f32c2a9680784 MD5 · raw file

  1. #define _BSD_SOURCE
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. int main() {
  5. printf("%c%c%c\n", tolower('a'), tolower('B'), tolower('1'));
  6. printf("%c%c%c\n", toupper('a'), toupper('B'), toupper('1'));
  7. /* These appear to require glibc headers and fail with newlib
  8. const int* tl = *__ctype_tolower_loc();
  9. printf("%c%c%c\n", (char)tl['c'], (char)tl['D'], (char)tl['2']);
  10. const int* tu = *__ctype_toupper_loc();
  11. printf("%c%c%c\n", (char)tu['c'], (char)tu['D'], (char)tu['2']);
  12. */
  13. printf("\n");
  14. printf("toascii(-45): %d\n", toascii(-45));
  15. printf("toascii( 10): %d\n", toascii(10));
  16. printf("toascii('a'): %d\n", toascii('a'));
  17. printf("toascii(183): %d\n", toascii(183));
  18. // These will be compiled as actual function calls.
  19. int (*funcs[])(int) = {
  20. isascii,
  21. islower,
  22. isupper,
  23. isupper,
  24. isalpha,
  25. isdigit,
  26. isxdigit,
  27. isalnum,
  28. ispunct,
  29. isspace,
  30. isblank,
  31. iscntrl,
  32. isprint,
  33. isgraph
  34. };
  35. char* funcNames[] = {
  36. "isascii",
  37. "islower",
  38. "isupper",
  39. "isupper",
  40. "isalpha",
  41. "isdigit",
  42. "isxdigit",
  43. "isalnum",
  44. "ispunct",
  45. "isspace",
  46. "isblank",
  47. "iscntrl",
  48. "isprint",
  49. "isgraph"
  50. };
  51. for (int i = 0; i < sizeof funcs / sizeof funcs[0]; i++) {
  52. printf("\n");
  53. printf("%s/call(-45): %d\n", funcNames[i], funcs[i](-45) != 0);
  54. printf("%s/call( 10): %d\n", funcNames[i], funcs[i](10) != 0);
  55. printf("%s/call('a'): %d\n", funcNames[i], funcs[i]('a') != 0);
  56. printf("%s/call('A'): %d\n", funcNames[i], funcs[i]('A') != 0);
  57. printf("%s/call('5'): %d\n", funcNames[i], funcs[i]('5') != 0);
  58. printf("%s/call('.'): %d\n", funcNames[i], funcs[i]('.') != 0);
  59. printf("%s/call(183): %d\n", funcNames[i], funcs[i](183) != 0);
  60. }
  61. printf("\n");
  62. printf("isascii(-45): %d\n", isascii(-45) != 0);
  63. printf("isascii( 10): %d\n", isascii( 10) != 0);
  64. printf("isascii('a'): %d\n", isascii('a') != 0);
  65. printf("isascii('A'): %d\n", isascii('A') != 0);
  66. printf("isascii('5'): %d\n", isascii('5') != 0);
  67. printf("isascii('.'): %d\n", isascii('.') != 0);
  68. printf("isascii(183): %d\n", isascii(183) != 0);
  69. // These are manually preprocessed to use __ctype_b_loc. The flags combination
  70. // that the test runner uses seems to cause the macro to be ignored.
  71. printf("\n");
  72. printf("islower(-45): %d\n", islower(-45));
  73. printf("islower( 10): %d\n", islower(10));
  74. printf("islower('a'): %d\n", islower('a'));
  75. printf("islower('A'): %d\n", islower('A'));
  76. printf("islower('5'): %d\n", islower('5'));
  77. printf("islower('.'): %d\n", islower('.'));
  78. printf("islower(183): %d\n", islower(183));
  79. printf("\n");
  80. printf("isupper(-45): %d\n", isupper(-45));
  81. printf("isupper( 10): %d\n", isupper(10));
  82. printf("isupper('a'): %d\n", isupper('a'));
  83. printf("isupper('A'): %d\n", isupper('A'));
  84. printf("isupper('5'): %d\n", isupper('5'));
  85. printf("isupper('.'): %d\n", isupper('.'));
  86. printf("isupper(183): %d\n", isupper(183));
  87. printf("\n");
  88. printf("isupper(-45): %d\n", isupper(-45));
  89. printf("isupper( 10): %d\n", isupper(10));
  90. printf("isupper('a'): %d\n", isupper('a'));
  91. printf("isupper('A'): %d\n", isupper('A'));
  92. printf("isupper('5'): %d\n", isupper('5'));
  93. printf("isupper('.'): %d\n", isupper('.'));
  94. printf("isupper(183): %d\n", isupper(183));
  95. printf("\n");
  96. printf("isalpha(-45): %d\n", isalpha(-45));
  97. printf("isalpha( 10): %d\n", isalpha(10));
  98. printf("isalpha('a'): %d\n", isalpha('a'));
  99. printf("isalpha('A'): %d\n", isalpha('A'));
  100. printf("isalpha('5'): %d\n", isalpha('5'));
  101. printf("isalpha('.'): %d\n", isalpha('.'));
  102. printf("isalpha(183): %d\n", isalpha(183));
  103. printf("\n");
  104. printf("isdigit(-45): %d\n", isdigit(-45));
  105. printf("isdigit( 10): %d\n", isdigit(10));
  106. printf("isdigit('a'): %d\n", isdigit('a'));
  107. printf("isdigit('A'): %d\n", isdigit('A'));
  108. printf("isdigit('5'): %d\n", isdigit('5'));
  109. printf("isdigit('.'): %d\n", isdigit('.'));
  110. printf("isdigit(183): %d\n", isdigit(183));
  111. printf("\n");
  112. printf("isxdigit(-45): %d\n", isxdigit(-45));
  113. printf("isxdigit( 10): %d\n", isxdigit(10));
  114. printf("isxdigit('a'): %d\n", isxdigit('a'));
  115. printf("isxdigit('A'): %d\n", isxdigit('A'));
  116. printf("isxdigit('5'): %d\n", isxdigit('5'));
  117. printf("isxdigit('.'): %d\n", isxdigit('.'));
  118. printf("isxdigit(183): %d\n", isxdigit(183));
  119. printf("\n");
  120. printf("isalnum(-45): %d\n", isalnum(-45));
  121. printf("isalnum( 10): %d\n", isalnum(10));
  122. printf("isalnum('a'): %d\n", isalnum('a'));
  123. printf("isalnum('A'): %d\n", isalnum('A'));
  124. printf("isalnum('5'): %d\n", isalnum('5'));
  125. printf("isalnum('.'): %d\n", isalnum('.'));
  126. printf("isalnum(183): %d\n", isalnum(183));
  127. printf("\n");
  128. printf("ispunct(-45): %d\n", ispunct(-45));
  129. printf("ispunct( 10): %d\n", ispunct(10));
  130. printf("ispunct('a'): %d\n", ispunct('a'));
  131. printf("ispunct('A'): %d\n", ispunct('A'));
  132. printf("ispunct('5'): %d\n", ispunct('5'));
  133. printf("ispunct('.'): %d\n", ispunct('.'));
  134. printf("ispunct(183): %d\n", ispunct(183));
  135. printf("\n");
  136. printf("isspace(-45): %d\n", isspace(-45));
  137. printf("isspace( 10): %d\n", isspace(10));
  138. printf("isspace('a'): %d\n", isspace('a'));
  139. printf("isspace('A'): %d\n", isspace('A'));
  140. printf("isspace('5'): %d\n", isspace('5'));
  141. printf("isspace('.'): %d\n", isspace('.'));
  142. printf("isspace(183): %d\n", isspace(183));
  143. printf("\n");
  144. printf("isblank(-45): %d\n", isblank(-45));
  145. printf("isblank( 10): %d\n", isblank(10));
  146. printf("isblank('a'): %d\n", isblank('a'));
  147. printf("isblank('A'): %d\n", isblank('A'));
  148. printf("isblank('5'): %d\n", isblank('5'));
  149. printf("isblank('.'): %d\n", isblank('.'));
  150. printf("isblank(183): %d\n", isblank(183));
  151. printf("\n");
  152. printf("iscntrl(-45): %d\n", iscntrl(-45));
  153. printf("iscntrl( 10): %d\n", iscntrl(10));
  154. printf("iscntrl('a'): %d\n", iscntrl('a'));
  155. printf("iscntrl('A'): %d\n", iscntrl('A'));
  156. printf("iscntrl('5'): %d\n", iscntrl('5'));
  157. printf("iscntrl('.'): %d\n", iscntrl('.'));
  158. printf("iscntrl(183): %d\n", iscntrl(183));
  159. printf("\n");
  160. printf("isprint(-45): %d\n", isprint(-45));
  161. printf("isprint( 10): %d\n", isprint(10));
  162. printf("isprint('a'): %d\n", isprint('a'));
  163. printf("isprint('A'): %d\n", isprint('A'));
  164. printf("isprint('5'): %d\n", isprint('5'));
  165. printf("isprint('.'): %d\n", isprint('.'));
  166. printf("isprint(183): %d\n", isprint(183));
  167. printf("\n");
  168. printf("isgraph(-45): %d\n", isgraph(-45));
  169. printf("isgraph( 10): %d\n", isgraph(10));
  170. printf("isgraph('a'): %d\n", isgraph('a'));
  171. printf("isgraph('A'): %d\n", isgraph('A'));
  172. printf("isgraph('5'): %d\n", isgraph('5'));
  173. printf("isgraph('.'): %d\n", isgraph('.'));
  174. printf("isgraph(183): %d\n", isgraph(183));
  175. return 0;
  176. }