Highlight things
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.1KB

  1. // @COMPILECMD g++ $@ -o regtest -O0 -ggdb -pg -fno-inline
  2. #include <stdio.h>
  3. #include "regex.hpp"
  4. #define TEST(a, b, expected) do { \
  5. r = regex_compile(a); \
  6. bool result = regex_search(r, b); \
  7. bool passed = (result == expected); \
  8. if (passed) { printf("Success. - "); } else { printf("Failiour. - "); } \
  9. printf("%s vs %s: Result = %d, Expected = %d\n", #a, #b, result, expected); \
  10. ++num_tests; \
  11. if (passed) { ++passed_tests; } \
  12. } while(0)
  13. signed main() {
  14. int num_tests = 0;
  15. int passed_tests = 0;
  16. regex_t * r;
  17. TEST(R"del(abc)del","abc",true);
  18. TEST(R"del(efg1)del","efg1",true);
  19. TEST(R"del(nig)del","ger",false);
  20. puts("");
  21. TEST(R"del(ab+c)del","abc",true);
  22. TEST(R"del(ef+g1)del","effffg1",true);
  23. TEST(R"del(ni*g?)del","ngg",false);
  24. puts("");
  25. TEST(R"del(ne.)del","net",true);
  26. TEST(R"del(ne.)del","ne",false);
  27. TEST(R"del(ne.+)del","neoo",true);
  28. puts("");
  29. TEST(R"del(ne.)del","ne\t",true);
  30. TEST(R"del(ne\t)del","ne",false);
  31. TEST(R"del(ne\t)del","ne\t",true);
  32. puts("");
  33. TEST(R"del(\sa)del"," a",true);
  34. TEST(R"del(\wi)del","hi",true);
  35. TEST(R"del(\w+)del","asd",true);
  36. puts("");
  37. TEST(R"del([A-Za-z]+)del","HelloWorld",true);
  38. TEST(R"del([A-Za-z]+g)del","HelloWorldg",true);
  39. TEST(R"del([A-Za-z]+g)del","g",false);
  40. puts("");
  41. TEST(R"del(a+a)del","aaa",true);
  42. TEST(R"del(a+a)del","aa",true);
  43. TEST(R"del(a+a)del","a",false);
  44. //++num_tests; TEST(R"del(\d{3})del","123",true);
  45. //++num_tests; TEST(R"del(^\w+@\w+\.\w+$)del","example@email.com",true);
  46. //++num_tests; TEST(R"del(\b\w+\b)del","This is a test",true);
  47. //++num_tests; TEST(R"del(^[A-Za-z]+\s\d+)del","OpenAI 123",true);
  48. //++num_tests; TEST(R"del([0-9]{4}-[0-9]{2}-[0-9]{2})del","2023-08-22",true);
  49. //++num_tests; TEST(R"del(^[^abc]+$)del","def123",true);
  50. //++num_tests; TEST(R"del(\b\d{5}\b)del","12345 67890",true);
  51. //++num_tests; TEST(R"del(^[A-Z][a-z]+$)del","OpenAI",true);
  52. //++num_tests; TEST(R"del(\d{3}-\d{2}-\d{4})del","123-45-6789",true);
  53. //++num_tests; TEST(R"del(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})del","192.168.1.1",true);
  54. //++num_tests; TEST(R"del(^\w{8,12})del","Password123", false);
  55. printf("\nPassed %d out of %d tests.\n", passed_tests, num_tests);
  56. }