From 7fac9bd6e24165046e14ff5450bce863ebe397e9 Mon Sep 17 00:00:00 2001 From: Phitherek Date: Fri, 22 Mar 2013 10:11:23 +0100 Subject: [PATCH] added test for ModDescription class --- ModDescription.cpp | 11 +++++++---- ModDescription.h | 4 ++-- OBJECTS | 2 +- filetesters/configparser | Bin 0 -> 44421 bytes filetesters/modinfoparser | Bin 0 -> 39956 bytes filetesters/modlistparser | Bin 0 -> 40026 bytes tests/Makefile | 4 +++- tests/ModDescriptionTest.cpp | 26 ++++++++++++++++++++++++++ 8 files changed, 39 insertions(+), 8 deletions(-) create mode 100755 filetesters/configparser create mode 100755 filetesters/modinfoparser create mode 100755 filetesters/modlistparser create mode 100644 tests/ModDescriptionTest.cpp diff --git a/ModDescription.cpp b/ModDescription.cpp index 24ab406..515ded0 100644 --- a/ModDescription.cpp +++ b/ModDescription.cpp @@ -35,12 +35,12 @@ int ModDescription::getReleaseNr() { } std::string ModDescription::getNextDependency() { - if(_depsIterator + 2 < _deps.size()) { + if(_depsIterator + 1 < _deps.size()) { _depsIterator++; return _deps[_depsIterator]; } else { _depsAtEnd = true; - return "getNextDependency failed..."; + return ""; } } @@ -79,10 +79,13 @@ void ModDescription::setRepositoryAddress(std::string repoaddr) { _repoaddr = repoaddr; } -void resetDependencyIterator() { +void ModDescription::resetDependencyIterator() { _depsIterator = -1; + if(_depsAtEnd == true) { + _depsAtEnd = false; + } } -bool dependenciesEnd() { +bool ModDescription::dependenciesEnd() { return _depsAtEnd; } diff --git a/ModDescription.h b/ModDescription.h index e02d295..d41bfe4 100644 --- a/ModDescription.h +++ b/ModDescription.h @@ -10,7 +10,7 @@ /// \namespace mmm /// \brief A global namespace for 3m -namespace mmm } +namespace mmm { /// \class ModDescription /// \brief A class describing a mod. class ModDescription { @@ -30,7 +30,7 @@ public: ///< \return Mod name. std::string getDescription(); ///< \brief A function returning mod description. ///< \return Mod description. - std::string getReleaseNr(); ///< \brief A function returning 3m package release number. + int getReleaseNr(); ///< \brief A function returning 3m package release number. ///< \return 3m package release number. std::string getNextDependency(); ///< \brief A function returning next dependency from the dependency list. ///< \return Next dependency from the dependency list. diff --git a/OBJECTS b/OBJECTS index 4bc15eb..fb9b29f 100644 --- a/OBJECTS +++ b/OBJECTS @@ -1,5 +1,5 @@ ModDescription: name, description, release, deps, repotype, repoaddr -ModList: name, vector +ModList: ModListDescription, vector LocalModDescription: ModDescription + remoteModlist (inheritance) LocalModList: vector RepositoryModDescription: ModDescription + path (inheritance) diff --git a/filetesters/configparser b/filetesters/configparser new file mode 100755 index 0000000000000000000000000000000000000000..f8f960f086d33ee33018e7aa6dad5ee69329ad30 GIT binary patch literal 44421 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 ZY+I;USVV)sJPfo}eXzE{;^*Pk{{=B65kLR{ literal 0 HcmV?d00001 diff --git a/filetesters/modlistparser b/filetesters/modlistparser new file mode 100755 index 0000000000000000000000000000000000000000..76dba76ff41779396267e9a3285de719cc3d7ecf GIT binary patch literal 40026 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ǣAA$evy(dmwB0L1r^JDBlBmVCH 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 X8!|@yh=P46>QD literal 0 HcmV?d00001 diff --git a/tests/Makefile b/tests/Makefile index 60461c7..3ea4225 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,7 +1,9 @@ CXXFLAGS=-Wall all: ${CXX} ${CXXFLAGS} -o ConfigFileTest ConfigFileTest.cpp ../ConfigFile.cpp ../3mExceptions.cpp + ${CXX} ${CXXFLAGS} -o ModDescriptionTest ModDescriptionTest.cpp ../ModDescription.cpp debug: ${CXX} ${CXXFLAGS} -o ConfigFileTest ConfigFileTest.cpp ../ConfigFile.cpp ../3mExceptions.cpp -g + ${CXX} ${CXXFLAGS} -o ModDescriptionTest ModDescriptionTest.cpp ../ModDescription.cpp -g clean: - rm -rf ConfigFileTest + rm -rf ConfigFileTest ModDescriptionTest diff --git a/tests/ModDescriptionTest.cpp b/tests/ModDescriptionTest.cpp new file mode 100644 index 0000000..110d955 --- /dev/null +++ b/tests/ModDescriptionTest.cpp @@ -0,0 +1,26 @@ +#include +#include +#include "../ModDescription.h" +using namespace std; + +int main() { +mmm::ModDescription md; +md.setName("test"); +md.setDescription("Test ModDescription entry"); +md.setReleaseNr(1); +md.setRepositoryType("archive"); +md.setRepositoryAddress("http://example.tld/mod.zip"); +md.insertDependency("test2"); +md.insertDependency("test3"); +cout << "Name: " << md.getName() << endl << "Description: " << md.getDescription() << endl << "Release number: " << md.getReleaseNr() << endl << "Depends on: "; +while(!md.dependenciesEnd()) { + cout << md.getNextDependency() << " "; +} +cout << endl << "Dependencies again: "; +md.resetDependencyIterator(); +while(!md.dependenciesEnd()) { + cout << md.getNextDependency() << " "; +} +cout << endl << "Repository type: " << md.getRepositoryType() << endl << "Repository address: " << md.getRepositoryAddress() << endl; +return EXIT_SUCCESS; +}