svoid testAttractorBotResponse(AttractorBot bot, S input, S expectedOutput, O... _) { new LS out; temp tempSet(bot, say := vfAddToCollection(out)); bot.addInput(input); if (empty(expectedOutput)) { if (!empty(out)) fail("Bot returned unexpected output: " + out); } else { if (!cic(out, expectedOutput)) fail("Bot didn't return " + expectedOutput + ", instead said: " + out); print("OK, bot said: " + first(out)); LS rest = listWithoutIC(out, expectedOutput); if (nempty(rest)) fail("Bot returned additional lines: " + rest); } }