Test.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "../../DFPSR/includeFramework.h"
  2. struct TestContext;
  3. using DrawContextCallback = std::function<void(dsr::AlignedImageRgbaU8 &canvas, TestContext &context)>;
  4. using MouseContextCallback = std::function<void(const dsr::MouseEvent &event, TestContext &context)>;
  5. using KeyboardContextCallback = std::function<void(const dsr::KeyboardEvent &event, TestContext &context)>;
  6. enum class Grade {
  7. Waiting,
  8. Passed,
  9. Skipped,
  10. Failed
  11. };
  12. struct Test {
  13. dsr::String name;
  14. DrawContextCallback drawEvent;
  15. MouseContextCallback mouseCallback;
  16. KeyboardContextCallback keyboardCallback;
  17. bool activeDrawing;
  18. Grade result = Grade::Waiting;
  19. Test(const dsr::ReadableString& name, const DrawContextCallback &drawEvent, const MouseContextCallback &mouseCallback, const KeyboardContextCallback &keyboardCallback, bool activeDrawing)
  20. : drawEvent(drawEvent), mouseCallback(mouseCallback), keyboardCallback(keyboardCallback), activeDrawing(activeDrawing) {}
  21. };
  22. struct TestContext {
  23. dsr::List<Test> tests;
  24. // Each test consists of one or more tasks to pass.
  25. int testIndex = 0; // Each test index refers to a Test in tests to be completed.
  26. int taskIndex = 0; // To avoid cluttering the summary with lots of small tests, tests are divided into smaller tasks.
  27. // Call when completing a task but not a whole test.
  28. void passTask() {
  29. taskIndex++;
  30. }
  31. // Call when completing a test.
  32. void finishTest(Grade result) {
  33. if (result == Grade::Passed) {
  34. printText(U"Passed \"", tests[testIndex].name, U"\".");
  35. } else if (result == Grade::Skipped) {
  36. printText(U"Skipped \"", tests[testIndex].name, U"\".");
  37. } else if (result == Grade::Failed) {
  38. printText(U"Failed \"", tests[testIndex].name, U"\".");
  39. }
  40. tests[testIndex].result = result;
  41. testIndex++;
  42. }
  43. bool leftMouseDown = false;
  44. bool middleMouseDown = false;
  45. bool rightMouseDown = false;
  46. TestContext() {}
  47. };