diff --git a/projects/mtg/include/TestSuiteAI.h b/projects/mtg/include/TestSuiteAI.h index ccaf9b3ab..14e6af2de 100644 --- a/projects/mtg/include/TestSuiteAI.h +++ b/projects/mtg/include/TestSuiteAI.h @@ -60,7 +60,7 @@ protected: bool load(); public: - ~TestSuiteGame(); + virtual ~TestSuiteGame(); TestSuiteGame(TestSuite* testsuite); TestSuiteGame(TestSuite* testsuite, string _filename); void initGame(); @@ -90,6 +90,7 @@ public: unsigned int seed; int nbFailed, nbTests, nbAIFailed, nbAITests; TestSuite(const char * filename); + ~TestSuite(); void initGame(GameObserver* g); void pregameTests(); int loadNext(); diff --git a/projects/mtg/include/Trash.h b/projects/mtg/include/Trash.h index 14c781b53..7eb67457b 100644 --- a/projects/mtg/include/Trash.h +++ b/projects/mtg/include/Trash.h @@ -7,8 +7,8 @@ #include "DamagerDamaged.h" class CardView; -class AttackerDamaged; -class DamagerDamaged; +struct AttackerDamaged; +struct DamagerDamaged; typedef DamagerDamaged DefenserDamaged; template void trash(T*); diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index bf3a059c3..24b9d2531 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -447,11 +447,23 @@ void TestSuite::handleResults(bool wasAI, int error) } } +TestSuite::~TestSuite() +{ + mProcessing = false; + while(mWorkerThread.size()) + { + mWorkerThread.back().join(); + mWorkerThread.pop_back(); + } + + observer = 0; +} TestSuite::TestSuite(const char * filename) - : TestSuiteGame(this), mRules(0), mProcessing(false) + : TestSuiteGame(0), mRules(0), mProcessing(false) { timerLimit = 0; + testsuite = this; std::string s; nbfiles = 0; @@ -731,25 +743,20 @@ void TestSuite::ThreadProc(void* inParam) { string filename; float counter = 1.0f; -// while(instance->mProcessing) + while(instance->mProcessing && (filename = instance->getNextFile()) != "") { - while((filename = instance->getNextFile()) != "") + TestSuiteGame theGame(instance, filename); + if(theGame.isOK) { - TestSuiteGame theGame(instance, filename); - if(theGame.isOK) - { - theGame.observer->loadTestSuitePlayer(0, &theGame); - theGame.observer->loadTestSuitePlayer(1, &theGame); + theGame.observer->loadTestSuitePlayer(0, &theGame); + theGame.observer->loadTestSuitePlayer(1, &theGame); - theGame.observer->startGame(theGame.gameType, instance->mRules); - theGame.initGame(); + theGame.observer->startGame(theGame.gameType, instance->mRules); + theGame.initGame(); - while(!theGame.observer->gameOver) - theGame.observer->Update(counter++); - } + while(!theGame.observer->gameOver) + theGame.observer->Update(counter++); } - - boost::this_thread::sleep(100); } } LOG("Leaving TestSuite::ThreadProc");