PageRenderTime 62ms CodeModel.GetById 35ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/os/runtime_xen/dietlibc/test/regex.c

http://github.com/avsm/mirage
C | 153 lines | 129 code | 24 blank | 0 comment | 17 complexity | cf4876d94a4541651ae95088917ed9ea MD5 | raw file
Possible License(s): GPL-3.0, 0BSD, GPL-2.0, LGPL-2.0, LGPL-2.1, MPL-2.0-no-copyleft-exception
  1. #include <stdio.h>
  2. #include <regex.h>
  3. #include <assert.h>
  4. #include <string.h>
  5. int main() {
  6. regex_t r;
  7. char buf[16*1024];
  8. int i;
  9. regmatch_t matches[10];
  10. memset(buf,'a',sizeof buf);
  11. strcpy(buf+sizeof(buf)-100," foo . .. bar\n");
  12. assert(regcomp(&r,"(|-.*)@fefe.de",REG_EXTENDED)==0);
  13. assert(regexec(&r,"@fefe.de",0,0,0)==0);
  14. regfree(&r);
  15. assert(regcomp(&r,"usenet-[0-9]{8}@fefe.de",REG_EXTENDED)==0);
  16. assert(regexec(&r,"usenet-12345678@fefe.de",0,0,0)==0);
  17. regfree(&r);
  18. assert(regcomp(&r,"(abuse|borland|bounceok|cdb|clickbank|der|dnscache|dsniff|gilda|myspace|password|postmaster|publicfile|qmail|qmaill|rfc2460|spam|stackguard|staroffice|susewindows|tdsl|true|vmware|web|yadocfaq|zeroseek)@fefe.de",REG_EXTENDED)==0);
  19. assert(regexec(&r,"abuse@fefe.de",0,0,0)==0);
  20. regfree(&r);
  21. assert(regcomp(&r,"@(ioctl.codeblau.de|fcntl.codeblau.de|knuth.codeblau.de|codeblau.de|lists.codeblau.de|code-blau.de|codeblau.com|code-blau.com|ccc.fefe.de|wegwerfdomain.de|fefes.wegwerfdomain.de|bewaff.net|rc23.rx|fnord.st|ist.schwervernetzt.de|kesim.(org|net|com)|tinydns.net|spiral-dynamics.org|hinke.org|2.0.1.0.8.5.6.0.1.0.0.2.ip6.int|eckner.org|mindbase.de|codeblau.walledcity.de)",REG_EXTENDED)==0);
  22. assert(regexec(&r,"abuse@fefe.de",0,0,0)==REG_NOMATCH);
  23. regfree(&r);
  24. assert(regcomp(&r,"^$",REG_EXTENDED)==0);
  25. assert(regexec(&r,"",0,0,0)==0);
  26. assert(matches[0].rm_so==0 && matches[0].rm_eo==0);
  27. regfree(&r);
  28. assert(regcomp(&r,"abracadabra$",REG_EXTENDED)==0);
  29. assert(regexec(&r,"abracadabracadabra",10,matches,0)==0);
  30. assert(matches[0].rm_so==7 && matches[0].rm_eo==18);
  31. regfree(&r);
  32. assert(regcomp(&r,"a...b",REG_EXTENDED)==0);
  33. assert(regexec(&r,"abababbb",10,matches,0)==0);
  34. assert(matches[0].rm_so==2 && matches[0].rm_eo==7);
  35. regfree(&r);
  36. assert(regcomp(&r,"XXXXXX",REG_EXTENDED)==0);
  37. assert(regexec(&r,"..XXXXXX",10,matches,0)==0);
  38. assert(matches[0].rm_so==2 && matches[0].rm_eo==8);
  39. regfree(&r);
  40. assert(regcomp(&r,"\\)",REG_EXTENDED)==0);
  41. assert(regexec(&r,"()",10,matches,0)==0);
  42. assert(matches[0].rm_so==1 && matches[0].rm_eo==2);
  43. regfree(&r);
  44. assert(regcomp(&r,"a]",REG_EXTENDED)==0);
  45. assert(regexec(&r,"a]a",10,matches,0)==0);
  46. assert(matches[0].rm_so==0 && matches[0].rm_eo==2);
  47. regfree(&r);
  48. assert(regcomp(&r,"}",REG_EXTENDED)==0);
  49. assert(regexec(&r,"}",10,matches,0)==0);
  50. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  51. regfree(&r);
  52. assert(regcomp(&r,"\\}",REG_EXTENDED)==0);
  53. assert(regexec(&r,"}",10,matches,0)==0);
  54. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  55. regfree(&r);
  56. assert(regcomp(&r,"\\]",REG_EXTENDED)==0);
  57. assert(regexec(&r,"]",10,matches,0)==0);
  58. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  59. regfree(&r);
  60. assert(regcomp(&r,"]",REG_EXTENDED)==0);
  61. assert(regexec(&r,"]",10,matches,0)==0);
  62. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  63. regfree(&r);
  64. assert(regcomp(&r,"}",REG_EXTENDED)==0);
  65. assert(regexec(&r,"}",10,matches,0)==0);
  66. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  67. regfree(&r);
  68. assert(regcomp(&r,"{",0)==0);
  69. assert(regexec(&r,"{",10,matches,0)==0);
  70. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  71. regfree(&r);
  72. assert(regcomp(&r,"^a",REG_EXTENDED)==0);
  73. assert(regexec(&r,"ax",10,matches,0)==0);
  74. assert(matches[0].rm_so==0 && matches[0].rm_eo==1);
  75. regfree(&r);
  76. assert(regcomp(&r,"\\^a",REG_EXTENDED)==0);
  77. assert(regexec(&r,"a^a",10,matches,0)==0);
  78. assert(matches[0].rm_so==1 && matches[0].rm_eo==3);
  79. regfree(&r);
  80. assert(regcomp(&r,"(gilda|oskar|leitner(-[^@]+|))@home.fefe.de",REG_EXTENDED)==0);
  81. assert(regexec(&r,"leitner@home.fefe.de",10,matches,0)==0);
  82. regfree(&r);
  83. assert(regcomp(&r,"^chello[0-9]*.chello.[a-z][a-z]$",REG_EXTENDED)==0);
  84. assert(regexec(&r,"chello089078194199.chello.pl",10,matches,0)==0);
  85. regfree(&r);
  86. assert(regcomp(&r,"(satel.com|kievnet.com|dn|merlin.net|inetcom.com|zdn.gov|terabit.com|od|odessa|elencom.net|uz|syndicate.org|tvcom.net|dn|qt.net|b-net.com).ua",REG_EXTENDED|REG_ICASE|REG_NOSUB)==0);
  87. assert(regexec(&r,"mail.b-net.com.ua",0,NULL,0)==0);
  88. regfree(&r);
  89. assert(regcomp(&r,"\\(foo\\)bar\\1",0)==0);
  90. assert(regexec(&r,"foobarfoo",10,matches,0)==0);
  91. regfree(&r);
  92. #if 0
  93. printf("regcomp %d\n",regcomp(&r,"\\.( ? ? ?\\.)*\\.",REG_EXTENDED|REG_NOSUB));
  94. printf("regexec %d\n",regexec(&r,buf,1,0,0));
  95. regfree(&r);
  96. #endif
  97. #if 0
  98. printf("regcomp %d\n",regcomp(&r,"^(ksambakdeplugin|mnemisis|kylixxmlrpclib|ripunix|featurekong)@freshmeat.net",REG_EXTENDED|REG_NEWLINE|REG_ICASE));
  99. {
  100. int canary[100];
  101. for (i=0; i<100; ++i) canary[i]=i;
  102. printf("regexec %d\n",regexec(&r,"mnemisis@freshmeat.net",2,matches,0));
  103. for (i=0; i<100; ++i) assert(canary[i]==i);
  104. }
  105. regfree(&r);
  106. for (i=0; i<10; ++i) {
  107. printf("%s(%d %d)",i?", ":" -> ",matches[i].rm_so,matches[i].rm_eo);
  108. }
  109. printf("\n");
  110. #endif
  111. #if 0
  112. printf("regcomp %d\n",regcomp(&r,"^(a|b|c|d|e)@freshmeat.net",REG_EXTENDED|REG_NEWLINE|REG_NOSUB|REG_ICASE));
  113. printf("regexec %d\n",regexec(&r,"a@freshmeat.net",1,0,0));
  114. #endif
  115. #if 0
  116. printf("regcomp %d\n",regcomp(&r,"^([A-Za-z ]+>|[]>:|}][]>:|}]*)",REG_EXTENDED|REG_NEWLINE|REG_NOSUB|REG_ICASE));
  117. printf("regexec %d\n",regexec(&r,"fnord",1,0,0));
  118. #endif
  119. #if 0
  120. printf("regcomp %d\n",regcomp(&r,"^Subject:",REG_EXTENDED|REG_ICASE));
  121. printf("regexec %d\n",regexec(&r,"Subject: duh",1,0,0));
  122. #endif
  123. #if 0
  124. printf("regcomp %d\n",regcomp(&r,"^To:([^@]*)?$",REG_EXTENDED|REG_ICASE|REG_NOSUB));
  125. printf("regexec %d\n",regexec(&r,"To: <Undisclosed Recipients>",1,0,0));
  126. regfree(&r);
  127. #endif
  128. return 0;
  129. }