ReadLineTests.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include <stdio.h>
  2. #include <threads.h>
  3. #include "../Tests.h"
  4. #include "../src/ErrorSimulator.h"
  5. #include "core/ReadLine.h"
  6. static void sleepMillis(int millis) {
  7. struct timespec t = {.tv_nsec = millis * 1000000};
  8. thrd_sleep(&t, nullptr);
  9. }
  10. static void testString(int line, const char* s) {
  11. char buffer[256];
  12. for(int i = 0; i < 200; i++) {
  13. if(coreReadLine(buffer, sizeof(buffer))) {
  14. break;
  15. }
  16. sleepMillis(10);
  17. }
  18. if(!coreTestString(__FILE__, line, s, buffer)) {
  19. const char* p = buffer;
  20. printf("Invalid sequence: ");
  21. while(*p != 0) {
  22. printf("%u ", (unsigned int)*p & 0xFF);
  23. p++;
  24. }
  25. putchar('\n');
  26. p = s;
  27. printf("Correct sequence: ");
  28. while(*p != 0) {
  29. printf("%u ", (unsigned int)*p & 0xFF);
  30. p++;
  31. }
  32. putchar('\n');
  33. }
  34. }
  35. void coreTestReadLine(void) {
  36. #ifdef ERROR_SIMULATOR
  37. coreFailMutexInit = true;
  38. if(!CORE_TEST_TRUE(coreStartReadLine())) {
  39. return;
  40. }
  41. coreFailMutexInit = false;
  42. coreFailThreadInit = true;
  43. if(!CORE_TEST_TRUE(coreStartReadLine())) {
  44. return;
  45. }
  46. coreFailThreadInit = false;
  47. coreFailMutexLock = true;
  48. coreFailMutexUnlock = true;
  49. #endif
  50. if(!CORE_TEST_FALSE(coreStartReadLine())) {
  51. return;
  52. }
  53. testString(__LINE__, "wusi");
  54. #ifdef ERROR_SIMULATOR
  55. coreFailMutexLock = false;
  56. coreFailMutexUnlock = false;
  57. #endif
  58. testString(__LINE__, "gusi");
  59. testString(__LINE__, "abc");
  60. testString(__LINE__, "abc");
  61. testString(__LINE__, "abd");
  62. testString(__LINE__, "abö");
  63. testString(__LINE__, "ghi");
  64. testString(__LINE__, "abcghi");
  65. testString(__LINE__, "abcghi");
  66. testString(__LINE__, "abö");
  67. testString(__LINE__, "abac");
  68. testString(
  69. __LINE__,
  70. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  71. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  72. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  73. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb");
  74. testString(__LINE__, "abäo");
  75. testString(__LINE__, "bäöo");
  76. coreStopReadLine();
  77. }