inputTest.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "inputTest.h"
  2. using namespace dsr;
  3. void inputTests_populate(List<Test> &target) {
  4. target.pushConstruct(
  5. U"Mouse drag test"
  6. ,
  7. [](AlignedImageRgbaU8 &canvas, TestContext &context) {
  8. image_fill(canvas, ColorRgbaI32(255, 255, 255, 255));
  9. if (context.taskIndex == 0) {
  10. font_printLine(canvas, font_getDefault(), U"Hover the cursor over the window.", IVector2D(40, 40), ColorRgbaI32(0, 0, 0, 255));
  11. } else if (context.taskIndex == 1) {
  12. font_printLine(canvas, font_getDefault(), U"Press down the left mouse key.", IVector2D(40, 40), ColorRgbaI32(0, 0, 0, 255));
  13. } else if (context.taskIndex == 2) {
  14. font_printLine(canvas, font_getDefault(), U"Drag the mouse over the window with the left key pressed down.", IVector2D(40, 40), ColorRgbaI32(0, 0, 0, 255));
  15. } else if (context.taskIndex == 3) {
  16. font_printLine(canvas, font_getDefault(), U"Release the left key.", IVector2D(40, 40), ColorRgbaI32(0, 0, 0, 255));
  17. }
  18. }
  19. ,
  20. [](const MouseEvent& event, TestContext &context) {
  21. if (context.taskIndex == 0 && event.mouseEventType == MouseEventType::MouseMove && !context.leftMouseDown && !context.middleMouseDown && !context.rightMouseDown) {
  22. context.passTask();
  23. } else if (context.taskIndex == 1 && event.mouseEventType == MouseEventType::MouseDown) {
  24. if (event.key == MouseKeyEnum::Left) {
  25. context.passTask();
  26. } else {
  27. // TODO: Say which key was triggered instead and suggest skipping with escape if it can not be found.
  28. }
  29. } else if (context.taskIndex == 2 && event.mouseEventType == MouseEventType::MouseMove && context.leftMouseDown) {
  30. context.passTask();
  31. } else if (context.taskIndex == 3 && event.mouseEventType == MouseEventType::MouseUp) {
  32. if (event.key == MouseKeyEnum::Left) {
  33. context.finishTest(Grade::Passed);
  34. } else {
  35. // TODO: Say which key was triggered instead and suggest skipping with escape if it can not be found.
  36. }
  37. }
  38. }
  39. ,
  40. [](const KeyboardEvent& event, TestContext &context) {}
  41. ,
  42. false
  43. );
  44. }