From e89bd3faacaabcd8eb1ac4262e9adf633e179e87 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Sat, 10 Jan 2009 17:34:57 -0500 Subject: Added MapTrainerTeamMember tests --- sigmod/test/CMakeLists.txt | 2 +- sigmod/test/TestMapTrainerTeamMember.cpp | 588 +++++++++++++++++++++++++++++++ sigmod/test/TestMapTrainerTeamMember.h | 57 +++ 3 files changed, 646 insertions(+), 1 deletion(-) create mode 100644 sigmod/test/TestMapTrainerTeamMember.cpp create mode 100644 sigmod/test/TestMapTrainerTeamMember.h (limited to 'sigmod/test') diff --git a/sigmod/test/CMakeLists.txt b/sigmod/test/CMakeLists.txt index 361658ce..ef83d7bd 100644 --- a/sigmod/test/CMakeLists.txt +++ b/sigmod/test/CMakeLists.txt @@ -39,7 +39,7 @@ MAKE_TEST(sigmod-tests libraries ItemType) MAKE_TEST(sigmod-tests libraries MapEffect) MAKE_TEST(sigmod-tests libraries MapTile) MAKE_TEST(sigmod-tests libraries MapTrainer) -# MAKE_TEST(sigmod-tests libraries MapTrainerTeamMember) +MAKE_TEST(sigmod-tests libraries MapTrainerTeamMember) # MAKE_TEST(sigmod-tests libraries MapWarp) MAKE_TEST(sigmod-tests libraries MapWildList) MAKE_TEST(sigmod-tests libraries MapWildListEncounter) diff --git a/sigmod/test/TestMapTrainerTeamMember.cpp b/sigmod/test/TestMapTrainerTeamMember.cpp new file mode 100644 index 00000000..66585b32 --- /dev/null +++ b/sigmod/test/TestMapTrainerTeamMember.cpp @@ -0,0 +1,588 @@ +/* + * Copyright 2008-2009 Ben Boeckel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +// Header include +#include "TestMapTrainerTeamMember.h" + +// Sigmod includes +#include "../Item.h" +#include "../Map.h" +#include "../MapTrainer.h" +#include "../MapTrainerTeamMember.h" +#include "../Rules.h" +#include "../Sigmod.h" +#include "../Species.h" +#include "../SpeciesMove.h" + +// Qt includes +#include +#include + +void TestMapTrainerTeamMember::initTestCase() +{ + TestSigmodObject::initTestCase(); + + Sigmod::MapTrainer* trainer = m_sigmod->newMap()->newTrainer(); + + m_teamMember1 = trainer->newTeamMember(); + m_teamMember2 = trainer->newTeamMember(); + m_teamMember3 = trainer->newTeamMember(); +} + +void TestMapTrainerTeamMember::cleanupTestCase() +{ + TestSigmodObject::cleanupTestCase(); +} + +void TestMapTrainerTeamMember::init() +{ + TestSigmodObject::init(); + + makeConnections(m_teamMember1); + makeConnections(m_teamMember2); + makeConnections(m_teamMember3); +} + +void TestMapTrainerTeamMember::cleanup() +{ + closeConnections(m_teamMember1); + closeConnections(m_teamMember2); + closeConnections(m_teamMember3); + + TestSigmodObject::cleanup(); +} + +void TestMapTrainerTeamMember::validation() +{ + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_sigmod->newSpecies(); + + m_teamMember1->setSpecies(0); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 3); + + m_sigmod->rules()->setMaxLevel(100); + + m_teamMember1->setLevel(50); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 3); + + m_sigmod->rules()->setMaxLevel(40); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 4); + + m_teamMember1->setLevel(30); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 4); + + m_sigmod->rules()->setMaxAbilities(1); + m_sigmod->newAbility(); + + m_teamMember1->setAbility(0, true); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 4); + + m_sigmod->rules()->setMaxAbilities(0); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 5); + + m_sigmod->rules()->setMaxAbilities(1); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 5); + + m_sigmod->rules()->setMaxHeldItems(1); + m_sigmod->species(0)->setMaxHoldWeight(10); + m_sigmod->newItem(); + m_sigmod->item(0)->setWeight(5); + + m_teamMember1->setItem(0, 1); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 5); + + m_sigmod->rules()->setMaxHeldItems(0); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 6); + + m_sigmod->rules()->setMaxHeldItems(1); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 6); + + m_sigmod->item(0)->setWeight(25); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 7); + + m_sigmod->item(0)->setWeight(5); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 7); + + m_sigmod->rules()->setMaxMoves(2); + m_sigmod->newMove(); + m_sigmod->newMove(); + m_sigmod->species(0)->newMove()->setMove(0); + m_sigmod->species(0)->newMove()->setMove(1); + + m_teamMember1->setMove(0, true); + m_teamMember1->setMove(1, true); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 7); + + m_sigmod->rules()->setMaxMoves(1); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 8); + + m_sigmod->rules()->setMaxMoves(2); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 8); + + m_sigmod->species(0)->deleteMove(1); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 9); + + m_sigmod->species(0)->newMove()->setMove(1); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 9); + + m_sigmod->rules()->setMaxNatures(1); + m_sigmod->newNature(); + + m_teamMember1->setNature(0, true); + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 9); + + m_sigmod->rules()->setMaxNatures(0); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 10); + + m_sigmod->rules()->setMaxNatures(1); + + m_teamMember1->validate(); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 10); +} + +void TestMapTrainerTeamMember::saving() +{ + QDomDocument xml = Sigmod::Object::xml(m_teamMember1); + QFile file("mapTrainerTeamMember.xml"); + + QVERIFY(file.open(QIODevice::WriteOnly)); + file.write(xml.toByteArray()); + file.close(); +} + +void TestMapTrainerTeamMember::loading() +{ + QDomDocument xml; + QFile file("mapTrainerTeamMember.xml"); + + m_sigmod->newAbility(); + m_sigmod->newItem(); + m_sigmod->newMove(); + m_sigmod->newNature(); + m_sigmod->newSpecies(); + + m_teamMember1->setSpecies(1); + m_teamMember1->setLevel(25); + m_teamMember1->setAbility(0, false); + m_teamMember1->setAbility(1, true); + m_teamMember1->setItem(0, 0); + m_teamMember1->setItem(1, 1); + m_teamMember1->setMove(0, false); + m_teamMember1->setMove(1, false); + m_teamMember1->setMove(2, true); + m_teamMember1->setNature(0, false); + m_teamMember1->setNature(1, true); + + QVERIFY(file.open(QIODevice::ReadOnly)); + QVERIFY(xml.setContent(&file)); + m_teamMember1->load(xml.firstChildElement("MapTrainerTeamMember")); + + QCOMPARE(m_teamMember1->species(), 0); + QCOMPARE(m_teamMember1->level(), 30); + QCOMPARE(m_teamMember1->ability(0), true); + QCOMPARE(m_teamMember1->ability(1), false); + QCOMPARE(m_teamMember1->item(0), 1); + QCOMPARE(m_teamMember1->item(1), 0); + QCOMPARE(m_teamMember1->move(0), true); + QCOMPARE(m_teamMember1->move(1), true); + QCOMPARE(m_teamMember1->move(2), false); + QCOMPARE(m_teamMember1->nature(0), true); + QCOMPARE(m_teamMember1->nature(1), false); +} + +void TestMapTrainerTeamMember::setSpecies() +{ + m_teamMember2->setSpecies(2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_sigmod->newSpecies(); + + m_teamMember2->setSpecies(2); + m_teamMember2->setSpecies(2); + + QCOMPARE(m_teamMember2->species(), 2); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); +} + +void TestMapTrainerTeamMember::setLevel() +{ + m_teamMember2->setLevel(0); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setLevel(50); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_teamMember2->setLevel(30); + m_teamMember2->setLevel(30); + + QCOMPARE(m_teamMember2->level(), 30); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); +} + +void TestMapTrainerTeamMember::abilities() +{ + m_sigmod->newAbility(); + + m_teamMember2->setAbility(0, true); + m_teamMember2->setAbility(0, true); + + QCOMPARE(m_teamMember2->ability(0), true); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); + + m_teamMember2->setAbility(1, true); + + QCOMPARE(m_teamMember2->ability(1), false); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_sigmod->rules()->setMaxAbilities(2); + + m_teamMember2->setAbility(1, true); + + QCOMPARE(m_teamMember2->ability(1), true); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setAbility(1, false); + + QCOMPARE(m_teamMember2->ability(1), false); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setAbility(2, false); + + QCOMPARE(m_teamMember2->ability(2), false); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); +} + +void TestMapTrainerTeamMember::items() +{ + m_sigmod->species(2)->setMaxHoldWeight(9); + m_sigmod->rules()->setMaxHeldItems(2); + m_sigmod->newItem(); + + m_teamMember2->setItem(0, 1); + m_teamMember2->setItem(0, 1); + + QCOMPARE(m_teamMember2->item(0), 1); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); + + m_teamMember2->setItem(0, 2); + + QCOMPARE(m_teamMember2->item(0), 1); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setItem(1, 1); + + QCOMPARE(m_teamMember2->item(1), 1); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setItem(1, 2); + + QCOMPARE(m_teamMember2->item(1), 1); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_teamMember2->setItem(1, 0); + + QCOMPARE(m_teamMember2->item(1), 0); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_teamMember2->setItem(2, 0); + + QCOMPARE(m_teamMember2->item(2), 0); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); +} + +void TestMapTrainerTeamMember::moves() +{ + m_sigmod->species(2)->newMove()->setMove(0); + m_sigmod->species(2)->newMove()->setMove(1); + m_sigmod->rules()->setMaxMoves(1); + + m_teamMember2->setMove(0, true); + m_teamMember2->setMove(0, true); + + QCOMPARE(m_teamMember2->move(0), true); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); + + m_teamMember2->setMove(1, true); + + QCOMPARE(m_teamMember2->move(1), false); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_sigmod->rules()->setMaxMoves(3); + + m_teamMember2->setMove(1, true); + + QCOMPARE(m_teamMember2->move(1), true); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setMove(2, true); + + QCOMPARE(m_teamMember2->move(2), false); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_sigmod->species(2)->newMove()->setMove(2); + + m_teamMember2->setMove(2, true); + + QCOMPARE(m_teamMember2->move(2), true); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_teamMember2->setMove(1, false); + + QCOMPARE(m_teamMember2->move(1), false); + + QCOMPARE(m_changedCount, 4); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); + + m_teamMember2->setMove(2, false); + + QCOMPARE(m_teamMember2->move(2), false); + + QCOMPARE(m_changedCount, 5); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 2); +} + +void TestMapTrainerTeamMember::natures() +{ + m_sigmod->newNature(); + + m_teamMember2->setNature(0, true); + m_teamMember2->setNature(0, true); + + QCOMPARE(m_teamMember2->nature(0), true); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); + + m_teamMember2->setNature(1, true); + + QCOMPARE(m_teamMember2->nature(1), false); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_sigmod->rules()->setMaxNatures(2); + + m_teamMember2->setNature(1, true); + + QCOMPARE(m_teamMember2->nature(1), true); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setNature(1, false); + + QCOMPARE(m_teamMember2->nature(1), false); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_teamMember2->setNature(2, false); + + QCOMPARE(m_teamMember2->nature(2), false); + + QCOMPARE(m_changedCount, 3); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); +} + +void TestMapTrainerTeamMember::assignment() +{ + *m_teamMember3 = *m_teamMember2; + + QCOMPARE(m_teamMember3->species(), 2); + QCOMPARE(m_teamMember3->level(), 30); + QCOMPARE(m_teamMember3->ability(0), true); + QCOMPARE(m_teamMember3->ability(1), false); + QCOMPARE(m_teamMember3->ability(2), false); + QCOMPARE(m_teamMember3->item(0), 1); + QCOMPARE(m_teamMember3->item(1), 0); + QCOMPARE(m_teamMember3->item(2), 0); + QCOMPARE(m_teamMember3->move(0), true); + QCOMPARE(m_teamMember3->move(1), false); + QCOMPARE(m_teamMember3->move(2), false); + QCOMPARE(m_teamMember3->nature(0), true); + QCOMPARE(m_teamMember3->nature(1), false); + QCOMPARE(m_teamMember3->nature(2), false); +} + +QTEST_APPLESS_MAIN(TestMapTrainerTeamMember) diff --git a/sigmod/test/TestMapTrainerTeamMember.h b/sigmod/test/TestMapTrainerTeamMember.h new file mode 100644 index 00000000..a23e578e --- /dev/null +++ b/sigmod/test/TestMapTrainerTeamMember.h @@ -0,0 +1,57 @@ +/* + * Copyright 2008-2009 Ben Boeckel + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef SIGMOD_TESTMAPTRAINERTEAMMEMBER +#define SIGMOD_TESTMAPTRAINERTEAMMEMBER + +// Test includes +#include "TestSigmodObject.h" + +// Sigmod includes +#include "../MapTrainerTeamMember.h" + +class TestMapTrainerTeamMember : public TestSigmodObject +{ + Q_OBJECT + + private slots: + void initTestCase(); + void cleanupTestCase(); + + void init(); + void cleanup(); + + void validation(); + void saving(); + void loading(); + + void setSpecies(); + void setLevel(); + + void abilities(); + void items(); + void moves(); + void natures(); + + void assignment(); + private: + Sigmod::MapTrainerTeamMember* m_teamMember1; + Sigmod::MapTrainerTeamMember* m_teamMember2; + Sigmod::MapTrainerTeamMember* m_teamMember3; +}; + +#endif -- cgit