summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-01-10 17:47:20 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-01-10 17:47:20 -0500
commitd1eb604239e648cab0dc5dc0cc8b2e5bfa7e1e48 (patch)
treee66cddf3fc40868b0cc87c35e76daafde076af08
parente89bd3faacaabcd8eb1ac4262e9adf633e179e87 (diff)
downloadsigen-d1eb604239e648cab0dc5dc0cc8b2e5bfa7e1e48.tar.gz
sigen-d1eb604239e648cab0dc5dc0cc8b2e5bfa7e1e48.tar.xz
sigen-d1eb604239e648cab0dc5dc0cc8b2e5bfa7e1e48.zip
Checking items in MapTrainerTeamMember includes count checking as well
-rw-r--r--sigmod/Macros.h2
-rw-r--r--sigmod/MapTrainerTeamMember.cpp8
-rw-r--r--sigmod/MapTrainerTeamMember.h2
-rw-r--r--sigmod/test/TestMapTrainerTeamMember.cpp24
4 files changed, 19 insertions, 17 deletions
diff --git a/sigmod/Macros.h b/sigmod/Macros.h
index 8f267666..3cb0dd1f 100644
--- a/sigmod/Macros.h
+++ b/sigmod/Macros.h
@@ -79,7 +79,7 @@
#define TEST_MAP(variable) \
const QList<int> variable##_keys = m_##variable.keys(); \
foreach (int variable, variable##_keys) \
- variable##Check(variable)
+ variable##Check(variable, m_##variable[variable])
#define TEST_MATRIX(variable) \
for (int i = 0; i < m_##variable.height(); ++i) \
{ \
diff --git a/sigmod/MapTrainerTeamMember.cpp b/sigmod/MapTrainerTeamMember.cpp
index caaec773..a40cd832 100644
--- a/sigmod/MapTrainerTeamMember.cpp
+++ b/sigmod/MapTrainerTeamMember.cpp
@@ -108,8 +108,7 @@ SETTER_LIST_LIMIT(MapTrainerTeamMember, Ability, ability, sigmod()->rules()->max
void Sigmod::MapTrainerTeamMember::setItem(const int item, const int count)
{
- TBOUNDS("item count", 0, INT_MAX, count);
- if (count && itemCheck(item) && (!m_item.contains(item) || (count != m_item[item])))
+ if (count && itemCheck(item, count) && (!m_item.contains(item) || (count != m_item[item])))
{
const QList<int> items = m_item.keys();
int total = count;
@@ -152,7 +151,10 @@ GETTER_LIST(MapTrainerTeamMember, nature)
CHECK_INDEX(MapTrainerTeamMember, int, species, sigmod(), species)
CHECK_BOUNDS(MapTrainerTeamMember, int, level, 1, sigmod()->rules()->maxLevel())
CHECK_INDEX(MapTrainerTeamMember, int, ability, sigmod(), ability)
-CHECK_INDEX(MapTrainerTeamMember, int, item, sigmod(), item)
+CHECK_BEGIN_ARRAY(MapTrainerTeamMember, int, item, count, int, item)
+ IBOUNDS(item, sigmod(), item);
+ TBOUNDS_MOD(item_count, 0, sigmod()->rules()->maxHeldItems(), count)
+CHECK_END()
CHECK_BEGIN(MapTrainerTeamMember, int, move)
IBOUNDS(move, sigmod(), move);
if (!canLearn(move))
diff --git a/sigmod/MapTrainerTeamMember.h b/sigmod/MapTrainerTeamMember.h
index 852148b5..07dbb7a3 100644
--- a/sigmod/MapTrainerTeamMember.h
+++ b/sigmod/MapTrainerTeamMember.h
@@ -66,7 +66,7 @@ class SIGMOD_EXPORT MapTrainerTeamMember : public Object
bool speciesCheck(const int species) const;
bool levelCheck(const int level) const;
bool abilityCheck(const int ability) const;
- bool itemCheck(const int item) const;
+ bool itemCheck(const int item, const int count) const;
bool moveCheck(const int move) const;
bool natureCheck(const int nature) const;
diff --git a/sigmod/test/TestMapTrainerTeamMember.cpp b/sigmod/test/TestMapTrainerTeamMember.cpp
index 66585b32..413033c4 100644
--- a/sigmod/test/TestMapTrainerTeamMember.cpp
+++ b/sigmod/test/TestMapTrainerTeamMember.cpp
@@ -141,28 +141,28 @@ void TestMapTrainerTeamMember::validation()
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 6);
+ QCOMPARE(m_errors.size(), 7);
m_sigmod->rules()->setMaxHeldItems(1);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 6);
+ QCOMPARE(m_errors.size(), 7);
m_sigmod->item(0)->setWeight(25);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 7);
+ QCOMPARE(m_errors.size(), 8);
m_sigmod->item(0)->setWeight(5);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 7);
+ QCOMPARE(m_errors.size(), 8);
m_sigmod->rules()->setMaxMoves(2);
m_sigmod->newMove();
@@ -175,35 +175,35 @@ void TestMapTrainerTeamMember::validation()
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 7);
+ QCOMPARE(m_errors.size(), 8);
m_sigmod->rules()->setMaxMoves(1);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 8);
+ QCOMPARE(m_errors.size(), 9);
m_sigmod->rules()->setMaxMoves(2);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 8);
+ QCOMPARE(m_errors.size(), 9);
m_sigmod->species(0)->deleteMove(1);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 9);
+ QCOMPARE(m_errors.size(), 10);
m_sigmod->species(0)->newMove()->setMove(1);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 9);
+ QCOMPARE(m_errors.size(), 10);
m_sigmod->rules()->setMaxNatures(1);
m_sigmod->newNature();
@@ -212,21 +212,21 @@ void TestMapTrainerTeamMember::validation()
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 9);
+ QCOMPARE(m_errors.size(), 10);
m_sigmod->rules()->setMaxNatures(0);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 10);
+ QCOMPARE(m_errors.size(), 11);
m_sigmod->rules()->setMaxNatures(1);
m_teamMember1->validate();
QCOMPARE(m_warnings.size(), 0);
- QCOMPARE(m_errors.size(), 10);
+ QCOMPARE(m_errors.size(), 11);
}
void TestMapTrainerTeamMember::saving()