ReadLineTests.cpp 1.8 KB

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