ReadLineTests.cpp 1.8 KB

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