Research portable Memory game | Исследовать портируемую игру Память
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

66 行
1.6KB

  1. #include <string>
  2. #include "ctx.h"
  3. #include "memory_Context.h"
  4. #include <iostream>
  5. std::string s(const char *str) {
  6. return std::string(str);
  7. }
  8. std::string test_ctx_Controller_executeFunctions_set() {
  9. auto c = memory_createContext();
  10. ctx_Controller<memory_Context> ctrl(c);
  11. // Disable automatic invocation of executeFunctions.
  12. ctrl.isProcessingQueue = true;
  13. ctrl.set("input", s("123"));
  14. auto processInput = [](memory_Context c) -> memory_Context {
  15. if (c.recentField == "input") {
  16. c.outputHelp = "Checked";
  17. c.recentField = "outputHelp";
  18. return c;
  19. }
  20. c.recentField = "none";
  21. return c;
  22. };
  23. ctrl.registerFunction(processInput);
  24. // Apply 'input'.
  25. ctrl.executeFunctions();
  26. // Apply 'outputHelp'.
  27. ctrl.executeFunctions();
  28. if (
  29. ctrl.context.input == "123" &&
  30. ctrl.context.outputHelp == "Checked"
  31. ) {
  32. return "OK: ctx_Controller_executeFunctions_set";
  33. }
  34. return "ERR: ctx_Controller_executeFunctions_set";
  35. }
  36. std::string test_ctx_Controller_processQueue() {
  37. auto c = memory_createContext();
  38. ctx_Controller<memory_Context> ctrl(c);
  39. auto processInput = [](memory_Context c) -> memory_Context {
  40. if (c.recentField == "input") {
  41. c.outputHelp = "Checked";
  42. c.recentField = "outputHelp";
  43. return c;
  44. }
  45. c.recentField = "none";
  46. return c;
  47. };
  48. ctrl.registerFunction(processInput);
  49. ctrl.set("input", s("abc"));
  50. if (
  51. ctrl.context.input == "abc" &&
  52. ctrl.context.outputHelp == "Checked"
  53. ) {
  54. return "OK: ctx_Controller_processQueue";
  55. }
  56. return "ERR: ctx_Controller_processQueue";
  57. }