svoid gazelle_fakery_processInput_multi_v2(TreeMap sections, O... _) { int maxMonologue = optPar maxMonologue(_, 5); 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; int nMonologue = 0; 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); L l = dm_gazelle_reasonAboutChatInput_v2(user, input, paramsPlus(_, preContext := subList(inputLines, 0, i), respondingToHuman := nMonologue == 0, contextMaker := f dm_gazelle_stdEvalContext, requiredComment := null, debug := true)); print("Got " + n2(l, "child", "children") + " with line types: " + collect lineType(l)); for (GazelleTree t : l) { if (eq(t.lineType, "temporary fact")) temporaryFacts.add(printWithIndent("TEMP FACT> ", t.line)); else { lines.add(printWithIndent("OUT> ", t.line)); if (++nMonologue < maxMonologue) inputLines.add(t.line); } } } assertEqualsVerbose(lines, tlft(expectedOutput)); assertEqualsVerbose(asList(temporaryFacts), tlft(expectedTempFacts)); }); errorCounter.print(); }