ReadLineTests.c 2.2 KB

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