#include "CppUnitLite/TestHarness.h" #include "GDL/Object.h" #include "GDL/aMove.h" #include "GDL/cMove.h" #include "GDL/Access.h" #include "GDL/ObjectsConcerned.h" #include #include #include #include "GDL/SpriteObject.h" #include "GDL/Object.h" #include "GDL/RuntimeGame.h" #ifdef ___WXMSW___ #include "windows.h" #include #endif using namespace std; TEST( Player, ObjectsConcerned ) { ObjInstancesHolder objectsList; objectsList.AddObject(boost::shared_ptr(new Object("blueBall"))); objectsList.AddObject(boost::shared_ptr(new Object("blueBall"))); objectsList.AddObject(boost::shared_ptr(new Object("redBall"))); objectsList.AddObject(boost::shared_ptr(new Object("blueSquare"))); objectsList.AddObject(boost::shared_ptr(new Object("redSquare"))); objectsList.AddObject(boost::shared_ptr(new Object("redSquare"))); objectsList.AddObject(boost::shared_ptr(new Object("blueAutre"))); vector < ObjectGroup > groupsList; groupsList.push_back(ObjectGroup()); groupsList.push_back(ObjectGroup()); groupsList.push_back(ObjectGroup()); groupsList.push_back(ObjectGroup()); groupsList.push_back(ObjectGroup()); groupsList[0].SetName("Balls"); groupsList[0].AddObject("blueBall"); groupsList[0].AddObject("redBall"); groupsList[1].SetName("Squares"); groupsList[1].AddObject("blueSquare"); groupsList[1].AddObject("redSquare"); groupsList[2].SetName("Blues"); groupsList[2].AddObject("blueSquare"); groupsList[2].AddObject("blueBall"); groupsList[2].AddObject("blueAutre"); groupsList[3].SetName("Reds"); groupsList[3].AddObject("redSquare"); groupsList[3].AddObject("redBall"); groupsList[4].SetName("Other"); groupsList[4].AddObject("blueAutre"); ObjectsConcerned objectsConcerned(&objectsList, &groupsList); ObjectIdentifiersManager * objectIdentifiersManager = ObjectIdentifiersManager::getInstance(); { vector < boost::shared_ptr > picked; picked = objectsConcerned.Pick(objectIdentifiersManager->GetOIDfromName("Reds")); CHECK_EQUAL(3L, (long)picked.size()); // Les 3 rouges CHECK_EQUAL(3L, (long)objectsConcerned.objectsPicked.GetAllObjects().size()); // Les 3 rouges for (unsigned int i = 0;iGetName() << endl; cout << endl; for (unsigned int i = 0;iGetName() << endl; cout << endl; cout << "------------------" <GetOIDfromName("Squares")); CHECK_EQUAL(2L, (long)picked.size());// Les deux carrés rouge CHECK_EQUAL(3L, (long)objectsConcerned.objectsPicked.GetAllObjects().size()); // Les 3 rouges for (unsigned int i = 0;iGetName() << endl; cout << endl; for (unsigned int i = 0;iGetName() << endl; cout << endl; cout << "------------------" <GetOIDfromName("Other")); CHECK_EQUAL(1L, (long)picked.size()); //L'autre CHECK_EQUAL(4L, (long)objectsConcerned.objectsPicked.GetAllObjects().size()); // Les 3 rouges et l'autre for (unsigned int i = 0;iGetName() << endl; cout << endl; for (unsigned int i = 0;iGetName() << endl; cout << endl; cout << "------------------" <GetOIDfromName("Reds")); CHECK_EQUAL(3L, (long)picked.size()); // Les 3 rouges CHECK_EQUAL(1L, (long)objectsConcerned.objectsPicked.GetAllObjects().size()); // L'autre cout << endl; //Print concerned and picked objects for (unsigned int i = 0;iGetName() << endl; cout << endl; for (unsigned int i = 0;iGetName() << endl; cout << endl; } } TEST( Player, Forces ) { Force force; force.SetX(500); force.SetY(0); CHECK_EQUAL(0L, force.GetAngle()); CHECK_EQUAL(long(int(499.997833)), long(int(force.GetLength()))); force.SetAngle(90); force.SetLength(5); CHECK_EQUAL(0.0, long(int(force.GetX()))); CHECK_EQUAL(5L, force.GetY()); } TEST( Player, actionsMove ) { Object * object = new Object("testobj"); Force force; force.SetX(500); force.SetY(0); object->Forces.push_back(force); sf::RenderWindow unusedWin; RuntimeGame game; RuntimeScene scene(&unusedWin, &game); scene.objectsInstances.AddObject(boost::shared_ptr(object)); } TEST( Player, conditionsMove ) { Object * object = new Object("testobj"); Force force; force.SetX(0); force.SetY(0); object->Forces.push_back(force); sf::RenderWindow unusedWin; RuntimeGame game; RuntimeScene scene(&unusedWin, &game); scene.objectsInstances.AddObject(boost::shared_ptr(object)); //Condition Un objet est à l'arrêt vector < int > objConcern; Instruction condition; vector < GDExpression > params; params.push_back(GDExpression("testobj")); condition.SetParameters(params); condition.SetLocal(false); condition.SetInversion(false); ObjectsConcerned objectsConcerned(&scene.objectsInstances, &scene.objectGroups); }