#include #include "ctx.h" #include "memory_Context.h" #include std::string s(const char *str) { return std::string(str); } std::string test_ctx_Controller_executeFunctions_set() { auto c = memory_createContext(); ctx_Controller ctrl(c); // Disable automatic invocation of executeFunctions. ctrl.isProcessingQueue = true; ctrl.set("input", s("123")); auto processInput = [](memory_Context c) -> memory_Context { if (c.recentField == "input") { c.outputHelp = "Checked"; c.recentField = "outputHelp"; return c; } c.recentField = "none"; return c; }; ctrl.registerFunction(processInput); // Apply 'input'. ctrl.executeFunctions(); // Apply 'outputHelp'. ctrl.executeFunctions(); if ( ctrl.context.input == "123" && ctrl.context.outputHelp == "Checked" ) { return "OK: ctx_Controller_executeFunctions_set"; } return "ERR: ctx_Controller_executeFunctions_set"; } std::string test_ctx_Controller_processQueue() { auto c = memory_createContext(); ctx_Controller ctrl(c); auto processInput = [](memory_Context c) -> memory_Context { if (c.recentField == "input") { c.outputHelp = "Checked"; c.recentField = "outputHelp"; return c; } c.recentField = "none"; return c; }; ctrl.registerFunction(processInput); ctrl.set("input", s("abc")); if ( ctrl.context.input == "abc" && ctrl.context.outputHelp == "Checked" ) { return "OK: ctx_Controller_processQueue"; } return "ERR: ctx_Controller_processQueue"; } std::string test_ctx_Controller_registerFieldCallback_match() { auto c = memory_createContext(); ctx_Controller ctrl(c); c.input = "123"; c.recentField = "input"; std::string callbackInput = ""; auto setCallbackInput = [&callbackInput](memory_Context c) { if ( c.recentField == "input" ) { callbackInput = c.input; } }; ctrl.registerFieldCallback("input", setCallbackInput); ctrl.reportContext(); if ( ctrl.context.input == callbackInput ) { return "OK: ctx_Controller_registerFieldCallback_match"; } return "ERR: ctx_Controller_registerFieldCallback_match"; }