Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include <string.h>
  2. #include <stdlib.h>
  3. #include "test.h"
  4.  
  5. #define N(s, sub) { \
  6.         char *p = s; \
  7.         char *q = strstr(p, sub); \
  8.         if (q) \
  9.                 t_error("strstr(%s,%s) returned str+%d, wanted 0\n", #s, #sub, q-p); \
  10. }
  11.  
  12. #define T(s, sub, n) { \
  13.         char *p = s; \
  14.         char *q = strstr(p, sub); \
  15.         if (q == 0) \
  16.                 t_error("strstr(%s,%s) returned 0, wanted str+%d\n", #s, #sub, n); \
  17.         else if (q - p != n) \
  18.                 t_error("strstr(%s,%s) returned str+%d, wanted str+%d\n", #s, #sub, q-p, n); \
  19. }
  20.  
  21. int main(void)
  22. {
  23.         N("", "a")
  24.         N("a", "aa")
  25.         N("a", "b")
  26.         N("aa", "ab")
  27.         N("aa", "aaa")
  28.         N("abba", "aba")
  29.         N("abc abc", "abcd")
  30.         N("0-1-2-3-4-5-6-7-8-9", "-3-4-56-7-8-")
  31.         N("0-1-2-3-4-5-6-7-8-9", "-3-4-5+6-7-8-")
  32.         N("_ _ _\xff_ _ _", "_\x7f_")
  33.         N("_ _ _\x7f_ _ _", "_\xff_")
  34.  
  35.         T("", "", 0)
  36.         T("abcd", "", 0)
  37.         T("abcd", "a", 0)
  38.         T("abcd", "b", 1)
  39.         T("abcd", "c", 2)
  40.         T("abcd", "d", 3)
  41.         T("abcd", "ab", 0)
  42.         T("abcd", "bc", 1)
  43.         T("abcd", "cd", 2)
  44.         T("ababa", "baba", 1)
  45.         T("ababab", "babab", 1)
  46.         T("abababa", "bababa", 1)
  47.         T("abababab", "bababab", 1)
  48.         T("ababababa", "babababa", 1)
  49.         T("nanabanabanana", "aba", 3)
  50.         T("nanabanabanana", "ban", 4)
  51.         T("nanabanabanana", "anab", 1)
  52.         T("nanabanabanana", "banana", 8)
  53.         T("_ _\xff_ _", "_\xff_", 2)
  54.  
  55.         printf("%s finished\n", __FILE__);
  56.         return t_status;
  57. }
  58.