Implements clans and tests.

This commit is contained in:
2023-04-15 23:25:00 -07:00
parent 670c517326
commit 2e937ce02c
3 changed files with 155 additions and 3 deletions

View File

@@ -0,0 +1,19 @@
#include "Clans.h"
#include <string>
#include <vector>
namespace SBF {
std::string GetClanLabel(int clanId) {
if (clanId > 0 && clanId <= kClansCount) {
return kClanLabels[clanId];
}
return "";
}
void FillClanLabels(std::vector<std::string>& labels) {
labels.clear();
for (int id = 1; id <= kClansCount; id++) {
labels.push_back(GetClanLabel(id));
}
}
} // End namespace SBF

View File

@@ -41,7 +41,7 @@ namespace SBF {
const int kClanVentrue = 18; const int kClanVentrue = 18;
const std::string kClanVentrueLabel = "Ventrue"; const std::string kClanVentrueLabel = "Ventrue";
const int kClansCount = 18; const int kClansCount = 18;
const std::string kClans[] = { const std::string kClanLabels[] = {
"", "",
kClanAnarchLabel, kClanAnarchLabel,
kClanAssamiteLabel, kClanAssamiteLabel,
@@ -49,6 +49,7 @@ namespace SBF {
kClanBrujahLabel, kClanBrujahLabel,
kClanCaitiffLabel, kClanCaitiffLabel,
kClanCappadocianLabel, kClanCappadocianLabel,
kClanGangrelLabel,
kClanGiovanniLabel, kClanGiovanniLabel,
kClanInconnuLabel, kClanInconnuLabel,
kClanLasombraLabel, kClanLasombraLabel,
@@ -58,9 +59,10 @@ namespace SBF {
kClanSettiteLabel, kClanSettiteLabel,
kClanToreadorLabel, kClanToreadorLabel,
kClanTremereLabel, kClanTremereLabel,
kClanTzismiceLabel,
kClanVentrueLabel, kClanVentrueLabel,
}; };
const std::string& GetClanLabel(int clanId); std::string GetClanLabel(int clanId);
void FillClanLabels(std::vector<std::string> clans); void FillClanLabels(std::vector<std::string>& clans);
} // End namespace SBF } // End namespace SBF
#endif // End !defined CLANS_H__ #endif // End !defined CLANS_H__

View File

@@ -1,10 +1,141 @@
#include "Clans.h" #include "Clans.h"
#include "test.h" #include "test.h"
#include <string>
#include <tuple>
#include <vector>
#include <sstream>
using namespace SBF; using namespace SBF;
using namespace Test; using namespace Test;
using namespace std;
namespace Test::Clans {
TestResults test_GetClanLabel();
TestResults test_FillClanLabels();
} // End namespace Test::Clans
using namespace Test::Clans;
TestResults main_test_Clans(int argc, char** argv) { TestResults main_test_Clans(int argc, char** argv) {
TestResults results; TestResults results;
results += test_GetClanLabel();
results += test_FillClanLabels();
return results; return results;
} }
namespace Test::Clans {
TestResults test_GetClanLabel() {
return execute_suite<string, int>(make_test_suite(
"SBF::GetClanLabel",
GetClanLabel,
vector<TestTuple<string, int>>({
make_test<string, int>(
"should get \"\" for invalid clan 0",
"",
make_tuple(0)),
make_test<string, int>(
"should get \"Anarch\" for clan 1 kClanAnarch",
"Anarch",
make_tuple(1)),
make_test<string, int>(
"should get \"Assamite\" for clan 2 kClanAssamite",
"Assamite",
make_tuple(2)),
make_test<string, int>(
"should get \"Baali\" for clan 3 kClanBaali",
"Baali",
make_tuple(3)),
make_test<string, int>(
"should get \"Brujah\" for clan 4 kClanBrujah",
"Brujah",
make_tuple(4)),
make_test<string, int>(
"should get \"Caitiff\" for clan 5 kClanCaitiff",
"Caitiff",
make_tuple(5)),
make_test<string, int>(
"should get \"Cappadocian\" for clan 6 kClanCappadocian",
"Cappadocian",
make_tuple(6)),
make_test<string, int>(
"should get \"Gangrel\" for clan 7 kClanGangrel",
"Gangrel",
make_tuple(7)),
make_test<string, int>(
"should get \"Giovanni\" for clan 8 kClanGiovanni",
"Giovanni",
make_tuple(8)),
make_test<string, int>(
"should get \"Inconnu\" for clan 9 kClanInconnu",
"Inconnu",
make_tuple(9)),
make_test<string, int>(
"should get \"Lasombra\" for clan 10 kClanLasombra",
"Lasombra",
make_tuple(10)),
make_test<string, int>(
"should get \"Malkavian\" for clan 11 kClanMalkavian",
"Malkavian",
make_tuple(11)),
make_test<string, int>(
"should get \"Nosferatu\" for clan 12 kClanNosferatu",
"Nosferatu",
make_tuple(12)),
make_test<string, int>(
"should get \"Ravanos\" for clan 13 kClanRavanos",
"Ravanos",
make_tuple(13)),
make_test<string, int>(
"should get \"Settite\" for clan 14 kClanSettite",
"Settite",
make_tuple(14)),
make_test<string, int>(
"should get \"Toreador\" for clan 15 kClanToreador",
"Toreador",
make_tuple(15)),
make_test<string, int>(
"should get \"Tremere\" for clan 16 kClanTremere",
"Tremere",
make_tuple(16)),
make_test<string, int>(
"should get \"Tzismice\" for clan 17 kClanTzismice",
"Tzismice",
make_tuple(17)),
make_test<string, int>(
"should get \"Ventrue\" for clan 18 kClanVentrue",
"Ventrue",
make_tuple(18)),
make_test<string, int>(
"should get \"\" for invalid clan 19",
"",
make_tuple(19)),
})
));
}
TestResults test_FillClanLabels() {
return execute_suite<string>(make_test_suite(
"SBF::FillClanLabels",
[]()->string {
ostringstream error_message;
vector<string> expected = {"Anarch", "Assamite", "Baali", "Brujah", "Caitiff", "Cappadocian", "Gangrel", "Giovanni", "Inconnu", "Lasombra", "Malkavian", "Nosferatu", "Ravanos", "Settite", "Toreador", "Tremere", "Tzismice", "Ventrue"};
vector<string> actual = {"This should be removed."};
FillClanLabels(actual);
compare(error_message, expected, actual);
string error = error_message.str();
if (error.size() > 0) {
return error;
}
return "no errors";
},
vector<TestTuple<string>>({
make_test<string>(
"should fill clan labels",
"no errors",
make_tuple()),
})
));
}
} // End namespace Test::Clans