svoid gazelle_fakery_processInput_multi(TreeMap sections, O... _) { ErrorCounter errorCounter = optPar errorCounter(_, new ErrorCounter); for (fS key : startingWithIC(keys(sections), "test input")) errorCounter.run(key, r { LS inputLines = tlft(sections.get(key)); S expectedOutput = sections.get(replaceIC(key, "test input", "expected output")); S expectedTempFacts = sections.get(replaceIC(key, "test input", "expected temporary facts")); print("\nPROCESSING: " + key + "\n"); temporaryFacts.clear(); new LS lines; for i over inputLines: { S input = inputLines.get(i); S user = leadingSquareBracketStuff(input); input = dropActuallyLeadingSquareBracketStuff(input); gazelle_gatherFulfillments(ll(nu GazelleLine(text := input, extras := litmap(+user))), fulfillments, debug := true); lines.addAll(printLinesWithIndent("OUT> ", collect line(dm_gazelle_reasonAboutChatInput_v2(user, input, paramsPlus(_, preContext := subList(inputLines, 0, i), requiredComment := null, debug := true))))); } assertEqualsVerbose(lines, tlft(expectedOutput)); assertEqualsVerbose(temporaryFacts, tlft(expectedTempFacts)); }); errorCounter.print(); }