diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-01-16 18:33:35 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-01-16 18:33:35 -0500 |
| commit | fcf8c8e4d67d9f43d15df549332ec0825f4ca795 (patch) | |
| tree | edeffe881490bc1075e63dde21fc7317c22b9860 /sigmod/test | |
| parent | 90fe1eae849394171040d0b7f5afb06984c8a202 (diff) | |
| download | sigen-fcf8c8e4d67d9f43d15df549332ec0825f4ca795.tar.gz sigen-fcf8c8e4d67d9f43d15df549332ec0825f4ca795.tar.xz sigen-fcf8c8e4d67d9f43d15df549332ec0825f4ca795.zip | |
Added Map tests
Diffstat (limited to 'sigmod/test')
| -rw-r--r-- | sigmod/test/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | sigmod/test/TestMap.cpp | 409 | ||||
| -rw-r--r-- | sigmod/test/TestMap.h | 61 |
3 files changed, 471 insertions, 1 deletions
diff --git a/sigmod/test/CMakeLists.txt b/sigmod/test/CMakeLists.txt index 26234479..974f3b74 100644 --- a/sigmod/test/CMakeLists.txt +++ b/sigmod/test/CMakeLists.txt @@ -35,7 +35,7 @@ MAKE_TEST(sigmod-tests libraries EggGroup) MAKE_TEST(sigmod-tests libraries GlobalScript) MAKE_TEST(sigmod-tests libraries Item) MAKE_TEST(sigmod-tests libraries ItemType) -# MAKE_TEST(sigmod-tests libraries Map) +MAKE_TEST(sigmod-tests libraries Map) MAKE_TEST(sigmod-tests libraries MapEffect) MAKE_TEST(sigmod-tests libraries MapTile) MAKE_TEST(sigmod-tests libraries MapTrainer) diff --git a/sigmod/test/TestMap.cpp b/sigmod/test/TestMap.cpp new file mode 100644 index 00000000..20e882a8 --- /dev/null +++ b/sigmod/test/TestMap.cpp @@ -0,0 +1,409 @@ +/* + * Copyright 2008-2009 Ben Boeckel <MathStuf@gmail.com> + * + * 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 <http://www.gnu.org/licenses/>. + */ + +// Header include +#include "TestMap.h" + +// Sigmod includes +#include "../Map.h" +#include "../MapEffect.h" +#include "../MapTile.h" +#include "../MapTrainer.h" +#include "../MapWarp.h" +#include "../MapWildList.h" +#include "../Sigmod.h" + +// Qt includes +#include <QtCore/QFile> +#include <QtTest/QTest> + +void TestMap::initTestCase() +{ + TestSigmodObject::initTestCase(); + + m_map1 = m_sigmod->newMap(); + m_map2 = m_sigmod->newMap(); + m_map3 = m_sigmod->newMap(); +} + +void TestMap::cleanupTestCase() +{ + TestSigmodObject::cleanupTestCase(); +} + +void TestMap::init() +{ + TestSigmodObject::init(); + + makeConnections(m_map1); + makeConnections(m_map2); + makeConnections(m_map3); +} + +void TestMap::cleanup() +{ + closeConnections(m_map1); + closeConnections(m_map2); + closeConnections(m_map3); + + TestSigmodObject::cleanup(); +} + +void TestMap::validation() +{ + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 4); + QCOMPARE(m_errors.size(), 2); + + m_map1->setName("Foo"); + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 8); + QCOMPARE(m_errors.size(), 3); + + m_map1->newWarp(); + + m_map1->setFlyWarp(0); + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 12); + QCOMPARE(m_errors.size(), 3); + + m_map1->deleteWarp(0); + + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 16); + QCOMPARE(m_errors.size(), 5); + + m_map1->setFlyWarp(-1); + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 20); + QCOMPARE(m_errors.size(), 6); + + m_map1->newEffect(); + + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 23); + QCOMPARE(m_errors.size(), 7); + + m_map1->newTile(); + + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 25); + QCOMPARE(m_errors.size(), 8); + + m_map1->newTrainer(); + + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 26); + QCOMPARE(m_errors.size(), 9); + + m_map1->newWarp(); + + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 27); + QCOMPARE(m_errors.size(), 9); + + m_map1->newWildList(); + + m_map1->validate(); + + QCOMPARE(m_warnings.size(), 27); + QCOMPARE(m_errors.size(), 9); +} + +void TestMap::saving() +{ + QDomDocument xml = Sigmod::Object::xml(m_map1); + QFile file("map.xml"); + + QVERIFY(file.open(QIODevice::WriteOnly)); + file.write(xml.toByteArray()); + file.close(); +} + +void TestMap::loading() +{ + QDomDocument xml; + QFile file("map.xml"); + + m_map1->newEffect(); + m_map1->newTile(); + m_map1->newTrainer(); + m_map1->newWarp(); + m_map1->newWildList(); + + m_map1->setName("Bar"); + m_map1->setFlyWarp(1); + m_map1->setType(Sigmod::Map::Dungeon); + m_map1->setWidth(5); + m_map1->setHeight(5); + + QVERIFY(file.open(QIODevice::ReadOnly)); + QVERIFY(xml.setContent(&file)); + m_map1->load(xml.firstChildElement("Map")); + + QCOMPARE(m_map1->name(), QString("Foo")); + QCOMPARE(m_map1->flyWarp(), -1); + // FIXME +// QEXPECT_FAIL(0, "Loading enumeration data from XML file doesn't work", Continue); + QCOMPARE(m_map1->type(), Sigmod::Map::Outdoor); + QCOMPARE(m_map1->width(), 1); + QCOMPARE(m_map1->height(), 1); + QCOMPARE(m_map1->effectCount(), 1); + QCOMPARE(m_map1->tileCount(), 1); + QCOMPARE(m_map1->trainerCount(), 1); + QCOMPARE(m_map1->warpCount(), 1); + QCOMPARE(m_map1->wildListCount(), 1); +} + +void TestMap::setName() +{ + m_map2->setName("Foo"); + m_map2->setName("Foo"); + + QCOMPARE(m_map2->name(), QString("Foo")); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::setFlyWarp() +{ + m_map2->setFlyWarp(0); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_map2->newWarp(); + + m_map2->setFlyWarp(0); + m_map2->setFlyWarp(0); + + QCOMPARE(m_map2->flyWarp(), 0); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_map2->setFlyWarp(-1); + m_map2->setFlyWarp(-1); + + QCOMPARE(m_map2->flyWarp(), -1); + + QCOMPARE(m_changedCount, 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); +} + +void TestMap::setType() +{ + m_map2->setType(Sigmod::Map::Dungeon); + m_map2->setType(Sigmod::Map::Dungeon); + + QCOMPARE(m_map2->type(), Sigmod::Map::Dungeon); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::setWidth() +{ + m_map2->setWidth(0); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_map2->setWidth(5); + m_map2->setWidth(5); + + QCOMPARE(m_map2->width(), 5); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); +} + +void TestMap::setHeight() +{ + m_map2->setHeight(0); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); + + m_map2->setHeight(5); + m_map2->setHeight(5); + + QCOMPARE(m_map2->height(), 5); + + QCOMPARE(m_changedCount, 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 1); +} + +void TestMap::effects() +{ + QCOMPARE(m_map2->newEffect()->id(), 0); + QCOMPARE(m_map2->newEffect()->id(), 1); + QCOMPARE(m_map2->newEffect()->id(), 2); + + QCOMPARE(m_map2->effectCount(), 3); + + m_map2->deleteEffect(0); + + QCOMPARE(m_map2->effectCount(), 2); + + QCOMPARE(m_map2->newEffect()->id(), 0); + + QCOMPARE(m_map2->effectIndex(0), 2); + + m_map2->deleteEffectById(1); + + QCOMPARE(m_map2->effectIndex(0), 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::tiles() +{ + QCOMPARE(m_map2->newTile()->id(), 0); + QCOMPARE(m_map2->newTile()->id(), 1); + QCOMPARE(m_map2->newTile()->id(), 2); + + QCOMPARE(m_map2->tileCount(), 3); + + m_map2->deleteTile(0); + + QCOMPARE(m_map2->tileCount(), 2); + + QCOMPARE(m_map2->newTile()->id(), 0); + + QCOMPARE(m_map2->tileIndex(0), 2); + + m_map2->deleteTileById(1); + + QCOMPARE(m_map2->tileIndex(0), 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::trainers() +{ + QCOMPARE(m_map2->newTrainer()->id(), 0); + QCOMPARE(m_map2->newTrainer()->id(), 1); + QCOMPARE(m_map2->newTrainer()->id(), 2); + + QCOMPARE(m_map2->trainerCount(), 3); + + m_map2->deleteTrainer(0); + + QCOMPARE(m_map2->trainerCount(), 2); + + QCOMPARE(m_map2->newTrainer()->id(), 0); + + QCOMPARE(m_map2->trainerIndex(0), 2); + + m_map2->deleteTrainerById(1); + + QCOMPARE(m_map2->trainerIndex(0), 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::warps() +{ + QCOMPARE(m_map2->newWarp()->id(), 1); + QCOMPARE(m_map2->newWarp()->id(), 2); + QCOMPARE(m_map2->newWarp()->id(), 3); + + QCOMPARE(m_map2->warpCount(), 4); + + m_map2->deleteWarp(0); + + QCOMPARE(m_map2->warpCount(), 3); + + QCOMPARE(m_map2->newWarp()->id(), 0); + + QCOMPARE(m_map2->warpIndex(0), 3); + + m_map2->deleteWarpById(1); + + QCOMPARE(m_map2->warpIndex(0), 2); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::wildLists() +{ + QCOMPARE(m_map2->newWildList()->id(), 0); + QCOMPARE(m_map2->newWildList()->id(), 1); + QCOMPARE(m_map2->newWildList()->id(), 2); + + QCOMPARE(m_map2->wildListCount(), 3); + + m_map2->deleteWildList(0); + + QCOMPARE(m_map2->wildListCount(), 2); + + QCOMPARE(m_map2->newWildList()->id(), 0); + + QCOMPARE(m_map2->wildListIndex(0), 2); + + m_map2->deleteWildListById(1); + + QCOMPARE(m_map2->wildListIndex(0), 1); + + QCOMPARE(m_warnings.size(), 0); + QCOMPARE(m_errors.size(), 0); +} + +void TestMap::assignment() +{ + *m_map3 = *m_map2; + + QCOMPARE(m_map3->name(), QString("Foo")); + QCOMPARE(m_map3->flyWarp(), -1); + QCOMPARE(m_map3->type(), Sigmod::Map::Dungeon); + QCOMPARE(m_map3->width(), 5); + QCOMPARE(m_map3->height(), 5); + QCOMPARE(m_map3->effectCount(), 2); + QCOMPARE(m_map3->tileCount(), 2); + QCOMPARE(m_map3->trainerCount(), 2); + QCOMPARE(m_map3->warpCount(), 3); + QCOMPARE(m_map3->wildListCount(), 2); +} + +QTEST_APPLESS_MAIN(TestMap) diff --git a/sigmod/test/TestMap.h b/sigmod/test/TestMap.h new file mode 100644 index 00000000..e0912ec3 --- /dev/null +++ b/sigmod/test/TestMap.h @@ -0,0 +1,61 @@ +/* + * Copyright 2008-2009 Ben Boeckel <MathStuf@gmail.com> + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#ifndef SIGMOD_TESTMAP +#define SIGMOD_TESTMAP + +// Test includes +#include "TestSigmodObject.h" + +// Sigmod includes +#include "../Map.h" + +class TestMap : public TestSigmodObject +{ + Q_OBJECT + + private slots: + void initTestCase(); + void cleanupTestCase(); + + void init(); + void cleanup(); + + void validation(); + void saving(); + void loading(); + + void setName(); + void setFlyWarp(); + void setType(); + void setWidth(); + void setHeight(); + + void effects(); + void tiles(); + void trainers(); + void warps(); + void wildLists(); + + void assignment(); + private: + Sigmod::Map* m_map1; + Sigmod::Map* m_map2; + Sigmod::Map* m_map3; +}; + +#endif |
