ReadLineTests.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include <cstdio>
  2. #include "../Tests.hpp"
  3. #include "../src/ErrorSimulator.hpp"
  4. #include "core/Clock.hpp"
  5. #include "core/ReadLine.hpp"
  6. #include "core/Test.hpp"
  7. static void testStringError(int line, const char* s) {
  8. char buffer[256];
  9. for(int i = 0; i < 200; i++) {
  10. if(Core::readLine(buffer, sizeof(buffer))) {
  11. break;
  12. }
  13. Core::Clock::sleepMillis(10);
  14. }
  15. if(!Core::testString(__FILE__, line, s, buffer)) {
  16. const char* p = buffer;
  17. printf("Invalid sequence: ");
  18. while(*p != 0) {
  19. printf("%u ", static_cast<unsigned int>(*p & 0xFF));
  20. p++;
  21. }
  22. putchar('\n');
  23. p = s;
  24. printf("Correct sequence: ");
  25. while(*p != 0) {
  26. printf("%u ", static_cast<unsigned int>(*p & 0xFF));
  27. p++;
  28. }
  29. putchar('\n');
  30. }
  31. }
  32. void testReadLine() {
  33. #ifdef ERROR_SIMULATOR
  34. failStepThrow = 1;
  35. if(!TEST_TRUE(Core::startReadLine())) {
  36. return;
  37. }
  38. failStepThrow = 0;
  39. #endif
  40. if(!TEST_FALSE(Core::startReadLine())) {
  41. return;
  42. }
  43. testStringError(__LINE__, "wusi");
  44. testStringError(__LINE__, "gusi");
  45. testStringError(__LINE__, "abc");
  46. testStringError(__LINE__, "abc");
  47. testStringError(__LINE__, "abd");
  48. testStringError(__LINE__, "abö");
  49. testStringError(__LINE__, "ghi");
  50. testStringError(__LINE__, "abcghi");
  51. testStringError(__LINE__, "abcghi");
  52. testStringError(__LINE__, "abö");
  53. testStringError(__LINE__, "abac");
  54. testStringError(
  55. __LINE__,
  56. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  57. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  58. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  59. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb");
  60. testStringError(__LINE__, "abäo");
  61. testStringError(__LINE__, "bäöo");
  62. Core::stopReadLine();
  63. }