#include "Abilities.h" #include #include #include "test.h" using namespace SBF; using namespace Test; using namespace std; namespace Test::Abilities { TestResults test_AbilityType_operator_extract(); TestResults test_AbilityType_operator_equal_to(); TestResults test_AbilityType_operator_not_equal_to(); TestResults test_FillAbilities(); TestResults test_FillAbilitiesForAbilityGroup(); TestResults test_FillAbilityLabels(); TestResults test_FillKnowledgeLabels(); TestResults test_FillSkillLabels(); TestResults test_FillTalentLabels(); TestResults test_GetAbility(); TestResults test_GetAbilityLabel(); TestResults test_GetKnowledgeLabel(); TestResults test_GetNumItemsForAbilityGroup(); TestResults test_GetSkillLabel(); TestResults test_GetTalentLabel(); } // End namespace Test::Abilities using namespace Test::Abilities; TestResults main_test_Abilities(int argc, char* argv[]) { TestResults results; results += test_AbilityType_operator_extract(); results += test_AbilityType_operator_equal_to(); results += test_AbilityType_operator_not_equal_to(); results += test_FillAbilities(); results += test_FillAbilitiesForAbilityGroup(); results += test_FillAbilityLabels(); results += test_FillKnowledgeLabels(); results += test_FillSkillLabels(); results += test_FillTalentLabels(); results += test_GetAbility(); results += test_GetAbilityLabel(); results += test_GetKnowledgeLabel(); results += test_GetNumItemsForAbilityGroup(); results += test_GetSkillLabel(); results += test_GetTalentLabel(); return results; } int main(int argc, char* argv[]) { TestResults results = main_test_Abilities(argc, argv); PrintResults(cout, results); return results.failed() + results.errors(); } namespace Test::Abilities { TestResults test_AbilityType_operator_extract() { return execute_suite(make_test_suite( "SBF::AbilityType::operator<<", [](const AbilityType& ability) { ostringstream os; os << ability; return os.str(); }, vector>({ make_test("should print talents", "AbilityGroup: {id: 1, singular: \"Talent\", plural: \"Talents\"}", make_tuple(kAbilityGroupTalents)), make_test("should print skills", "AbilityGroup: {id: 2, singular: \"Skill\", plural: \"Skills\"}", make_tuple(kAbilityGroupSkills)), make_test("should print knowledges", "AbilityGroup: {id: 3, singular: \"Knowledge\", plural: \"Knowledges\"}", make_tuple(kAbilityGroupKnowledges)), make_test("should print an unknown ability group", "AbilityGroup: {id: 0, singular: \"\", plural: \"\"}", make_tuple(kAbilityGroupUnknown)), }))); } TestResults test_AbilityType_operator_equal_to() { return execute_suite(make_test_suite( "SBF::AbilityType::operator==", [](const AbilityType& left, const AbilityType& right) { return left == right; }, vector>({ make_test("should return true when comparing an ability group to itself", true, make_tuple(kAbilityGroupTalents, kAbilityGroupTalents)), make_test( "should return true when comparing two different instances created with the same values", true, make_tuple(kAbilityGroupSkills, AbilityType({kAbilitySkillsId, kAbilitySkillsSingular, kAbilitySkillsPlural}))), make_test("should return false when comparing two different ability gropus", false, make_tuple(kAbilityGroupKnowledges, kAbilityGroupSkills)), }))); } TestResults test_AbilityType_operator_not_equal_to() { return execute_suite(make_test_suite( "SBF::AbilityType::operator!=", [](const AbilityType& left, const AbilityType& right) { return left != right; }, vector>({ make_test("should return false when comparing an ability group to itself", false, make_tuple(kAbilityGroupTalents, kAbilityGroupTalents)), make_test( "should return false when comparing two different instances created with the same values", false, make_tuple(kAbilityGroupSkills, AbilityType({kAbilitySkillsId, kAbilitySkillsSingular, kAbilitySkillsPlural}))), make_test("should return true when comparing two different ability gropus", true, make_tuple(kAbilityGroupKnowledges, kAbilityGroupSkills)), }))); } TestResults test_FillAbilities() { return execute_suite(make_test_suite( "SBF::FillAbilities", []() -> string { ostringstream error_message; vector actual = {{-1, "This should be removed.", "This should be removed."}}; vector expected = {kAbilityGroupTalents, kAbilityGroupSkills, kAbilityGroupKnowledges}; FillAbilities(actual); compare(error_message, expected, actual); string error = error_message.str(); if (error.size() > 0) { return error; } return "no errors"; }, vector>({ make_test("should fill abilities", "no errors", make_tuple()), }))); } TestResults test_FillAbilitiesForAbilityGroup() { return execute_suite, int>(make_test_suite( "SBF::FillAbilitiesForAbilityGroup", [](int groupId) { vector abilities = {"This should be removed."}; FillAbilitiesForAbilityGroup(abilities, groupId); return abilities; }, vector, int>>({ make_test, int>( "should clear the vector for group 0, kAbilityGropuUnknownId", {}, make_tuple(0)), make_test, int>("should fill talents for group 1 kAbilityGroupTalentsId", { "Acting", "Alertness", "Athletics", "Brawl", "Dodge", "Empathy", "Intimidation", "Leadership", "Streetwise", "Subterfuge", }, //, "Alertness", "Athletics", "Brawl", "Dodge", "Empathy", //"Intimidation", "Leadership", "Streetwise", "Subterfuge" make_tuple(1)), make_test, int>("should fill skills for group 2 kAbilityGroupSkillsId", { "Animal Ken", "Drive", "Etiquette", "Firearms", "Melee", "Music", "Repair", "Security", "Stealth", "Survival", }, make_tuple(2)), make_test, int>("should fill knowledges for group 3 kAbilityGroupKnowledgesId", { "Bureaucracy", "Computer", "Finance", "Investigation", "Law", "Linguistics", "Medicine", "Occult", "Politics", "Science", }, make_tuple(3)), make_test, int>("should clear the vector for group 4 an invalid id", {}, make_tuple(4)), }))); } TestResults test_FillAbilityLabels() { return execute_suite, int>(make_test_suite( "SBF::FillAbilityLabels", [](int groupId) { vector abilities = {"This should be removed."}; FillAbilityLabels(abilities, groupId); return abilities; }, vector, int>>({ make_test, int>( "should clear the vector for group 0, kAbilityGropuUnknownId", {}, make_tuple(0)), make_test, int>("should fill talents for group 1 kAbilityGroupTalentsId", { "Acting", "Alertness", "Athletics", "Brawl", "Dodge", "Empathy", "Intimidation", "Leadership", "Streetwise", "Subterfuge", }, make_tuple(1)), make_test, int>("should fill skills for group 2 kAbilityGroupSkillsId", { "Animal Ken", "Drive", "Etiquette", "Firearms", "Melee", "Music", "Repair", "Security", "Stealth", "Survival", }, make_tuple(2)), make_test, int>("should fill knowledges for group 3 kAbilityGroupKnowledgesId", { "Bureaucracy", "Computer", "Finance", "Investigation", "Law", "Linguistics", "Medicine", "Occult", "Politics", "Science", }, make_tuple(3)), make_test, int>("should clear the vector for group 4 an invalid id", {}, make_tuple(4)), }))); } TestResults test_FillKnowledgeLabels() { return execute_suite(make_test_suite( "SBF::FillKnowlegeLabels", []() -> string { ostringstream error_message; vector actual = {"This should be removed."}; vector expected = { "Bureaucracy", "Computer", "Finance", "Investigation", "Law", "Linguistics", "Medicine", "Occult", "Politics", "Science", }; FillKnowledgeLabels(actual); compare(error_message, expected, actual); string error = error_message.str(); if (error.size() > 0) { return error; } return "no errors"; }, vector>({ make_test("should fill knowledge labels", "no errors", make_tuple()), }))); } TestResults test_FillSkillLabels() { return execute_suite(make_test_suite( "SBF::FillSkillLabels", []() -> string { ostringstream error_message; vector actual = {"This should be removed."}; vector expected = { "Animal Ken", "Drive", "Etiquette", "Firearms", "Melee", "Music", "Repair", "Security", "Stealth", "Survival", }; FillSkillLabels(actual); compare(error_message, expected, actual); string error = error_message.str(); if (error.size() > 0) { return error; } return "no errors"; }, vector>({ make_test("should fill skill labels", "no errors", make_tuple()), }))); } TestResults test_FillTalentLabels() { return execute_suite(make_test_suite( "SBF::FillTalentLabels", []() -> string { ostringstream error_message; vector actual = {"This should be removed."}; vector expected = { "Acting", "Alertness", "Athletics", "Brawl", "Dodge", "Empathy", "Intimidation", "Leadership", "Streetwise", "Subterfuge", }; FillTalentLabels(actual); compare(error_message, expected, actual); string error = error_message.str(); if (error.size() > 0) { return error; } return "no errors"; }, vector>({ make_test("should fill knowledge labels", "no errors", make_tuple()), }))); } TestResults test_GetAbility() { return execute_suite(make_test_suite( "SBF::GetAbility", GetAbility, vector>({ make_test("should get talents", kAbilityGroupTalents, make_tuple(kAbilityTalentsId)), make_test("should get skills", kAbilityGroupSkills, make_tuple(kAbilitySkillsId)), make_test( "should get knowledges", kAbilityGroupKnowledges, make_tuple(kAbilityKnowledgesId)), make_test("should get unknown for id 0", kAbilityGroupUnknown, make_tuple(0)), make_test("should get unknown for an invalid id", kAbilityGroupUnknown, make_tuple(4)), }))); } TestResults test_GetAbilityLabel() { return execute_suite(make_test_suite( "SBF::GetAbilityLabel", GetAbilityLabel, vector>({ make_test("should get Acting for group 1 and id 1", "Acting", make_tuple(1, 1)), make_test("should get Alertness for group 1 and id 2", "Alertness", make_tuple(1, 2)), make_test("should get Athletics for group 1 and id 3", "Athletics", make_tuple(1, 3)), make_test("should get Brawl for group 1 and id 4", "Brawl", make_tuple(1, 4)), make_test("should get Dodge for group 1 and id 5", "Dodge", make_tuple(1, 5)), make_test("should get Empathy for group 1 and id 6", "Empathy", make_tuple(1, 6)), make_test("should get Intimidation for group 1 and id 7", "Intimidation", make_tuple(1, 7)), make_test("should get Leadership for group 1 and id 8", "Leadership", make_tuple(1, 8)), make_test("should get Streetwise for group 1 and id 9", "Streetwise", make_tuple(1, 9)), make_test("should get Subterfuge for group 1 and id 10", "Subterfuge", make_tuple(1, 10)), make_test("should get Animal Ken for group 2 and id 1", "Animal Ken", make_tuple(2, 1)), make_test("should get Drive for group 2 and id 2", "Drive", make_tuple(2, 2)), make_test("should get Etiquette for group 2 and id 3", "Etiquette", make_tuple(2, 3)), make_test("should get Firearms for group 2 and id 4", "Firearms", make_tuple(2, 4)), make_test("should get Melee for group 2 and id 5", "Melee", make_tuple(2, 5)), make_test("should get Music for group 2 and id 6", "Music", make_tuple(2, 6)), make_test("should get Repair for group 2 and id 7", "Repair", make_tuple(2, 7)), make_test("should get Security for group 2 and id 8", "Security", make_tuple(2, 8)), make_test("should get Stealth for group 2 and id 9", "Stealth", make_tuple(2, 9)), make_test("should get Survival for group 2 and id 10", "Survival", make_tuple(2, 10)), make_test("should get Bureaucracy for group 3 and id 1", "Bureaucracy", make_tuple(3, 1)), make_test("should get Computer for group 3 and id 2", "Computer", make_tuple(3, 2)), make_test("should get Finance for group 3 and id 3", "Finance", make_tuple(3, 3)), make_test( "should get Investigation for group 3 and id 4", "Investigation", make_tuple(3, 4)), make_test("should get Law for group 3 and id 5", "Law", make_tuple(3, 5)), make_test("should get Linguistics for group 3 and id 6", "Linguistics", make_tuple(3, 6)), make_test("should get Medicine for group 3 and id 7", "Medicine", make_tuple(3, 7)), make_test("should get Occult for group 3 and id 8", "Occult", make_tuple(3, 8)), make_test("should get Politics for group 3 and id 9", "Politics", make_tuple(3, 9)), make_test("should get Science for group 3 and id 10", "Science", make_tuple(3, 10)), make_test("should get and empty string for group 0 and id 0", "", make_tuple(0, 0)), make_test("should get and empty string for group 1 and id 11", "", make_tuple(1, 11)), make_test("should get and empty string for group 4 and id 1", "", make_tuple(4, 1)), }))); } TestResults test_GetKnowledgeLabel() { return execute_suite( make_test_suite("SBF::GetKnowledgeLabel", GetKnowledgeLabel, vector>({ make_test("should get Bureaucracy for id 1", "Bureaucracy", make_tuple(1)), make_test("should get Computer for id 2", "Computer", make_tuple(2)), make_test("should get Finance for id 3", "Finance", make_tuple(3)), make_test("should get Investigation for id 4", "Investigation", make_tuple(4)), make_test("should get Law for id 5", "Law", make_tuple(5)), make_test("should get Linguistics for id 6", "Linguistics", make_tuple(6)), make_test("should get Medicine for id 7", "Medicine", make_tuple(7)), make_test("should get Occult for id 8", "Occult", make_tuple(8)), make_test("should get Politics for id 9", "Politics", make_tuple(9)), make_test("should get Science for id 10", "Science", make_tuple(10)), make_test("should get and empty string for id 0", "", make_tuple(0)), make_test("should get and empty string for id 11", "", make_tuple(11)), }))); return TestResults(); } TestResults test_GetNumItemsForAbilityGroup() { return execute_suite(make_test_suite( "SBF::GetNumItemsForAbilityGroup", GetNumItemsForAbilityGroup, vector>({ make_test("should get 10 abilities for talents", 10, make_tuple(kAbilityTalentsId)), make_test("should get 10 abilities for skills", 10, make_tuple(kAbilitySkillsId)), make_test("should get 10 abilities for knowledges", 10, make_tuple(kAbilityKnowledgesId)), make_test("should get 0 abilities for 0", 0, make_tuple(0)), make_test("should get 0 abilities for an invalid id", 0, make_tuple(4)), }))); } TestResults test_GetSkillLabel() { return execute_suite( make_test_suite("SBF::GetSkillLabel", GetSkillLabel, vector>({ make_test("should get Animal Ken for id 1", "Animal Ken", make_tuple(1)), make_test("should get Drive for id 2", "Drive", make_tuple(2)), make_test("should get Etiquette for id 3", "Etiquette", make_tuple(3)), make_test("should get Firearms for id 4", "Firearms", make_tuple(4)), make_test("should get Melee for id 5", "Melee", make_tuple(5)), make_test("should get Music for id 6", "Music", make_tuple(6)), make_test("should get Repair for id 7", "Repair", make_tuple(7)), make_test("should get Security for id 8", "Security", make_tuple(8)), make_test("should get Stealth for id 9", "Stealth", make_tuple(9)), make_test("should get Survival for id 10", "Survival", make_tuple(10)), make_test("should get and empty string for id 0", "", make_tuple(0)), make_test("should get and empty string for id 11", "", make_tuple(11)), }))); } TestResults test_GetTalentLabel() { return execute_suite( make_test_suite("SBF::GetTalentLabel", GetTalentLabel, vector>({ make_test("should get Acting for id 1", "Acting", make_tuple(1)), make_test("should get Alertness for id 2", "Alertness", make_tuple(2)), make_test("should get Athletics for id 3", "Athletics", make_tuple(3)), make_test("should get Brawl for id 4", "Brawl", make_tuple(4)), make_test("should get Dodge for id 5", "Dodge", make_tuple(5)), make_test("should get Empathy for id 6", "Empathy", make_tuple(6)), make_test("should get Intimidation for id 7", "Intimidation", make_tuple(7)), make_test("should get Leadership for id 8", "Leadership", make_tuple(8)), make_test("should get Streetwise for id 9", "Streetwise", make_tuple(9)), make_test("should get Subterfuge for id 10", "Subterfuge", make_tuple(10)), make_test("should get and empty string for id 0", "", make_tuple(0)), make_test("should get and empty string for id 11", "", make_tuple(11)), }))); } } // End namespace Test::Abilities