std::string CodeGeneratorTest::CheckResultFromFile() { return CheckResultFromFile(getCurrentTestName() + ".vhdl"); }
bool cUnitTesting::RunTests(const std::string pCampaign) { bool Retry = false; g_Fodder->Game_Setup(); if (g_Fodder->mStartParams->mUnitTesting && g_Fodder->mStartParams->mDemoPlayback) { g_Fodder->mStartParams->mSleepDelta = 0; g_Fodder->mParams->mSleepDelta = 0; } while (g_Fodder->mGame_Data.mMission_Current) { EngineSetup(); setDemoName(); std::string MissionTitle = getCurrentTestName(); if (g_Fodder->mStartParams->mDemoRecord && !Retry) { if (g_ResourceMan->FileExists(g_Fodder->mStartParams->mDemoFile)) { g_Debugger->Notice("Test exists for " + MissionTitle + ", skipping"); g_Fodder->mGame_Data.Phase_Next(); continue; } } Retry = false; g_Debugger->TestStart(MissionTitle, g_Fodder->mStartParams->mCampaignName); if (g_Fodder->mStartParams->mDemoPlayback) { if (!g_Fodder->mStartParams->mDemoRecord) { if (!g_Fodder->Demo_Load()) { g_Debugger->TestComplete(MissionTitle, g_Fodder->mStartParams->mCampaignName, "No test found", 0, eTest_Skipped); g_Fodder->mGame_Data.Phase_Next(); continue; } } g_Fodder->mGame_Data.mDemoRecorded.playback(); } // If demo is recording if (g_Fodder->mStartParams->mDemoRecord) { // And we have a resume cycle set if (g_Fodder->mStartParams->mDemoRecordResumeCycle) { g_Debugger->Notice("Resuming " + MissionTitle); g_Fodder->mParams->mSleepDelta = 0; } else { g_Fodder->mGame_Data.mDemoRecorded.clear(); g_Debugger->Notice("Recording " + MissionTitle); } } // Reset demo status //g_Fodder->mParams->mSleepDelta = g_Fodder->mStartParams->mSleepDelta; g_Fodder->mParams->mDemoFile = g_Fodder->mStartParams->mDemoFile; g_Fodder->mParams->mDemoRecord = g_Fodder->mStartParams->mDemoRecord; g_Fodder->mParams->mDemoPlayback = g_Fodder->mStartParams->mDemoPlayback; g_Fodder->mParams->mAppVeyor = g_Fodder->mStartParams->mAppVeyor; // Keep game state g_Fodder->mGame_Data_Backup = g_Fodder->mGame_Data; // Run the phase auto missionStartTime = std::chrono::steady_clock::now(); g_Fodder->Mission_Loop(); auto missionDuration = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - missionStartTime); // If recording if (g_Fodder->mStartParams->mDemoRecord) { if (g_Fodder->mPhase_Complete) { g_Fodder->mGame_Data.mDemoRecorded.save(); } else { Retry = true; // If the phase was aborted (ESC key), don't replay it.. start over if (!g_Fodder->mPhase_EscapeKeyAbort) { // Less than 80 cycles, player can start over if (g_Fodder->mGame_Data.mDemoRecorded.mTick > 80) { g_Fodder->mStartParams->mDemoRecordResumeCycle = (g_Fodder->mGame_Data.mDemoRecorded.mTick - 80); g_Fodder->mStartParams->mDemoPlayback = true; // Delete events occruing after resume cycle g_Fodder->mGame_Data.mDemoRecorded.removeFrom(g_Fodder->mStartParams->mDemoRecordResumeCycle); g_Fodder->mGame_Data_Backup.mDemoRecorded = g_Fodder->mGame_Data.mDemoRecorded; // Disable video output for speed g_Fodder->mStartParams->mDisableVideo = true; g_Fodder->mStartParams->mDisableSound = true; } } // Reset game to before start of phase g_Fodder->mGame_Data = g_Fodder->mGame_Data_Backup; continue; } } if (!g_Fodder->mPhase_Complete) { g_Debugger->TestComplete(MissionTitle, g_Fodder->mStartParams->mCampaignName, "Phase Failed", (size_t)missionDuration.count(), eTest_Failed); return false; } g_Debugger->TestComplete(MissionTitle, g_Fodder->mStartParams->mCampaignName, "Phase Complete", (size_t)missionDuration.count(), eTest_Passed); g_Fodder->mGame_Data = g_Fodder->mGame_Data_Backup; g_Fodder->mGame_Data.Phase_Next(); } return true; }