// Step 1957: Sprint 285 Integration — poly-everything // // 8 languages: C++, Python, Rust, Go, Haskell, TypeScript, Java, Lisp // One function per language, all results recorded. // // t1: 8 functions registered across 8 languages // t2: all 8 results recorded; report shows totalCount=8 // t3: aggregateReport all pass (8 passes, 0 failures) // t4: totalDurationMs sums across all 8 // t5: Sprint285IntegrationSummary reports 5 steps #include "PolyglotOrchestrator.h" #include "Sprint285IntegrationSummary.h" #include namespace ws = whetstone; static int p=0,f=0; #define T(n) { std::cout<<" "<<#n<<"... "; } #define P() { std::cout<<"PASS\n"; ++p; } #define F(m) { std::cout<<"FAIL: "< LANGS = { "C++", "Python", "Rust", "Go", "Haskell", "TypeScript", "Java", "Lisp" }; static ws::PolyglotOrchestrator makeOrchestrator() { ws::PolyglotOrchestrator o; for (const auto& lang : LANGS) { o.addFunction(lang, "run", lang + "::run_v1"); ws::LanguageConfig cfg; cfg.timeout_ms = 5000; cfg.working_dir = "/work/" + lang; o.setContext(lang, cfg); } return o; } void t1(){ T(eight_functions_registered); auto o = makeOrchestrator(); auto registered = o.functionMap().registeredLanguages(); C(registered.size() == 8, "eight languages"); for (const auto& lang : LANGS) C(o.functionMap().hasFunction(lang, "run"), lang + " run registered"); P(); } void t2(){ T(all_8_results_recorded_totalCount_8); auto o = makeOrchestrator(); int dur = 100; for (const auto& lang : LANGS) o.recordResult({lang, "run", "output\n", true, dur += 10}); auto report = o.resultAggregator().aggregateReport(); C(report.totalCount == 8, "totalCount 8"); P(); } void t3(){ T(aggregateReport_all_8_pass); auto o = makeOrchestrator(); for (const auto& lang : LANGS) o.recordResult({lang, "run", "ok\n", true, 100}); auto s = o.runSummary(); C(s.passCount == 8, "passCount 8"); C(s.failCount == 0, "failCount 0"); C(s.allPassed, "allPassed"); P(); } void t4(){ T(totalDurationMs_sums_all_8); auto o = makeOrchestrator(); for (const auto& lang : LANGS) o.recordResult({lang, "run", "ok\n", true, 50}); auto report = o.resultAggregator().aggregateReport(); C(report.totalDurationMs == 400, "totalDurationMs 400 (8 × 50)"); P(); } void t5(){ T(sprint285_integration_summary); ws::Sprint285IntegrationSummary s; C(s.stepsCompleted == 5, "5 steps"); C(s.success, "success"); C(s.sprintName() == "Sprint 285: poly-everything", "name"); P(); } int main(){ std::cout << "Step 1957: Sprint 285 Integration\n"; t1(); t2(); t3(); t4(); t5(); std::cout << "\n" << p << "/" << (p+f) << " passed\n"; return f > 0 ? 1 : 0; }