#include <map> #include <string> #include <vector> #include "ctx.h" #include "llm.h" #include "memory_Context.h" #include "main.h" std::string memory_test_detectMismatchedItems( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select two items of different groups. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 2; c.recentField = "selectedId"; c = memory_selectItem(c); // Detect mismatching. c = memory_detectMismatchedItems(c); // See if the two selected items do not match. if ( c.recentField == "mismatchedItems" && c.mismatchedItems.size() == 2 && c.mismatchedItems[0] == 0 && c.mismatchedItems[1] == 2 ) { return "OK: memory_detectMismatchedItems"; } return "ERR: memory_detectMismatchedItems"; } std::string memory_test_detectMismatchedItems_itemTwice( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select the same item twice. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); // Detect mismatching. c = memory_detectMismatchedItems(c); // See if the two selected items do not match. if ( c.recentField == "mismatchedItems" && c.mismatchedItems.size() == 1 && c.mismatchedItems[0] == 0 ) { return "OK: memory_detectMismatchedItems_itemTwice"; } return "ERR: memory_detectMismatchedItems_itemTwice"; } std::string memory_test_detectVictory( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select the first two items of the same group. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 1; c.recentField = "selectedId"; c = memory_selectItem(c); // Hide the first pair. c = memory_hideMatchingItems(c); // Select the last two items of the same group. c.selectedId = 2; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 3; c.recentField = "selectedId"; c = memory_selectItem(c); // Hide the second pair. c = memory_hideMatchingItems(c); // Detect victory. c = memory_detectVictory(c); // See if victory has been detected. if ( c.recentField == "victory" && c.victory == true ) { return "OK: memory_detectVictory"; } return "ERR: memory_detectVictory"; } std::string memory_test_generateConstPlayfield( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); if ( c.recentField == "playfieldItems" && c.playfieldItems.size() == 4 && c.playfieldItems[0] == 0 && c.playfieldItems[1] == 0 && c.playfieldItems[2] == 1 && c.playfieldItems[3] == 1 ) { return "OK: memory_generateConstPlayfield"; } return "ERR: memory_generateConstPlayfield"; } std::string memory_test_hideMatchingItems( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select two items of the same group. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 1; c.recentField = "selectedId"; c = memory_selectItem(c); // Hide matching items. c = memory_hideMatchingItems(c); // See if the two selected items match. if ( c.recentField == "hiddenItems" && c.hiddenItems.size() == 2 && c.hiddenItems[0] == 0 && c.hiddenItems[1] == 1 ) { return "OK: memory_hideMatchingItems"; } return "ERR: memory_hideMatchingItems"; } std::string memory_test_selectItem_1x( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select the first item. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); // See if it's in selectedItems now. if ( c.recentField == "selectedItems" && c.selectedItems.size() == 1 && c.selectedItems[0] == 0 ) { return "OK: memory_selectItem_1x"; } return "ERR: memory_selectItem_1x"; } std::string memory_test_selectItem_2x( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select the first two items. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 1; c.recentField = "selectedId"; c = memory_selectItem(c); // See if both items are selected now. if ( c.recentField == "selectedItems" && c.selectedItems.size() == 2 && c.selectedItems[0] == 0 && c.selectedItems[1] == 1 ) { return "OK: memory_selectItem_2x"; } return "ERR: memory_selectItem_2x"; } std::string memory_test_selectItem_3x( ) { auto c = memory_createContext(); c.playfieldSize = 2; c.recentField = "playfieldSize"; c = memory_generateConstPlayfield(c); // Select three items. c.selectedId = 0; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 1; c.recentField = "selectedId"; c = memory_selectItem(c); c.selectedId = 2; c.recentField = "selectedId"; c = memory_selectItem(c); // See if only one (last) item is selected now. if ( c.recentField == "selectedItems" && c.selectedItems.size() == 1 && c.selectedItems[0] == 2 ) { return "OK: memory_selectItem_3x"; } return "ERR: memory_selectItem_3x"; }