From 8713de0e098b655939362ccca2471eeeba3831a3 Mon Sep 17 00:00:00 2001 From: Eric Floyd <101071809+eric-bodhi@users.noreply.github.com> Date: Wed, 4 Oct 2023 03:22:05 -0400 Subject: [PATCH 01/28] removed romanian name duplicates and added finnish first and last names (#175) --- include/faker-cxx/types/Language.h | 3 +- src/modules/person/Person.cpp | 57 ++++++++++--------- src/modules/person/PersonTest.cpp | 21 +++++-- .../data/finnish/FinnishFirstNamesFemales.h | 15 +++++ .../data/finnish/FinnishFirstNamesMales.h | 15 +++++ .../person/data/finnish/FinnishLastNames.h | 16 ++++++ .../data/romanian/RomanianFirstNamesFemales.h | 17 +++--- .../data/romanian/RomanianFirstNamesMales.h | 20 +++---- .../person/data/romanian/RomanianLastNames.h | 28 +++++---- 9 files changed, 122 insertions(+), 70 deletions(-) create mode 100644 src/modules/person/data/finnish/FinnishFirstNamesFemales.h create mode 100644 src/modules/person/data/finnish/FinnishFirstNamesMales.h create mode 100644 src/modules/person/data/finnish/FinnishLastNames.h diff --git a/include/faker-cxx/types/Language.h b/include/faker-cxx/types/Language.h index 4e90567d..acffd916 100644 --- a/include/faker-cxx/types/Language.h +++ b/include/faker-cxx/types/Language.h @@ -14,6 +14,7 @@ enum class Language Russian, Romanian, Hindi, + Finnish, }; inline std::string toString(Language language) @@ -21,7 +22,7 @@ inline std::string toString(Language language) std::map languageToStringMapping{ {Language::English, "English"} , {Language::Polish, "Polish"}, {Language::Italian, "Italian"}, {Language::French, "French"} , {Language::German, "German"}, {Language::Russian, "Russian"}, - {Language::Romanian, "Romanian"}, {Language::Hindi, "Hindi"}}; + {Language::Romanian, "Romanian"}, {Language::Hindi, "Hindi"}, {Language::Finnish, "Finnish"}}; return languageToStringMapping.at(language); } diff --git a/src/modules/person/Person.cpp b/src/modules/person/Person.cpp index 8b38fe43..8a4eb8cf 100644 --- a/src/modules/person/Person.cpp +++ b/src/modules/person/Person.cpp @@ -6,6 +6,9 @@ #include "data/english/EnglishFirstNamesFemales.h" #include "data/english/EnglishFirstNamesMales.h" #include "data/english/EnglishLastNames.h" +#include "data/finnish/FinnishFirstNamesFemales.h" +#include "data/finnish/FinnishFirstNamesMales.h" +#include "data/finnish/FinnishLastNames.h" #include "data/french/FrenchFirstNamesFemales.h" #include "data/french/FrenchFirstNamesMales.h" #include "data/french/FrenchLastNames.h" @@ -35,32 +38,34 @@ namespace faker { namespace { - const std::string malePrefix{"Mr."}; - const std::vector femalePrefixes{"Ms.", "Miss"}; - const std::vector allPrefixes{"Mr.", "Ms.", "Miss"}; - const std::vector sexes{"Male", "Female"}; - - const std::map>> languageToFirstNamesMapping{ - {Language::English, {{Sex::Male, englishFirstNamesMales}, {Sex::Female, englishFirstNamesFemales}}}, - {Language::French, {{Sex::Male, frenchFirstNamesMales}, {Sex::Female, frenchFirstNamesFemales}}}, - {Language::German, {{Sex::Male, germanFirstNamesMales}, {Sex::Female, germanFirstNamesFemales}}}, - {Language::Italian, {{Sex::Male, italianFirstNamesMales}, {Sex::Female, italianFirstNamesFemales}}}, - {Language::Polish, {{Sex::Male, polishFirstNamesMales}, {Sex::Female, polishFirstNamesFemales}}}, - {Language::Russian, {{Sex::Male, russianFirstNamesMales}, {Sex::Female, russianFirstNamesFemales}}}, - {Language::Romanian, {{Sex::Male, romanianFirstNamesMales}, {Sex::Female, romanianFirstNamesFemales}}}, - {Language::Hindi, {{Sex::Male, indianFirstNamesMales}, {Sex::Female, indianFirstNamesFemales}}}, - }; - - const std::map>> languageToLastNamesMapping{ - {Language::English, {{Sex::Male, englishLastNames}, {Sex::Female, englishLastNames}}}, - {Language::French, {{Sex::Male, frenchLastNames}, {Sex::Female, frenchLastNames}}}, - {Language::German, {{Sex::Male, germanLastNames}, {Sex::Female, germanLastNames}}}, - {Language::Italian, {{Sex::Male, italianLastNames}, {Sex::Female, italianLastNames}}}, - {Language::Polish, {{Sex::Male, polishLastNames}, {Sex::Female, polishLastNames}}}, - {Language::Russian, {{Sex::Male, russianLastNamesMales}, {Sex::Female, russianLastNamesFemales}}}, - {Language::Romanian, {{Sex::Male, romanianLastNames}, {Sex::Female, romanianLastNames}}}, - {Language::Hindi, {{Sex::Male, indianLastNames}, {Sex::Female, indianLastNames}}} - }; +const std::string malePrefix{"Mr."}; +const std::vector femalePrefixes{"Ms.", "Miss"}; +const std::vector allPrefixes{"Mr.", "Ms.", "Miss"}; +const std::vector sexes{"Male", "Female"}; + +const std::map>> languageToFirstNamesMapping{ + {Language::English, {{Sex::Male, englishFirstNamesMales}, {Sex::Female, englishFirstNamesFemales}}}, + {Language::French, {{Sex::Male, frenchFirstNamesMales}, {Sex::Female, frenchFirstNamesFemales}}}, + {Language::German, {{Sex::Male, germanFirstNamesMales}, {Sex::Female, germanFirstNamesFemales}}}, + {Language::Italian, {{Sex::Male, italianFirstNamesMales}, {Sex::Female, italianFirstNamesFemales}}}, + {Language::Polish, {{Sex::Male, polishFirstNamesMales}, {Sex::Female, polishFirstNamesFemales}}}, + {Language::Russian, {{Sex::Male, russianFirstNamesMales}, {Sex::Female, russianFirstNamesFemales}}}, + {Language::Romanian, {{Sex::Male, romanianFirstNamesMales}, {Sex::Female, romanianFirstNamesFemales}}}, + {Language::Hindi, {{Sex::Male, indianFirstNamesMales}, {Sex::Female, indianFirstNamesFemales}}}, + {Language::Finnish, {{Sex::Male, finnishFirstNamesMales}, {Sex::Female, finnishFirstNamesFemales}}}, +}; + +const std::map>> languageToLastNamesMapping{ + {Language::English, {{Sex::Male, englishLastNames}, {Sex::Female, englishLastNames}}}, + {Language::French, {{Sex::Male, frenchLastNames}, {Sex::Female, frenchLastNames}}}, + {Language::German, {{Sex::Male, germanLastNames}, {Sex::Female, germanLastNames}}}, + {Language::Italian, {{Sex::Male, italianLastNames}, {Sex::Female, italianLastNames}}}, + {Language::Polish, {{Sex::Male, polishLastNames}, {Sex::Female, polishLastNames}}}, + {Language::Russian, {{Sex::Male, russianLastNamesMales}, {Sex::Female, russianLastNamesFemales}}}, + {Language::Romanian, {{Sex::Male, romanianLastNames}, {Sex::Female, romanianLastNames}}}, + {Language::Hindi, {{Sex::Male, indianLastNames}, {Sex::Female, indianLastNames}}}, + {Language::Finnish, {{Sex::Male, finnishLastNames}, {Sex::Female, finnishLastNames}}}, +}; } std::string Person::firstName(Language language, std::optional sex) diff --git a/src/modules/person/PersonTest.cpp b/src/modules/person/PersonTest.cpp index d3e5c2f1..034bb254 100644 --- a/src/modules/person/PersonTest.cpp +++ b/src/modules/person/PersonTest.cpp @@ -7,6 +7,9 @@ #include "data/english/EnglishFirstNamesFemales.h" #include "data/english/EnglishFirstNamesMales.h" #include "data/english/EnglishLastNames.h" +#include "data/finnish/FinnishFirstNamesFemales.h" +#include "data/finnish/FinnishFirstNamesMales.h" +#include "data/finnish/FinnishLastNames.h" #include "data/french/FrenchFirstNamesFemales.h" #include "data/french/FrenchFirstNamesMales.h" #include "data/french/FrenchLastNames.h" @@ -14,6 +17,8 @@ #include "data/german/GermanFirstNamesFemales.h" #include "data/german/GermanFirstNamesMales.h" #include "data/german/GermanLastNames.h" +#include "data/indian/IndianFirstNames.h" +#include "data/indian/IndianLastNames.h" #include "data/italian/ItalianFirstNamesFemales.h" #include "data/italian/ItalianFirstNamesMales.h" #include "data/italian/ItalianLastNames.h" @@ -28,8 +33,6 @@ #include "data/russian/RussianFirstNamesMales.h" #include "data/russian/RussianLastNamesFemales.h" #include "data/russian/RussianLastNamesMales.h" -#include "data/indian/IndianFirstNames.h" -#include "data/indian/IndianLastNames.h" #include "src/common/StringHelper.h" using namespace ::testing; @@ -41,8 +44,9 @@ const auto malePrefix{"Mr."}; const std::vector femalePrefixes{"Ms.", "Miss"}; const std::vector allPrefixes{"Mr.", "Ms.", "Miss"}; -const std::vector languages{Language::English, Language::French, Language::German, Language::Italian, - Language::Polish, Language::Russian, Language::Romanian, Language::Hindi}; +const std::vector languages{Language::English, Language::French, Language::German, + Language::Italian, Language::Polish, Language::Russian, + Language::Romanian, Language::Hindi, Language::Finnish}; const std::map>> languageToFirstNamesMapping{ {Language::English, {{Sex::Male, englishFirstNamesMales}, {Sex::Female, englishFirstNamesFemales}}}, @@ -53,6 +57,7 @@ const std::map>> languageToFirs {Language::Russian, {{Sex::Male, russianFirstNamesMales}, {Sex::Female, russianFirstNamesFemales}}}, {Language::Romanian, {{Sex::Male, romanianFirstNamesMales}, {Sex::Female, romanianFirstNamesFemales}}}, {Language::Hindi, {{Sex::Male, indianFirstNamesMales}, {Sex::Female, indianFirstNamesFemales}}}, + {Language::Finnish, {{Sex::Male, finnishFirstNamesMales}, {Sex::Female, finnishFirstNamesFemales}}}, }; const std::map>> languageToLastNamesMapping{ @@ -63,13 +68,17 @@ const std::map>> languageToLast {Language::Polish, {{Sex::Male, polishLastNames}, {Sex::Female, polishLastNames}}}, {Language::Russian, {{Sex::Male, russianLastNamesMales}, {Sex::Female, russianLastNamesFemales}}}, {Language::Romanian, {{Sex::Male, romanianLastNames}, {Sex::Female, romanianLastNames}}}, - {Language::Hindi, {{Sex::Male, indianLastNames}, {Sex::Female, indianLastNames}}}}; + {Language::Hindi, {{Sex::Male, indianLastNames}, {Sex::Female, indianLastNames}}}, + {Language::Finnish, {{Sex::Male, finnishLastNames}, {Sex::Female, finnishLastNames}}}, +}; const std::map generatedTestName{ {Language::English, "shouldGenerateEnglishName"}, {Language::French, "shouldGenerateFrenchName"}, {Language::German, "shouldGenerateGermanName"}, {Language::Italian, "shouldGenerateItalianName"}, {Language::Polish, "shouldGeneratePolishName"}, {Language::Russian, "shouldGenerateRussianName"}, - {Language::Romanian, "shouldGenerateRomanianName"}, {Language::Hindi, "shouldGenerateIndianName"}}; + {Language::Romanian, "shouldGenerateRomanianName"}, {Language::Hindi, "shouldGenerateIndianName"}, + {Language::Finnish, "shouldGenerateFinnishName"}, +}; } class PersonTest : public TestWithParam diff --git a/src/modules/person/data/finnish/FinnishFirstNamesFemales.h b/src/modules/person/data/finnish/FinnishFirstNamesFemales.h new file mode 100644 index 00000000..b2ce26cd --- /dev/null +++ b/src/modules/person/data/finnish/FinnishFirstNamesFemales.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector finnishFirstNamesFemales = { + "Aino", "Eevi", "Emma", "Sofia", "Aada", "Ella", "Lilja", "Helmi", "Elli", "Enni", + "Venla", "Olivia", "Pihla", "Isla", "Adele", "Aida", "Bertta", "Cecilia", "Daniela", "Elle", + "Erin", "Fiona", "Iita", "Inna", "Jasmiina", "Lila", "Luna", "Malla", "Meea", "Minka", + "Minni", "Neela", "Selina", "Unna", "Aamu", "Aava", "Aura", "Heini", "Hilla", "Hilja", + "Ilma", "Ilta", "Iiris", "Jasmin", "Kaisla", "Kaneli", +}; +} \ No newline at end of file diff --git a/src/modules/person/data/finnish/FinnishFirstNamesMales.h b/src/modules/person/data/finnish/FinnishFirstNamesMales.h new file mode 100644 index 00000000..f9fd4942 --- /dev/null +++ b/src/modules/person/data/finnish/FinnishFirstNamesMales.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector finnishFirstNamesMales = { + "Leo", "Elias", "Eino", "Väinö", "Onni", "Leevi", "Niilo", "Oliver", "Eetu", + "Noel", "Eeli", "Veeti", "Mikael", "Joel", "Daniel", "Andreas", "Edvin", "Elia", + "Eliel", "Felix", "Niila", "Nikolas", "Oskar", "Oula", "Petja", "Petrus", "Rene", + "Teo", "Venni", "Viktor", "Aarre", "Aarni", "Ahti", "Aarne", "Kuura", "Kuutti", + "Oras", "Otso", "Pyry", "Tammi", "Terho", "Touko", "Ukko", "Vesa", "Visa", +}; +} \ No newline at end of file diff --git a/src/modules/person/data/finnish/FinnishLastNames.h b/src/modules/person/data/finnish/FinnishLastNames.h new file mode 100644 index 00000000..bbe91cd3 --- /dev/null +++ b/src/modules/person/data/finnish/FinnishLastNames.h @@ -0,0 +1,16 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector finnishLastNames = { + "Mäkinen", "Virtanen", "Nieminen", "Korhonen", "Laine", "Koskinen", "Hämäläinen", "Lehtonen", + "Heikkinen", "Järvinen", "Lahtinen", "Mäkelä", "Huttunen", "Aalto", "Koivisto", "Salo", + "Kallio", "Rinne", "Lindholm", "Karjalainen", "Koskela", "Turunen", "Rantanen", "Laitinen", + "Jokinen", "Harju", "Vartiainen", "Hakala", "Kosonen", "Lampinen", "Rautio", "Peltola", + "Miettinen", "Savolainen", "Nurmi", "Niemelä", "Hakkarainen", "Laakso", "Kinnunen", "Mattila", + "Salmi", "Pekkanen", "Leinonen", "Ojala", "Kankaanpää", "Heikkilä", +}; +} \ No newline at end of file diff --git a/src/modules/person/data/romanian/RomanianFirstNamesFemales.h b/src/modules/person/data/romanian/RomanianFirstNamesFemales.h index a2aa8136..2047fb6d 100644 --- a/src/modules/person/data/romanian/RomanianFirstNamesFemales.h +++ b/src/modules/person/data/romanian/RomanianFirstNamesFemales.h @@ -6,15 +6,12 @@ namespace faker { const std::vector romanianFirstNamesFemales = { - "Maria", "Ioana", "Elena", "Ana", "Cristina", "Andreea", "Georgiana", "Alexandra", "Laura", - "Diana", "Raluca", "Mihaela", "Larisa", "Monica", "Alina", "Simona", "Gabriela", "Roxana", - "Denisa", "Camelia", "Adriana", "Nicoleta", "Mariana", "Carmen", "Loredana", "Irina", "Liliana", - "Eva", "Elisabeta", "Aurelia", "Cătălina", "Silvia", "Ana-Maria", "Doina", "Florina", "Magdalena", - "Stefania", "Valentina", "Iuliana", "Ruxandra", "Georgeta", "Marilena", "Cătălina", "Liliana", "Lidia", - "Anda", "Marinela", "Mirela", "Carmen", "Flavia", "Claudia", "Ioana", "Iuliana", "Viorica", - "Sorina", "Ramona", "Camelia", "Sorana", "Floriana", "Raluca", "Mihaela", "Livia", "Teodora", - "Magda", "Georgiana", "Adriana", "Marina", "Dana", "Cristina", "Elena", "Loredana", "Lavinia", - "Diana", "Daniela", "Gabriela", "Simona", "Nicoleta", "Roxana", "Valeria", "Alexandra", "Monica", - "Alina", "Eugenia", "Denisa", "Anca", "Delia", "Daria", "Oana", + "Maria", "Ioana", "Elena", "Ana", "Cristina", "Andreea", "Georgiana", "Alexandra", "Laura", + "Diana", "Raluca", "Mihaela", "Larisa", "Monica", "Alina", "Simona", "Gabriela", "Roxana", + "Denisa", "Camelia", "Adriana", "Nicoleta", "Mariana", "Carmen", "Loredana", "Irina", "Liliana", + "Eva", "Elisabeta", "Aurelia", "Cătălina", "Silvia", "Ana-Maria", "Doina", "Florina", "Magdalena", + "Stefania", "Valentina", "Iuliana", "Ruxandra", "Georgeta", "Marilena", "Lidia", "Anda", "Marinela", + "Mirela", "Flavia", "Claudia", "Viorica", "Sorina", "Ramona", "Sorana", "Floriana", "Livia", + "Teodora", "Magda", "Marina", "Dana", "Lavinia", "Anca", "Delia", "Daria", "Oana", }; } diff --git a/src/modules/person/data/romanian/RomanianFirstNamesMales.h b/src/modules/person/data/romanian/RomanianFirstNamesMales.h index c758837a..e1507afa 100644 --- a/src/modules/person/data/romanian/RomanianFirstNamesMales.h +++ b/src/modules/person/data/romanian/RomanianFirstNamesMales.h @@ -6,17 +6,13 @@ namespace faker { const std::vector romanianFirstNamesMales = { - "Ion", "Mihai", "Andrei", "Alexandru", "George", "Cristian", "Florin", "Răzvan", "Lucian", - "Adrian", "Vlad", "Gheorghe", "Constantin", "Daniel", "Bogdan", "Eduard", "Valentin", "Gabriel", - "Dumitru", "Radu", "Ștefan", "Marin", "Marian", "Victor", "Raul", "Valeriu", "Bogdan", - "Cosmin", "Marius", "Mihail", "Claudiu", "Ciprian", "Ionel", "Cristinel", "Cătălin", "Tudor", - "Cornel", "Corneliu", "Romeo", "Romeu", "Vasile", "Petre", "Alex", "Cătălin", "Catalin", - "Andrei", "Liviu", "Ionuț", "Nicolae", "Nicoale", "Octavian", "Răzvan", "Radu", "Răzvan", - "Ionuț", "Iulian", "Dan", "Emil", "Eugen", "Horia", "Gheorghiță", "Ghiță", "Horea", - "Mihail", "Mihai", "Adrian", "Marian", "Matei", "Nicolae", "Radu", "Răzvan", "Sebastian", - "Șerban", "Ștefan", "Valentin", "Vasile", "Victor", "Viorel", "Cristian", "Nicolae", "Laurențiu", - "Laurentiu", "Ionuț", "Nicolae", "Ionuț", "Nicolae", "Alexandru", "Alin", "Ion", "Gavril", - "Alexandru", "Lucian", "Mihai", "Mihai", "Mihail", "Mihai", "Marius", "Ion", "Nicolae", - "Ovidiu", "Răzvan", "Radu", "Sorin", "Ștefan", "Tiberiu", + "Ion", "Mihai", "Andrei", "Alexandru", "George", "Cristian", "Florin", "Răzvan", "Lucian", + "Adrian", "Vlad", "Gheorghe", "Constantin", "Daniel", "Bogdan", "Eduard", "Valentin", "Gabriel", + "Dumitru", "Radu", "Ștefan", "Marin", "Marian", "Victor", "Raul", "Valeriu", "Cosmin", + "Marius", "Mihail", "Claudiu", "Ciprian", "Ionel", "Cristinel", "Cătălin", "Tudor", "Cornel", + "Corneliu", "Romeo", "Romeu", "Vasile", "Petre", "Alex", "Liviu", "Ionuț", "Nicolae", + "Nicoale", "Octavian", "Dan", "Emil", "Eugen", "Horia", "Gheorghiță", "Ghiță", "Horea", + "Matei", "Sebastian", "Șerban", "Viorel", "Laurențiu", "Laurentiu", "Alin", "Gavril", "Ovidiu", + "Sorin", "Tiberiu", }; } \ No newline at end of file diff --git a/src/modules/person/data/romanian/RomanianLastNames.h b/src/modules/person/data/romanian/RomanianLastNames.h index 98f5c743..f6cf629c 100644 --- a/src/modules/person/data/romanian/RomanianLastNames.h +++ b/src/modules/person/data/romanian/RomanianLastNames.h @@ -6,20 +6,18 @@ namespace faker { const std::vector romanianLastNames = { - "Popescu", "Ionescu", "Popa", "Dumitru", "Georgescu", "Stan", "Stoica", "Constantin", - "Barbu", "Dobre", "Nistor", "Mihai", "Cristea", "Oprea", "Dinu", "Voicu", - "Munteanu", "Neagu", "Badea", "Diaconu", "Costache", "Diaconescu", "Călinescu", "Luca", - "Nicolae", "Marinescu", "Petrescu", "Bădescu", "Tudor", "Cătănescu", "Florescu", "Gheorghiu", - "Ioniță", "Dobrescu", "Bucur", "Cojocaru", "Preda", "Ioniță", "Mihăilescu", "Soare", - "Sava", "Albu", "Moldovan", "Zaharia", "Balan", "Vasilescu", "Andrei", "Stefan", - "Șerban", "Toma", "Bogdan", "Fodor", "Sandu", "Alexandrescu", "Sorin", "Niculae", - "Oancea", "Mocanu", "Radu", "Gavril", "Rusu", "Luca", "Filip", "Ștefanescu", - "Ene", "Păun", "Nistor", "Moise", "Dima", "Covaci", "Simion", "Rădulescu", - "Cristea", "Pascu", "Hanganu", "Iacob", "Cătălin", "Coman", "Lupu", "Pavel", - "Ivan", "Vlaicu", "Anghel", "Gheorghiță", "Dumitrache", "Frățilă", "Dincă", "Brănescu", - "Alexandru", "Căruntu", "Iancu", "Pintilie", "Tudose", "Șchiopu", "Petrică", "Sorin", - "Burcea", "Ștefănescu", "Albu", "Angelescu", "Manole", "Mănescu", "Panaite", "Sorin", - "Ștefan", "Trandafir", "Radu", "Mărgărit", "Dorin", "Petrache", "Bădăluță", "Mihu", - "Chiriac", + "Popescu", "Ionescu", "Popa", "Dumitru", "Georgescu", "Stan", "Stoica", "Constantin", + "Barbu", "Dobre", "Nistor", "Mihai", "Cristea", "Oprea", "Dinu", "Voicu", + "Munteanu", "Neagu", "Badea", "Diaconu", "Costache", "Diaconescu", "Călinescu", "Luca", + "Nicolae", "Marinescu", "Petrescu", "Bădescu", "Tudor", "Cătănescu", "Florescu", "Gheorghiu", + "Ioniță", "Dobrescu", "Bucur", "Cojocaru", "Preda", "Mihăilescu", "Soare", "Sava", + "Albu", "Moldovan", "Zaharia", "Balan", "Vasilescu", "Andrei", "Stefan", "Șerban", + "Toma", "Bogdan", "Fodor", "Sandu", "Alexandrescu", "Sorin", "Niculae", "Oancea", + "Mocanu", "Radu", "Gavril", "Rusu", "Filip", "Ștefanescu", "Ene", "Păun", + "Moise", "Dima", "Covaci", "Simion", "Rădulescu", "Cristea", "Pascu", "Hanganu", + "Iacob", "Coman", "Lupu", "Pavel", "Ivan", "Vlaicu", "Anghel", "Dumitrache", + "Frățilă", "Dincă", "Brănescu", "Alexandru", "Căruntu", "Iancu", "Pintilie", "Tudose", + "Șchiopu", "Petrică", "Burcea", "Manole", "Mănescu", "Panaite", "Trandafir", "Mărgărit", + "Dorin", "Petrache", "Bădăluță", "Mihu", "Chiriac", }; } \ No newline at end of file From f686a36b5478e49ba6e8d3cfce6cd02f8b1c7949 Mon Sep 17 00:00:00 2001 From: Eric Floyd <101071809+eric-bodhi@users.noreply.github.com> Date: Thu, 5 Oct 2023 03:30:07 -0400 Subject: [PATCH 02/28] Feature/person hobby (#177) * added Person::Hobby function * Rearranged files and formatted them --- include/faker-cxx/Person.h | 12 +++++++ src/modules/person/Person.cpp | 6 ++++ src/modules/person/PersonTest.cpp | 9 ++++++ src/modules/person/data/Hobbies.h | 54 +++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 src/modules/person/data/Hobbies.h diff --git a/include/faker-cxx/Person.h b/include/faker-cxx/Person.h index 5abc7378..4b11fd89 100644 --- a/include/faker-cxx/Person.h +++ b/include/faker-cxx/Person.h @@ -135,5 +135,17 @@ class Person * @endcode */ static std::string jobType(); + + /** + * @brief Returns a random hobby. + * + * @returns Hobby. + * + * @code + * Person::hobby() // "Gaming" + * @endcode + */ + + static std::string hobby(); }; } diff --git a/src/modules/person/Person.cpp b/src/modules/person/Person.cpp index 8a4eb8cf..d682728a 100644 --- a/src/modules/person/Person.cpp +++ b/src/modules/person/Person.cpp @@ -16,6 +16,7 @@ #include "data/german/GermanFirstNamesFemales.h" #include "data/german/GermanFirstNamesMales.h" #include "data/german/GermanLastNames.h" +#include "data/Hobbies.h" #include "data/indian/IndianFirstNames.h" #include "data/indian/IndianLastNames.h" #include "data/italian/ItalianFirstNamesFemales.h" @@ -179,4 +180,9 @@ std::string Person::prefix(std::optional sex) return Helper::arrayElement(allPrefixes); } } + +std::string Person::hobby() +{ + return Helper::arrayElement(hobbies); +} } diff --git a/src/modules/person/PersonTest.cpp b/src/modules/person/PersonTest.cpp index 034bb254..dab912bb 100644 --- a/src/modules/person/PersonTest.cpp +++ b/src/modules/person/PersonTest.cpp @@ -17,6 +17,7 @@ #include "data/german/GermanFirstNamesFemales.h" #include "data/german/GermanFirstNamesMales.h" #include "data/german/GermanLastNames.h" +#include "data/Hobbies.h" #include "data/indian/IndianFirstNames.h" #include "data/indian/IndianLastNames.h" #include "data/italian/ItalianFirstNamesFemales.h" @@ -317,3 +318,11 @@ TEST_F(PersonTest, shouldGenerateFemalePrefix) ASSERT_TRUE(std::ranges::any_of(femalePrefixes, [generatedPrefix](const std::string& prefix) { return prefix == generatedPrefix; })); } + +TEST_F(PersonTest, shouldGenerateHobby) +{ + const auto generatedHobby = Person::hobby(); + + ASSERT_TRUE( + std::ranges::any_of(hobbies, [generatedHobby](const std::string& hobby) { return hobby == generatedHobby; })); +} \ No newline at end of file diff --git a/src/modules/person/data/Hobbies.h b/src/modules/person/data/Hobbies.h new file mode 100644 index 00000000..1ec2838e --- /dev/null +++ b/src/modules/person/data/Hobbies.h @@ -0,0 +1,54 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector hobbies = { + "Playing guitar", + "Reading books", + "Hiking", + "Cooking", + "Painting", + "Photography", + "Swimming", + "Gaming", + "Dancing", + "Traveling", + "Bird watching", + "Coding", + "Singing", + "Collecting stamps", + "Fishing", + "Yoga", + "Sculpting", + "Mountain biking", + "Chess", + "Archery", + "Rock climbing", + "Skiing", + "Writing poetry", + "Meditation", + "Solving puzzles", + "Gardening", + "Playing basketball", + "Volunteering", + "Playing board games", + "Astrophotography", + "Camping", + "Model building", + "Astronomy", + "Watching movies", + "Stargazing", + "Playing tennis", + "Cooking ethnic cuisines", + "Woodworking", + "Baking", + "Calligraphy", + "Pottery", + "Karaoke", + "Scuba diving", + "Metal detecting", +}; +} \ No newline at end of file From ab482b777a845664d9ac03e96c9e6032be37b46c Mon Sep 17 00:00:00 2001 From: Romain CLEMENT Date: Thu, 5 Oct 2023 14:45:04 +0200 Subject: [PATCH 03/28] 160-feature/animal module (#176) * Added the animals Took data from faker-js * Added new files to cmakelist * Added Animal methods * Added test to animal module * Added documentation --- CMakeLists.txt | 2 + include/faker-cxx/Animal.h | 175 +++++ src/modules/animal/Animal.cpp | 96 +++ src/modules/animal/AnimalTest.cpp | 142 +++++ src/modules/animal/data/Bears.h | 10 + src/modules/animal/data/Birds.h | 922 +++++++++++++++++++++++++++ src/modules/animal/data/Cats.h | 63 ++ src/modules/animal/data/Cetaceans.h | 62 ++ src/modules/animal/data/Cows.h | 503 +++++++++++++++ src/modules/animal/data/Crocodilia.h | 32 + src/modules/animal/data/Dogs.h | 505 +++++++++++++++ src/modules/animal/data/Fishes.h | 103 +++ src/modules/animal/data/Horses.h | 353 ++++++++++ src/modules/animal/data/Insects.h | 137 ++++ src/modules/animal/data/Lions.h | 10 + src/modules/animal/data/Rabbits.h | 57 ++ src/modules/animal/data/Rodents.h | 193 ++++++ src/modules/animal/data/Snakes.h | 584 +++++++++++++++++ src/modules/animal/data/Types.h | 10 + 19 files changed, 3959 insertions(+) create mode 100644 include/faker-cxx/Animal.h create mode 100644 src/modules/animal/Animal.cpp create mode 100644 src/modules/animal/AnimalTest.cpp create mode 100644 src/modules/animal/data/Bears.h create mode 100644 src/modules/animal/data/Birds.h create mode 100644 src/modules/animal/data/Cats.h create mode 100644 src/modules/animal/data/Cetaceans.h create mode 100644 src/modules/animal/data/Cows.h create mode 100644 src/modules/animal/data/Crocodilia.h create mode 100644 src/modules/animal/data/Dogs.h create mode 100644 src/modules/animal/data/Fishes.h create mode 100644 src/modules/animal/data/Horses.h create mode 100644 src/modules/animal/data/Insects.h create mode 100644 src/modules/animal/data/Lions.h create mode 100644 src/modules/animal/data/Rabbits.h create mode 100644 src/modules/animal/data/Rodents.h create mode 100644 src/modules/animal/data/Snakes.h create mode 100644 src/modules/animal/data/Types.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 427808ac..cbe5bc3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ endif () set(LIBRARY_NAME faker-cxx) set(FAKER_SOURCES + src/modules/animal/Animal.cpp src/modules/book/Book.cpp src/modules/color/Color.cpp src/modules/commerce/Commerce.cpp @@ -43,6 +44,7 @@ set(FAKER_SOURCES ) set(FAKER_UT_SOURCES + src/modules/animal/AnimalTest.cpp src/modules/book/BookTest.cpp src/modules/color/ColorTest.cpp src/modules/commerce/CommerceTest.cpp diff --git a/include/faker-cxx/Animal.h b/include/faker-cxx/Animal.h new file mode 100644 index 00000000..f5a99136 --- /dev/null +++ b/include/faker-cxx/Animal.h @@ -0,0 +1,175 @@ +#pragma once + +#include + +namespace faker +{ +class Animal +{ +public: + /** + * @brief Returns a random species of bear. + * + * @returns Species of bear. + * + * @code + * Animal::bear() // "Polar bear" + * @endcode + */ + static std::string bear(); + + /** + * @brief Returns a random species of bird. + * + * @returns Species of bird. + * + * @code + * Animal::bird() // "Black-bellied Whistling-Duck" + * @endcode + */ + static std::string bird(); + + /** + * @brief Returns a random species of cat. + * + * @returns Species of cat. + * + * @code + * Animal::cat() // "Chartreux" + * @endcode + */ + static std::string cat(); + + /** + * @brief Returns a random species of cetacean. + * + * @returns Species of cetacean. + * + * @code + * Animal::cetacean() // "Blue Whale" + * @endcode + */ + static std::string cetacean(); + + /** + * @brief Returns a random species of cow. + * + * @returns Species of cow. + * + * @code + * Animal::cow() // "American Angus" + * @endcode + */ + static std::string cow(); + + /** + * @brief Returns a random species of crocodilia. + * + * @returns Species of crocodilia. + * + * @code + * Animal::crocodilia() // "Dwarf Crocodile" + * @endcode + */ + static std::string crocodilia(); + + /** + * @brief Returns a random species of dog. + * + * @returns Species of dog. + * + * @code + * Animal::dog() // "Shiba Inu" + * @endcode + */ + static std::string dog(); + + /** + * @brief Returns a random species of fish. + * + * @returns Species of fish. + * + * @code + * Animal::fish() // "Silver carp" + * @endcode + */ + static std::string fish(); + + /** + * @brief Returns a random species of horse. + * + * @returns Species of horse. + * + * @code + * Animal::horse() // "Fjord Horse" + * @endcode + */ + static std::string horse(); + + /** + * @brief Returns a random species of insect. + * + * @returns Species of insect. + * + * @code + * Animal::insect() // "Bee" + * @endcode + */ + static std::string insect(); + + /** + * @brief Returns a random species of lion. + * + * @returns Species of lion. + * + * @code + * Animal::lion() // "West African Lion" + * @endcode + */ + static std::string lion(); + + /** + * @brief Returns a random species of rabbit. + * + * @returns Species of rabbit. + * + * @code + * Animal::rabbit() // "Californian" + * @endcode + */ + static std::string rabbit(); + + /** + * @brief Returns a random species of rodent. + * + * @returns Species of rodent. + * + * @code + * Animal::rodent() // "Chinchilla" + * @endcode + */ + static std::string rodent(); + + /** + * @brief Returns a random species of snake. + * + * @returns Species of snake. + * + * @code + * Animal::snake() // "Boa constrictor" + * @endcode + */ + static std::string snake(); + + /** + * @brief Returns a random type of animal. + * + * @returns Type of animal. + * + * @code + * Animal::type() // "dog" + * @endcode + */ + static std::string type(); +}; +} \ No newline at end of file diff --git a/src/modules/animal/Animal.cpp b/src/modules/animal/Animal.cpp new file mode 100644 index 00000000..56c55e28 --- /dev/null +++ b/src/modules/animal/Animal.cpp @@ -0,0 +1,96 @@ +#include "faker-cxx/Animal.h" + +#include "data/Bears.h" +#include "data/Birds.h" +#include "data/Cats.h" +#include "data/Cetaceans.h" +#include "data/Cows.h" +#include "data/Crocodilia.h" +#include "data/Dogs.h" +#include "data/Fishes.h" +#include "data/Horses.h" +#include "data/Insects.h" +#include "data/Lions.h" +#include "data/Rabbits.h" +#include "data/Rodents.h" +#include "data/Snakes.h" +#include "data/Types.h" +#include "faker-cxx/Helper.h" + +namespace faker +{ +std::string Animal::bear() +{ + return Helper::arrayElement(bears); +} + +std::string Animal::bird() +{ + return Helper::arrayElement(birds); +} + +std::string Animal::cat() +{ + return Helper::arrayElement(cats); +} + +std::string Animal::cetacean() +{ + return Helper::arrayElement(cetaceans); +} + +std::string Animal::cow() +{ + return Helper::arrayElement(cows); +} + +std::string Animal::crocodilia() +{ + return Helper::arrayElement(faker::crocodilia); +} + +std::string Animal::dog() +{ + return Helper::arrayElement(dogs); +} + +std::string Animal::fish() +{ + return Helper::arrayElement(fishes); +} + +std::string Animal::horse() +{ + return Helper::arrayElement(horses); +} + +std::string Animal::insect() +{ + return Helper::arrayElement(insects); +} + +std::string Animal::lion() +{ + return Helper::arrayElement(lions); +} + +std::string Animal::rabbit() +{ + return Helper::arrayElement(rabbits); +} + +std::string Animal::rodent() +{ + return Helper::arrayElement(rodents); +} + +std::string Animal::snake() +{ + return Helper::arrayElement(snakes); +} + +std::string Animal::type() +{ + return Helper::arrayElement(types); +} +} \ No newline at end of file diff --git a/src/modules/animal/AnimalTest.cpp b/src/modules/animal/AnimalTest.cpp new file mode 100644 index 00000000..5a980e6d --- /dev/null +++ b/src/modules/animal/AnimalTest.cpp @@ -0,0 +1,142 @@ +#include "faker-cxx/Animal.h" + +#include + +#include "gtest/gtest.h" + +#include "data/Bears.h" +#include "data/Birds.h" +#include "data/Cats.h" +#include "data/Cetaceans.h" +#include "data/Cows.h" +#include "data/Crocodilia.h" +#include "data/Dogs.h" +#include "data/Fishes.h" +#include "data/Horses.h" +#include "data/Insects.h" +#include "data/Lions.h" +#include "data/Rabbits.h" +#include "data/Rodents.h" +#include "data/Snakes.h" +#include "data/Types.h" + +using namespace ::testing; +using namespace faker; + +class AnimalTest : public Test +{ +public: +}; + +TEST_F(AnimalTest, shouldGenerateBear) +{ + const auto generatedBear = Animal::bear(); + + ASSERT_TRUE(std::ranges::any_of(bears, [generatedBear](const std::string& bear) { return bear == generatedBear; })); +} + +TEST_F(AnimalTest, shouldGenerateBird) +{ + const auto generatedBird = Animal::bird(); + + ASSERT_TRUE(std::ranges::any_of(birds, [generatedBird](const std::string& bird) { return bird == generatedBird; })); +} + +TEST_F(AnimalTest, shouldGenerateCat) +{ + const auto generatedCat = Animal::cat(); + + ASSERT_TRUE(std::ranges::any_of(cats, [generatedCat](const std::string& cat) { return cat == generatedCat; })); +} + +TEST_F(AnimalTest, shouldGenerateCetacean) +{ + const auto generatedCetacean = Animal::cetacean(); + + ASSERT_TRUE(std::ranges::any_of(cetaceans, [generatedCetacean](const std::string& cetacean) + { return cetacean == generatedCetacean; })); +} + +TEST_F(AnimalTest, shouldGenerateCow) +{ + const auto generatedCow = Animal::cow(); + + ASSERT_TRUE(std::ranges::any_of(cows, [generatedCow](const std::string& cow) { return cow == generatedCow; })); +} + +TEST_F(AnimalTest, shouldGenerateCrocodilia) +{ + const auto generatedCrocodilia = Animal::crocodilia(); + + ASSERT_TRUE(std::ranges::any_of(faker::crocodilia, [generatedCrocodilia](const std::string& crocodilia) + { return crocodilia == generatedCrocodilia; })); +} + +TEST_F(AnimalTest, shouldGenerateDog) +{ + const auto generatedDog = Animal::dog(); + + ASSERT_TRUE(std::ranges::any_of(dogs, [generatedDog](const std::string& dog) { return dog == generatedDog; })); +} + +TEST_F(AnimalTest, shouldGenerateFish) +{ + const auto generatedFish = Animal::fish(); + + ASSERT_TRUE( + std::ranges::any_of(fishes, [generatedFish](const std::string& fish) { return fish == generatedFish; })); +} + +TEST_F(AnimalTest, shouldGenerateHorse) +{ + const auto generatedHorse = Animal::horse(); + + ASSERT_TRUE( + std::ranges::any_of(horses, [generatedHorse](const std::string& horse) { return horse == generatedHorse; })); +} + +TEST_F(AnimalTest, shouldGenerateInsect) +{ + const auto generatedInsect = Animal::insect(); + + ASSERT_TRUE(std::ranges::any_of(insects, [generatedInsect](const std::string& insect) + { return insect == generatedInsect; })); +} + +TEST_F(AnimalTest, shouldGenerateLion) +{ + const auto generatedLion = Animal::lion(); + + ASSERT_TRUE(std::ranges::any_of(lions, [generatedLion](const std::string& lion) { return lion == generatedLion; })); +} + +TEST_F(AnimalTest, shouldGenerateRabbit) +{ + const auto generatedRabbit = Animal::rabbit(); + + ASSERT_TRUE(std::ranges::any_of(rabbits, [generatedRabbit](const std::string& rabbit) + { return rabbit == generatedRabbit; })); +} + +TEST_F(AnimalTest, shouldGenerateRodent) +{ + const auto generatedRodent = Animal::rodent(); + + ASSERT_TRUE(std::ranges::any_of(rodents, [generatedRodent](const std::string& rodent) + { return rodent == generatedRodent; })); +} + +TEST_F(AnimalTest, shouldGenerateSnake) +{ + const auto generatedSnake = Animal::snake(); + + ASSERT_TRUE( + std::ranges::any_of(snakes, [generatedSnake](const std::string& snake) { return snake == generatedSnake; })); +} + +TEST_F(AnimalTest, shouldGenerateType) +{ + const auto generatedType = Animal::type(); + + ASSERT_TRUE(std::ranges::any_of(types, [generatedType](const std::string& type) { return type == generatedType; })); +} \ No newline at end of file diff --git a/src/modules/animal/data/Bears.h b/src/modules/animal/data/Bears.h new file mode 100644 index 00000000..f13680a1 --- /dev/null +++ b/src/modules/animal/data/Bears.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector bears = {"Giant panda", "Spectacled bear", "Sun bear", "Sloth bear", + "American black bear", "Asian black bear", "Brown bear", "Polar bear"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Birds.h b/src/modules/animal/data/Birds.h new file mode 100644 index 00000000..5552fef4 --- /dev/null +++ b/src/modules/animal/data/Birds.h @@ -0,0 +1,922 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector birds = {"Red-throated Loon", + "Arctic Loon", + "Pacific Loon", + "Common Loon", + "Yellow-billed Loon", + "Least Grebe", + "Pied-billed Grebe", + "Horned Grebe", + "Red-necked Grebe", + "Eared Grebe", + "Western Grebe", + "Clark's Grebe", + "Yellow-nosed Albatross", + "Shy Albatross", + "Black-browed Albatross", + "Wandering Albatross", + "Laysan Albatross", + "Black-footed Albatross", + "Short-tailed Albatross", + "Northern Fulmar", + "Herald Petrel", + "Murphy's Petrel", + "Mottled Petrel", + "Black-capped Petrel", + "Cook's Petrel", + "Stejneger's Petrel", + "White-chinned Petrel", + "Streaked Shearwater", + "Cory's Shearwater", + "Pink-footed Shearwater", + "Flesh-footed Shearwater", + "Greater Shearwater", + "Wedge-tailed Shearwater", + "Buller's Shearwater", + "Sooty Shearwater", + "Short-tailed Shearwater", + "Manx Shearwater", + "Black-vented Shearwater", + "Audubon's Shearwater", + "Little Shearwater", + "Wilson's Storm-Petrel", + "White-faced Storm-Petrel", + "European Storm-Petrel", + "Fork-tailed Storm-Petrel", + "Leach's Storm-Petrel", + "Ashy Storm-Petrel", + "Band-rumped Storm-Petrel", + "Wedge-rumped Storm-Petrel", + "Black Storm-Petrel", + "Least Storm-Petrel", + "White-tailed Tropicbird", + "Red-billed Tropicbird", + "Red-tailed Tropicbird", + "Masked Booby", + "Blue-footed Booby", + "Brown Booby", + "Red-footed Booby", + "Northern Gannet", + "American White Pelican", + "Brown Pelican", + "Brandt's Cormorant", + "Neotropic Cormorant", + "Double-crested Cormorant", + "Great Cormorant", + "Red-faced Cormorant", + "Pelagic Cormorant", + "Anhinga", + "Magnificent Frigatebird", + "Great Frigatebird", + "Lesser Frigatebird", + "American Bittern", + "Yellow Bittern", + "Least Bittern", + "Great Blue Heron", + "Great Egret", + "Chinese Egret", + "Little Egret", + "Western Reef-Heron", + "Snowy Egret", + "Little Blue Heron", + "Tricolored Heron", + "Reddish Egret", + "Cattle Egret", + "Green Heron", + "Black-crowned Night-Heron", + "Yellow-crowned Night-Heron", + "White Ibis", + "Scarlet Ibis", + "Glossy Ibis", + "White-faced Ibis", + "Roseate Spoonbill", + "Jabiru", + "Wood Stork", + "Black Vulture", + "Turkey Vulture", + "California Condor", + "Greater Flamingo", + "Black-bellied Whistling-Duck", + "Fulvous Whistling-Duck", + "Bean Goose", + "Pink-footed Goose", + "Greater White-fronted Goose", + "Lesser White-fronted Goose", + "Emperor Goose", + "Snow Goose", + "Ross's Goose", + "Canada Goose", + "Brant", + "Barnacle Goose", + "Mute Swan", + "Trumpeter Swan", + "Tundra Swan", + "Whooper Swan", + "Muscovy Duck", + "Wood Duck", + "Gadwall", + "Falcated Duck", + "Eurasian Wigeon", + "American Wigeon", + "American Black Duck", + "Mallard", + "Mottled Duck", + "Spot-billed Duck", + "Blue-winged Teal", + "Cinnamon Teal", + "Northern Shoveler", + "White-cheeked Pintail", + "Northern Pintail", + "Garganey", + "Baikal Teal", + "Green-winged Teal", + "Canvasback", + "Redhead", + "Common Pochard", + "Ring-necked Duck", + "Tufted Duck", + "Greater Scaup", + "Lesser Scaup", + "Steller's Eider", + "Spectacled Eider", + "King Eider", + "Common Eider", + "Harlequin Duck", + "Labrador Duck", + "Surf Scoter", + "White-winged Scoter", + "Black Scoter", + "Oldsquaw", + "Bufflehead", + "Common Goldeneye", + "Barrow's Goldeneye", + "Smew", + "Hooded Merganser", + "Common Merganser", + "Red-breasted Merganser", + "Masked Duck", + "Ruddy Duck", + "Osprey", + "Hook-billed Kite", + "Swallow-tailed Kite", + "White-tailed Kite", + "Snail Kite", + "Mississippi Kite", + "Bald Eagle", + "White-tailed Eagle", + "Steller's Sea-Eagle", + "Northern Harrier", + "Sharp-shinned Hawk", + "Cooper's Hawk", + "Northern Goshawk", + "Crane Hawk", + "Gray Hawk", + "Common Black-Hawk", + "Harris's Hawk", + "Roadside Hawk", + "Red-shouldered Hawk", + "Broad-winged Hawk", + "Short-tailed Hawk", + "Swainson's Hawk", + "White-tailed Hawk", + "Zone-tailed Hawk", + "Red-tailed Hawk", + "Ferruginous Hawk", + "Rough-legged Hawk", + "Golden Eagle", + "Collared Forest-Falcon", + "Crested Caracara", + "Eurasian Kestrel", + "American Kestrel", + "Merlin", + "Eurasian Hobby", + "Aplomado Falcon", + "Gyrfalcon", + "Peregrine Falcon", + "Prairie Falcon", + "Plain Chachalaca", + "Chukar", + "Himalayan Snowcock", + "Gray Partridge", + "Ring-necked Pheasant", + "Ruffed Grouse", + "Sage Grouse", + "Spruce Grouse", + "Willow Ptarmigan", + "Rock Ptarmigan", + "White-tailed Ptarmigan", + "Blue Grouse", + "Sharp-tailed Grouse", + "Greater Prairie-chicken", + "Lesser Prairie-chicken", + "Wild Turkey", + "Mountain Quail", + "Scaled Quail", + "California Quail", + "Gambel's Quail", + "Northern Bobwhite", + "Montezuma Quail", + "Yellow Rail", + "Black Rail", + "Corn Crake", + "Clapper Rail", + "King Rail", + "Virginia Rail", + "Sora", + "Paint-billed Crake", + "Spotted Rail", + "Purple Gallinule", + "Azure Gallinule", + "Common Moorhen", + "Eurasian Coot", + "American Coot", + "Limpkin", + "Sandhill Crane", + "Common Crane", + "Whooping Crane", + "Double-striped Thick-knee", + "Northern Lapwing", + "Black-bellied Plover", + "European Golden-Plover", + "American Golden-Plover", + "Pacific Golden-Plover", + "Mongolian Plover", + "Collared Plover", + "Snowy Plover", + "Wilson's Plover", + "Common Ringed Plover", + "Semipalmated Plover", + "Piping Plover", + "Little Ringed Plover", + "Killdeer", + "Mountain Plover", + "Eurasian Dotterel", + "Eurasian Oystercatcher", + "American Oystercatcher", + "Black Oystercatcher", + "Black-winged Stilt", + "Black-necked Stilt", + "American Avocet", + "Northern Jacana", + "Common Greenshank", + "Greater Yellowlegs", + "Lesser Yellowlegs", + "Marsh Sandpiper", + "Spotted Redshank", + "Wood Sandpiper", + "Green Sandpiper", + "Solitary Sandpiper", + "Willet", + "Wandering Tattler", + "Gray-tailed Tattler", + "Common Sandpiper", + "Spotted Sandpiper", + "Terek Sandpiper", + "Upland Sandpiper", + "Little Curlew", + "Eskimo Curlew", + "Whimbrel", + "Bristle-thighed Curlew", + "Far Eastern Curlew", + "Slender-billed Curlew", + "Eurasian Curlew", + "Long-billed Curlew", + "Black-tailed Godwit", + "Hudsonian Godwit", + "Bar-tailed Godwit", + "Marbled Godwit", + "Ruddy Turnstone", + "Black Turnstone", + "Surfbird", + "Great Knot", + "Red Knot", + "Sanderling", + "Semipalmated Sandpiper", + "Western Sandpiper", + "Red-necked Stint", + "Little Stint", + "Temminck's Stint", + "Long-toed Stint", + "Least Sandpiper", + "White-rumped Sandpiper", + "Baird's Sandpiper", + "Pectoral Sandpiper", + "Sharp-tailed Sandpiper", + "Purple Sandpiper", + "Rock Sandpiper", + "Dunlin", + "Curlew Sandpiper", + "Stilt Sandpiper", + "Spoonbill Sandpiper", + "Broad-billed Sandpiper", + "Buff-breasted Sandpiper", + "Ruff", + "Short-billed Dowitcher", + "Long-billed Dowitcher", + "Jack Snipe", + "Common Snipe", + "Pin-tailed Snipe", + "Eurasian Woodcock", + "American Woodcock", + "Wilson's Phalarope", + "Red-necked Phalarope", + "Red Phalarope", + "Oriental Pratincole", + "Great Skua", + "South Polar Skua", + "Pomarine Jaeger", + "Parasitic Jaeger", + "Long-tailed Jaeger", + "Laughing Gull", + "Franklin's Gull", + "Little Gull", + "Black-headed Gull", + "Bonaparte's Gull", + "Heermann's Gull", + "Band-tailed Gull", + "Black-tailed Gull", + "Mew Gull", + "Ring-billed Gull", + "California Gull", + "Herring Gull", + "Yellow-legged Gull", + "Thayer's Gull", + "Iceland Gull", + "Lesser Black-backed Gull", + "Slaty-backed Gull", + "Yellow-footed Gull", + "Western Gull", + "Glaucous-winged Gull", + "Glaucous Gull", + "Great Black-backed Gull", + "Sabine's Gull", + "Black-legged Kittiwake", + "Red-legged Kittiwake", + "Ross's Gull", + "Ivory Gull", + "Gull-billed Tern", + "Caspian Tern", + "Royal Tern", + "Elegant Tern", + "Sandwich Tern", + "Roseate Tern", + "Common Tern", + "Arctic Tern", + "Forster's Tern", + "Least Tern", + "Aleutian Tern", + "Bridled Tern", + "Sooty Tern", + "Large-billed Tern", + "White-winged Tern", + "Whiskered Tern", + "Black Tern", + "Brown Noddy", + "Black Noddy", + "Black Skimmer", + "Dovekie", + "Common Murre", + "Thick-billed Murre", + "Razorbill", + "Great Auk", + "Black Guillemot", + "Pigeon Guillemot", + "Long-billed Murrelet", + "Marbled Murrelet", + "Kittlitz's Murrelet", + "Xantus's Murrelet", + "Craveri's Murrelet", + "Ancient Murrelet", + "Cassin's Auklet", + "Parakeet Auklet", + "Least Auklet", + "Whiskered Auklet", + "Crested Auklet", + "Rhinoceros Auklet", + "Atlantic Puffin", + "Horned Puffin", + "Tufted Puffin", + "Rock Dove", + "Scaly-naped Pigeon", + "White-crowned Pigeon", + "Red-billed Pigeon", + "Band-tailed Pigeon", + "Oriental Turtle-Dove", + "European Turtle-Dove", + "Eurasian Collared-Dove", + "Spotted Dove", + "White-winged Dove", + "Zenaida Dove", + "Mourning Dove", + "Passenger Pigeon", + "Inca Dove", + "Common Ground-Dove", + "Ruddy Ground-Dove", + "White-tipped Dove", + "Key West Quail-Dove", + "Ruddy Quail-Dove", + "Budgerigar", + "Monk Parakeet", + "Carolina Parakeet", + "Thick-billed Parrot", + "White-winged Parakeet", + "Red-crowned Parrot", + "Common Cuckoo", + "Oriental Cuckoo", + "Black-billed Cuckoo", + "Yellow-billed Cuckoo", + "Mangrove Cuckoo", + "Greater Roadrunner", + "Smooth-billed Ani", + "Groove-billed Ani", + "Barn Owl", + "Flammulated Owl", + "Oriental Scops-Owl", + "Western Screech-Owl", + "Eastern Screech-Owl", + "Whiskered Screech-Owl", + "Great Horned Owl", + "Snowy Owl", + "Northern Hawk Owl", + "Northern Pygmy-Owl", + "Ferruginous Pygmy-Owl", + "Elf Owl", + "Burrowing Owl", + "Mottled Owl", + "Spotted Owl", + "Barred Owl", + "Great Gray Owl", + "Long-eared Owl", + "Short-eared Owl", + "Boreal Owl", + "Northern Saw-whet Owl", + "Lesser Nighthawk", + "Common Nighthawk", + "Antillean Nighthawk", + "Common Pauraque", + "Common Poorwill", + "Chuck-will's-widow", + "Buff-collared Nightjar", + "Whip-poor-will", + "Jungle Nightjar", + "Black Swift", + "White-collared Swift", + "Chimney Swift", + "Vaux's Swift", + "White-throated Needletail", + "Common Swift", + "Fork-tailed Swift", + "White-throated Swift", + "Antillean Palm Swift", + "Green Violet-ear", + "Green-breasted Mango", + "Broad-billed Hummingbird", + "White-eared Hummingbird", + "Xantus's Hummingbird", + "Berylline Hummingbird", + "Buff-bellied Hummingbird", + "Cinnamon Hummingbird", + "Violet-crowned Hummingbird", + "Blue-throated Hummingbird", + "Magnificent Hummingbird", + "Plain-capped Starthroat", + "Bahama Woodstar", + "Lucifer Hummingbird", + "Ruby-throated Hummingbird", + "Black-chinned Hummingbird", + "Anna's Hummingbird", + "Costa's Hummingbird", + "Calliope Hummingbird", + "Bumblebee Hummingbird", + "Broad-tailed Hummingbird", + "Rufous Hummingbird", + "Allen's Hummingbird", + "Elegant Trogon", + "Eared Trogon", + "Hoopoe", + "Ringed Kingfisher", + "Belted Kingfisher", + "Green Kingfisher", + "Eurasian Wryneck", + "Lewis's Woodpecker", + "Red-headed Woodpecker", + "Acorn Woodpecker", + "Gila Woodpecker", + "Golden-fronted Woodpecker", + "Red-bellied Woodpecker", + "Williamson's Sapsucker", + "Yellow-bellied Sapsucker", + "Red-naped Sapsucker", + "Red-breasted Sapsucker", + "Great Spotted Woodpecker", + "Ladder-backed Woodpecker", + "Nuttall's Woodpecker", + "Downy Woodpecker", + "Hairy Woodpecker", + "Strickland's Woodpecker", + "Red-cockaded Woodpecker", + "White-headed Woodpecker", + "Three-toed Woodpecker", + "Black-backed Woodpecker", + "Northern Flicker", + "Gilded Flicker", + "Pileated Woodpecker", + "Ivory-billed Woodpecker", + "Northern Beardless-Tyrannulet", + "Greenish Elaenia", + "Caribbean Elaenia", + "Tufted Flycatcher", + "Olive-sided Flycatcher", + "Greater Pewee", + "Western Wood-Pewee", + "Eastern Wood-Pewee", + "Yellow-bellied Flycatcher", + "Acadian Flycatcher", + "Alder Flycatcher", + "Willow Flycatcher", + "Least Flycatcher", + "Hammond's Flycatcher", + "Dusky Flycatcher", + "Gray Flycatcher", + "Pacific-slope Flycatcher", + "Cordilleran Flycatcher", + "Buff-breasted Flycatcher", + "Black Phoebe", + "Eastern Phoebe", + "Say's Phoebe", + "Vermilion Flycatcher", + "Dusky-capped Flycatcher", + "Ash-throated Flycatcher", + "Nutting's Flycatcher", + "Great Crested Flycatcher", + "Brown-crested Flycatcher", + "La Sagra's Flycatcher", + "Great Kiskadee", + "Sulphur-bellied Flycatcher", + "Variegated Flycatcher", + "Tropical Kingbird", + "Couch's Kingbird", + "Cassin's Kingbird", + "Thick-billed Kingbird", + "Western Kingbird", + "Eastern Kingbird", + "Gray Kingbird", + "Loggerhead Kingbird", + "Scissor-tailed Flycatcher", + "Fork-tailed Flycatcher", + "Rose-throated Becard", + "Masked Tityra", + "Brown Shrike", + "Loggerhead Shrike", + "Northern Shrike", + "White-eyed Vireo", + "Thick-billed Vireo", + "Bell's Vireo", + "Black-capped Vireo", + "Gray Vireo", + "Yellow-throated Vireo", + "Plumbeous Vireo", + "Cassin's Vireo", + "Blue-headed Vireo", + "Hutton's Vireo", + "Warbling Vireo", + "Philadelphia Vireo", + "Red-eyed Vireo", + "Yellow-green Vireo", + "Black-whiskered Vireo", + "Yucatan Vireo", + "Gray Jay", + "Steller's Jay", + "Blue Jay", + "Green Jay", + "Brown Jay", + "Florida Scrub-Jay", + "Island Scrub-Jay", + "Western Scrub-Jay", + "Mexican Jay", + "Pinyon Jay", + "Clark's Nutcracker", + "Black-billed Magpie", + "Yellow-billed Magpie", + "Eurasian Jackdaw", + "American Crow", + "Northwestern Crow", + "Tamaulipas Crow", + "Fish Crow", + "Chihuahuan Raven", + "Common Raven", + "Sky Lark", + "Horned Lark", + "Purple Martin", + "Cuban Martin", + "Gray-breasted Martin", + "Southern Martin", + "Brown-chested Martin", + "Tree Swallow", + "Violet-green Swallow", + "Bahama Swallow", + "Northern Rough-winged Swallow", + "Bank Swallow", + "Cliff Swallow", + "Cave Swallow", + "Barn Swallow", + "Common House-Martin", + "Carolina Chickadee", + "Black-capped Chickadee", + "Mountain Chickadee", + "Mexican Chickadee", + "Chestnut-backed Chickadee", + "Boreal Chickadee", + "Gray-headed Chickadee", + "Bridled Titmouse", + "Oak Titmouse", + "Juniper Titmouse", + "Tufted Titmouse", + "Verdin", + "Bushtit", + "Red-breasted Nuthatch", + "White-breasted Nuthatch", + "Pygmy Nuthatch", + "Brown-headed Nuthatch", + "Brown Creeper", + "Cactus Wren", + "Rock Wren", + "Canyon Wren", + "Carolina Wren", + "Bewick's Wren", + "House Wren", + "Winter Wren", + "Sedge Wren", + "Marsh Wren", + "American Dipper", + "Red-whiskered Bulbul", + "Golden-crowned Kinglet", + "Ruby-crowned Kinglet", + "Middendorff's Grasshopper-Warbler", + "Lanceolated Warbler", + "Wood Warbler", + "Dusky Warbler", + "Arctic Warbler", + "Blue-gray Gnatcatcher", + "California Gnatcatcher", + "Black-tailed Gnatcatcher", + "Black-capped Gnatcatcher", + "Narcissus Flycatcher", + "Mugimaki Flycatcher", + "Red-breasted Flycatcher", + "Siberian Flycatcher", + "Gray-spotted Flycatcher", + "Asian Brown Flycatcher", + "Siberian Rubythroat", + "Bluethroat", + "Siberian Blue Robin", + "Red-flanked Bluetail", + "Northern Wheatear", + "Stonechat", + "Eastern Bluebird", + "Western Bluebird", + "Mountain Bluebird", + "Townsend's Solitaire", + "Veery", + "Gray-cheeked Thrush", + "Bicknell's Thrush", + "Swainson's Thrush", + "Hermit Thrush", + "Wood Thrush", + "Eurasian Blackbird", + "Eyebrowed Thrush", + "Dusky Thrush", + "Fieldfare", + "Redwing", + "Clay-colored Robin", + "White-throated Robin", + "Rufous-backed Robin", + "American Robin", + "Varied Thrush", + "Aztec Thrush", + "Wrentit", + "Gray Catbird", + "Black Catbird", + "Northern Mockingbird", + "Bahama Mockingbird", + "Sage Thrasher", + "Brown Thrasher", + "Long-billed Thrasher", + "Bendire's Thrasher", + "Curve-billed Thrasher", + "California Thrasher", + "Crissal Thrasher", + "Le Conte's Thrasher", + "Blue Mockingbird", + "European Starling", + "Crested Myna", + "Siberian Accentor", + "Yellow Wagtail", + "Citrine Wagtail", + "Gray Wagtail", + "White Wagtail", + "Black-backed Wagtail", + "Tree Pipit", + "Olive-backed Pipit", + "Pechora Pipit", + "Red-throated Pipit", + "American Pipit", + "Sprague's Pipit", + "Bohemian Waxwing", + "Cedar Waxwing", + "Gray Silky-flycatcher", + "Phainopepla", + "Olive Warbler", + "Bachman's Warbler", + "Blue-winged Warbler", + "Golden-winged Warbler", + "Tennessee Warbler", + "Orange-crowned Warbler", + "Nashville Warbler", + "Virginia's Warbler", + "Colima Warbler", + "Lucy's Warbler", + "Crescent-chested Warbler", + "Northern Parula", + "Tropical Parula", + "Yellow Warbler", + "Chestnut-sided Warbler", + "Magnolia Warbler", + "Cape May Warbler", + "Black-throated Blue Warbler", + "Yellow-rumped Warbler", + "Black-throated Gray Warbler", + "Golden-cheeked Warbler", + "Black-throated Green Warbler", + "Townsend's Warbler", + "Hermit Warbler", + "Blackburnian Warbler", + "Yellow-throated Warbler", + "Grace's Warbler", + "Pine Warbler", + "Kirtland's Warbler", + "Prairie Warbler", + "Palm Warbler", + "Bay-breasted Warbler", + "Blackpoll Warbler", + "Cerulean Warbler", + "Black-and-white Warbler", + "American Redstart", + "Prothonotary Warbler", + "Worm-eating Warbler", + "Swainson's Warbler", + "Ovenbird", + "Northern Waterthrush", + "Louisiana Waterthrush", + "Kentucky Warbler", + "Connecticut Warbler", + "Mourning Warbler", + "MacGillivray's Warbler", + "Common Yellowthroat", + "Gray-crowned Yellowthroat", + "Hooded Warbler", + "Wilson's Warbler", + "Canada Warbler", + "Red-faced Warbler", + "Painted Redstart", + "Slate-throated Redstart", + "Fan-tailed Warbler", + "Golden-crowned Warbler", + "Rufous-capped Warbler", + "Yellow-breasted Chat", + "Bananaquit", + "Hepatic Tanager", + "Summer Tanager", + "Scarlet Tanager", + "Western Tanager", + "Flame-colored Tanager", + "Stripe-headed Tanager", + "White-collared Seedeater", + "Yellow-faced Grassquit", + "Black-faced Grassquit", + "Olive Sparrow", + "Green-tailed Towhee", + "Spotted Towhee", + "Eastern Towhee", + "Canyon Towhee", + "California Towhee", + "Abert's Towhee", + "Rufous-winged Sparrow", + "Cassin's Sparrow", + "Bachman's Sparrow", + "Botteri's Sparrow", + "Rufous-crowned Sparrow", + "Five-striped Sparrow", + "American Tree Sparrow", + "Chipping Sparrow", + "Clay-colored Sparrow", + "Brewer's Sparrow", + "Field Sparrow", + "Worthen's Sparrow", + "Black-chinned Sparrow", + "Vesper Sparrow", + "Lark Sparrow", + "Black-throated Sparrow", + "Sage Sparrow", + "Lark Bunting", + "Savannah Sparrow", + "Grasshopper Sparrow", + "Baird's Sparrow", + "Henslow's Sparrow", + "Le Conte's Sparrow", + "Nelson's Sharp-tailed Sparrow", + "Saltmarsh Sharp-tailed Sparrow", + "Seaside Sparrow", + "Fox Sparrow", + "Song Sparrow", + "Lincoln's Sparrow", + "Swamp Sparrow", + "White-throated Sparrow", + "Harris's Sparrow", + "White-crowned Sparrow", + "Golden-crowned Sparrow", + "Dark-eyed Junco", + "Yellow-eyed Junco", + "McCown's Longspur", + "Lapland Longspur", + "Smith's Longspur", + "Chestnut-collared Longspur", + "Pine Bunting", + "Little Bunting", + "Rustic Bunting", + "Yellow-breasted Bunting", + "Gray Bunting", + "Pallas's Bunting", + "Reed Bunting", + "Snow Bunting", + "McKay's Bunting", + "Crimson-collared Grosbeak", + "Northern Cardinal", + "Pyrrhuloxia", + "Yellow Grosbeak", + "Rose-breasted Grosbeak", + "Black-headed Grosbeak", + "Blue Bunting", + "Blue Grosbeak", + "Lazuli Bunting", + "Indigo Bunting", + "Varied Bunting", + "Painted Bunting", + "Dickcissel", + "Bobolink", + "Red-winged Blackbird", + "Tricolored Blackbird", + "Tawny-shouldered Blackbird", + "Eastern Meadowlark", + "Western Meadowlark", + "Yellow-headed Blackbird", + "Rusty Blackbird", + "Brewer's Blackbird", + "Common Grackle", + "Boat-tailed Grackle", + "Great-tailed Grackle", + "Shiny Cowbird", + "Bronzed Cowbird", + "Brown-headed Cowbird", + "Black-vented Oriole", + "Orchard Oriole", + "Hooded Oriole", + "Streak-backed Oriole", + "Spot-breasted Oriole", + "Altamira Oriole", + "Audubon's Oriole", + "Baltimore Oriole", + "Bullock's Oriole", + "Scott's Oriole", + "Common Chaffinch", + "Brambling", + "Gray-crowned Rosy-Finch", + "Black Rosy-Finch", + "Brown-capped Rosy-Finch", + "Pine Grosbeak", + "Common Rosefinch", + "Purple Finch", + "Cassin's Finch", + "House Finch", + "Red Crossbill", + "White-winged Crossbill", + "Common Redpoll", + "Hoary Redpoll", + "Eurasian Siskin", + "Pine Siskin", + "Lesser Goldfinch", + "Lawrence's Goldfinch", + "American Goldfinch", + "Oriental Greenfinch", + "Eurasian Bullfinch", + "Evening Grosbeak", + "Hawfinch", + "House Sparrow", + "Eurasian Tree Sparrow"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Cats.h b/src/modules/animal/data/Cats.h new file mode 100644 index 00000000..99bdaeb0 --- /dev/null +++ b/src/modules/animal/data/Cats.h @@ -0,0 +1,63 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector cats = {"Abyssinian", + "American Bobtail", + "American Curl", + "American Shorthair", + "American Wirehair", + "Balinese", + "Bengal", + "Birman", + "Bombay", + "British Shorthair", + "Burmese", + "Chartreux", + "Chausie", + "Cornish Rex", + "Devon Rex", + "Donskoy", + "Egyptian Mau", + "Exotic Shorthair", + "Havana", + "Highlander", + "Himalayan", + "Japanese Bobtail", + "Korat", + "Kurilian Bobtail", + "LaPerm", + "Maine Coon", + "Manx", + "Minskin", + "Munchkin", + "Nebelung", + "Norwegian Forest Cat", + "Ocicat", + "Ojos Azules", + "Oriental", + "Persian", + "Peterbald", + "Pixiebob", + "Ragdoll", + "Russian Blue", + "Savannah", + "Scottish Fold", + "Selkirk Rex", + "Serengeti", + "Siberian", + "Siamese", + "Singapura", + "Snowshoe", + "Sokoke", + "Somali", + "Sphynx", + "Thai", + "Tonkinese", + "Toyger", + "Turkish Angora", + "Turkish Van"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Cetaceans.h b/src/modules/animal/data/Cetaceans.h new file mode 100644 index 00000000..8edebf49 --- /dev/null +++ b/src/modules/animal/data/Cetaceans.h @@ -0,0 +1,62 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector cetaceans = {"Blue Whale", + "Fin Whale", + "Sei Whale", + "Sperm Whale", + "Bryde’s whale", + "Omura’s whale", + "Humpback whale", + "Long-Beaked Common Dolphin", + "Short-Beaked Common Dolphin", + "Bottlenose Dolphin", + "Indo-Pacific Bottlenose Dolphin", + "Northern Rightwhale Dolphin", + "Southern Rightwhale Dolphin", + "Tucuxi", + "Costero", + "Indo-Pacific Hump-backed Dolphin", + "Chinese White Dolphin", + "Atlantic Humpbacked Dolphin", + "Atlantic Spotted Dolphin", + "Clymene Dolphin", + "Pantropical Spotted Dolphin", + "Spinner Dolphin", + "Striped Dolphin", + "Rough-Toothed Dolphin", + "Chilean Dolphin", + "Commerson’s Dolphin", + "Heaviside’s Dolphin", + "Hector’s Dolphin", + "Risso’s Dolphin", + "Fraser’s Dolphin", + "Atlantic White-Sided Dolphin", + "Dusky Dolphin", + "Hourglass Dolphin", + "Pacific White-Sided Dolphin", + "Peale’s Dolphin", + "White-Beaked Dolphin", + "Australian Snubfin Dolphin", + "Irrawaddy Dolphin", + "Melon-headed Whale", + "Killer Whale (Orca)", + "Pygmy Killer Whale", + "False Killer Whale", + "Long-finned Pilot Whale", + "Short-finned Pilot Whale", + "Guiana Dolphin", + "Burrunan Dolphin", + "Australian humpback Dolphin", + "Amazon River Dolphin", + "Chinese River Dolphin", + "Ganges River Dolphin", + "La Plata Dolphin", + "Southern Bottlenose Whale", + "Longman's Beaked Whale", + "Arnoux's Beaked Whale"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Cows.h b/src/modules/animal/data/Cows.h new file mode 100644 index 00000000..ad7bfd7b --- /dev/null +++ b/src/modules/animal/data/Cows.h @@ -0,0 +1,503 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector cows = {"Aberdeen Angus", + "Abergele", + "Abigar", + "Abondance", + "Abyssinian Shorthorned Zebu", + "Aceh", + "Achham", + "Adamawa", + "Adaptaur", + "Afar", + "Africangus", + "Afrikaner", + "Agerolese", + "Alambadi", + "Alatau", + "Albanian", + "Albera", + "Alderney", + "Alentejana", + "Aleutian wild cattle", + "Aliad Dinka", + "Alistana-Sanabresa", + "Allmogekor", + "Alur", + "American", + "American Angus", + "American Beef Friesian", + "American Brown Swiss", + "American Milking Devon", + "American White Park", + "Amerifax", + "Amrit Mahal", + "Amsterdam Island cattle", + "Anatolian Black", + "Andalusian Black", + "Andalusian Blond", + "Andalusian Grey", + "Angeln", + "Angoni", + "Ankina", + "Ankole", + "Ankole-Watusi", + "Aracena", + "Arado", + "Argentine Criollo", + "Argentine Friesian", + "Armorican", + "Arouquesa", + "Arsi", + "Asturian Mountain", + "Asturian Valley", + "Aubrac", + "Aulie-Ata", + "Aure et Saint-Girons", + "Australian Braford", + "Australian Brangus", + "Australian Charbray", + "Australian Friesian Sahiwal", + "Australian Lowline", + "Australian Milking Zebu", + "Australian Shorthorn", + "Austrian Simmental", + "Austrian Yellow", + "Avétonou", + "Avileña-Negra Ibérica", + "Aweil Dinka", + "Ayrshire", + "Azaouak", + "Azebuado", + "Azerbaijan Zebu", + "Azores", + "Bedit", + "Breed", + "Bachaur cattle", + "Baherie cattle", + "Bakosi cattle", + "Balancer", + "Baoule", + "Bargur cattle", + "Barrosã", + "Barzona", + "Bazadaise", + "Beef Freisian", + "Beefalo", + "Beefmaker", + "Beefmaster", + "Begayt", + "Belgian Blue", + "Belgian Red", + "Belgian Red Pied", + "Belgian White-and-Red", + "Belmont Red", + "Belted Galloway", + "Bernese", + "Berrenda cattle", + "Betizu", + "Bianca Modenese", + "Blaarkop", + "Black Angus", + "Black Baldy", + "Black Hereford", + "Blanca Cacereña", + "Blanco Orejinegro BON", + "Blonde d'Aquitaine", + "Blue Albion", + "Blue Grey", + "Bohuskulla", + "Bonsmara", + "Boran", + "Boškarin", + "Braford", + "Brahman", + "Brahmousin", + "Brangus", + "Braunvieh", + "Brava", + "British White", + "British Friesian", + "Brown Carpathian", + "Brown Caucasian", + "Brown Swiss", + "Bue Lingo", + "Burlina", + "Buša cattle", + "Butana cattle", + "Bushuyev", + "Cedit", + "Cachena", + "Caldelana", + "Camargue", + "Campbell Island cattle", + "Canadian Speckle Park", + "Canadienne", + "Canaria", + "Canchim", + "Caracu", + "Cárdena Andaluza", + "Carinthian Blondvieh", + "Carora", + "Charbray", + "Charolais", + "Chateaubriand", + "Chiangus", + "Chianina", + "Chillingham cattle", + "Chinese Black Pied", + "Cholistani", + "Coloursided White Back", + "Commercial", + "Corriente", + "Corsican cattle", + "Costeño con Cuernos", + "Crioulo Lageano", + "Dedit", + "Dajal", + "Dangi cattle", + "Danish Black-Pied", + "Danish Jersey", + "Danish Red", + "Deep Red cattle", + "Deoni", + "Devon", + "Dexter cattle", + "Dhanni", + "Doayo cattle", + "Doela", + "Drakensberger", + "Dølafe", + "Droughtmaster", + "Dulong'", + "Dutch Belted", + "Dutch Friesian", + "Dwarf Lulu", + "Eedit", + "East Anatolian Red", + "Eastern Finncattle", + "Eastern Red Polled", + "Enderby Island cattle", + "English Longhorn", + "Ennstaler Bergscheck", + "Estonian Holstein", + "Estonian Native", + "Estonian Red cattle", + "Évolène cattle", + "Fedit", + "Fēng Cattle", + "Finnish Ayrshire", + "Finncattle", + "Finnish Holstein-Friesian", + "Fjäll", + "Fleckvieh", + "Florida Cracker cattle", + "Fogera", + "French Simmental", + "Fribourgeoise", + "Friesian Red and White", + "Fulani Sudanese", + "Gedit", + "Galician Blond", + "Galloway cattle", + "Gangatiri", + "Gaolao", + "Garvonesa", + "Gascon cattle", + "Gelbvieh", + "Georgian Mountain cattle", + "German Angus", + "German Black Pied cattle", + "German Black Pied Dairy", + "German Red Pied", + "Gir", + "Glan cattle", + "Gloucester", + "Gobra", + "Greek Shorthorn", + "Greek Steppe", + "Greyman cattle", + "Gudali", + "Guernsey cattle", + "Guzerá", + "Hedit", + "Hallikar4", + "Hanwoo", + "Hariana cattle", + "Hartón del Valle", + "Harzer Rotvieh", + "Hays Converter", + "Heck cattle", + "Hereford", + "Herens", + "Hybridmaster", + "Highland cattle", + "Hinterwald", + "Holando-Argentino", + "Holstein Friesian cattle", + "Horro", + "Huáng Cattle", + "Hungarian Grey", + "Iedit", + "Iberian cattle", + "Icelandic", + "Illawarra cattle", + "Improved Red and White", + "Indo-Brazilian", + "Irish Moiled", + "Israeli Holstein", + "Israeli Red", + "Istoben cattle", + "Istrian cattle", + "Jedit", + "Jamaica Black", + "Jamaica Hope", + "Jamaica Red", + "Japanese Brown", + "Jarmelista", + "Javari cattle", + "Jersey cattle", + "Jutland cattle", + "Kedit", + "Kabin Buri cattle", + "Kalmyk cattle", + "Kangayam", + "Kankrej", + "Kamphaeng Saen cattle", + "Karan Swiss", + "Kasaragod Dwarf cattle", + "Kathiawadi", + "Kazakh Whiteheaded", + "Kenana cattle", + "Kenkatha cattle", + "Kerry cattle", + "Kherigarh", + "Khillari cattle", + "Kholomogory", + "Korat Wagyu", + "Kostroma cattle", + "Krishna Valley cattle", + "Kuri", + "Kurgan cattle", + "Ledit", + "La Reina cattle", + "Lakenvelder cattle", + "Lampurger", + "Latvian Blue", + "Latvian Brown", + "Latvian Danish Red", + "Lebedyn", + "Levantina", + "Limia cattle", + "Limousin", + "Limpurger", + "Lincoln Red", + "Lineback", + "Lithuanian Black-and-White", + "Lithuanian Light Grey", + "Lithuanian Red", + "Lithuanian White-Backed", + "Lohani cattle", + "Lourdais", + "Lucerna cattle", + "Luing", + "Medit", + "Madagascar Zebu", + "Madura", + "Maine-Anjou", + "Malnad Gidda", + "Malvi", + "Mandalong Special", + "Mantequera Leonesa", + "Maramureş Brown", + "Marchigiana", + "Maremmana", + "Marinhoa", + "Maronesa", + "Masai", + "Mashona", + "Menorquina", + "Mertolenga", + "Meuse-Rhine-Issel", + "Mewati", + "Milking Shorthorn", + "Minhota", + "Mirandesa", + "Mirkadim", + "Mocăniţă", + "Mollie", + "Monchina", + "Mongolian", + "Montbéliarde", + "Morucha", + "Muturu", + "Murboden", + "Murnau-Werdenfels", + "Murray Grey", + "Nedit", + "Nagori", + "N'Dama", + "Negra Andaluza", + "Nelore", + "Nguni", + "Nimari", + "Normande", + "North Bengal Grey", + "Northern Finncattle", + "Northern Shorthorn", + "Norwegian Red", + "Oedit]", + "Ongole", + "Original Simmental", + "Pedit", + "Pajuna", + "Palmera", + "Pantaneiro", + "Parda Alpina", + "Parthenaise", + "Pasiega", + "Pembroke", + "Philippine Native", + "Pie Rouge des Plaines", + "Piedmontese cattle", + "Pineywoods", + "Pinzgauer", + "Pirenaica", + "Podolac", + "Podolica", + "Polish Black-and-White", + "Polish Red", + "Polled Hereford", + "Poll Shorthorn", + "Polled Shorthorn", + "Ponwar", + "Preta", + "Punganur", + "Pulikulam", + "Pustertaler Sprinzen", + "Qedit", + "Qinchaun", + "Queensland Miniature Boran", + "Redit", + "Ramo Grande", + "Randall", + "Raramuri Criollo", + "Rathi", + "Rätisches Grauvieh", + "Raya", + "Red Angus", + "Red Brangus", + "Red Chittagong", + "Red Fulani", + "Red Gorbatov", + "Red Holstein", + "Red Kandhari", + "Red Mingrelian", + "Red Poll", + "Red Polled Østland", + "Red Sindhi", + "Retinta", + "Riggit Galloway", + "Ringamåla", + "Rohjan", + "Romagnola", + "Romanian Bălţata", + "Romanian Steppe Gray", + "Romosinuano", + "Russian Black Pied", + "RX3", + "Sedit", + "Sahiwal", + "Salers", + "Salorn", + "Sanga", + "Sanhe", + "Santa Cruz", + "Santa Gertrudis", + "Sayaguesa", + "Schwyz", + "Selembu", + "Senepol", + "Serbian Pied", + "Serbian Steppe", + "Sheko", + "Shetland", + "Shorthorn", + "Siboney de Cuba", + "Simbrah", + "Simford", + "Simmental", + "Siri", + "South Devon", + "Spanish Fighting Bull", + "Speckle Park", + "Square Meater", + "Sussex", + "Swedish Friesian", + "Swedish Polled", + "Swedish Red Pied", + "Swedish Red Polled", + "Swedish Red-and-White", + "Tedit", + "Tabapuã", + "Tarentaise", + "Tasmanian Grey", + "Tauros", + "Telemark", + "Texas Longhorn", + "Texon", + "Thai Black", + "Thai Fighting Bull", + "Thai Friesian", + "Thai Milking Zebu", + "Tharparkar", + "Tswana", + "Tudanca", + "Tuli", + "Tulim", + "Turkish Grey Steppe", + "Tux-Zillertal", + "Tyrol Grey", + "Uedit", + "Umblachery", + "Ukrainian Grey", + "Vedit", + "Valdostana Castana", + "Valdostana Pezzata Nera", + "Valdostana Pezzata Rossa", + "Väneko", + "Vaynol", + "Vechur8", + "Vestland Fjord", + "Vestland Red Polled", + "Vianesa", + "Volinian Beef", + "Vorderwald", + "Vosgienne", + "Wedit", + "Wagyu", + "Waguli", + "Wangus", + "Welsh Black", + "Western Finncattle", + "White Cáceres", + "White Fulani", + "White Lamphun", + "White Park", + "Whitebred Shorthorn", + "Xedit", + "Xingjiang Brown", + "Yedit", + "Yakutian", + "Yanbian", + "Yanhuang", + "Yurino", + "Zedit", + "Żubroń", + "Zebu"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Crocodilia.h b/src/modules/animal/data/Crocodilia.h new file mode 100644 index 00000000..fb72aa71 --- /dev/null +++ b/src/modules/animal/data/Crocodilia.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector crocodilia = {"Alligator mississippiensis", + "Chinese Alligator", + "Black Caiman", + "Broad-snouted Caiman", + "Spectacled Caiman", + "Yacare Caiman", + "Cuvier’s Dwarf Caiman", + "Schneider’s Smooth-fronted Caiman", + "African Slender-snouted Crocodile", + "American Crocodile", + "Australian Freshwater Crocodile", + "Cuban Crocodile", + "Dwarf Crocodile", + "Morelet’s Crocodile", + "Mugger Crocodile", + "New Guinea Freshwater Crocodile", + "Nile Crocodile", + "West African Crocodile", + "Orinoco Crocodile", + "Philippine Crocodile", + "Saltwater Crocodile", + "Siamese Crocodile", + "Gharial", + "Tomistoma"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Dogs.h b/src/modules/animal/data/Dogs.h new file mode 100644 index 00000000..3a14c19f --- /dev/null +++ b/src/modules/animal/data/Dogs.h @@ -0,0 +1,505 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector dogs = {"Affenpinscher", + "Afghan Hound", + "Aidi", + "Airedale Terrier", + "Akbash", + "Akita", + "Alano Español", + "Alapaha Blue Blood Bulldog", + "Alaskan Husky", + "Alaskan Klee Kai", + "Alaskan Malamute", + "Alopekis", + "Alpine Dachsbracke", + "American Bulldog", + "American Bully", + "American Cocker Spaniel", + "American English Coonhound", + "American Foxhound", + "American Hairless Terrier", + "American Pit Bull Terrier", + "American Staffordshire Terrier", + "American Water Spaniel", + "Andalusian Hound", + "Anglo-Français de Petite Vénerie", + "Appenzeller Sennenhund", + "Ariegeois", + "Armant", + "Armenian Gampr dog", + "Artois Hound", + "Australian Cattle Dog", + "Australian Kelpie", + "Australian Shepherd", + "Australian Stumpy Tail Cattle Dog", + "Australian Terrier", + "Austrian Black and Tan Hound", + "Austrian Pinscher", + "Azawakh", + "Bakharwal dog", + "Banjara Hound", + "Barbado da Terceira", + "Barbet", + "Basenji", + "Basque Shepherd Dog", + "Basset Artésien Normand", + "Basset Bleu de Gascogne", + "Basset Fauve de Bretagne", + "Basset Hound", + "Bavarian Mountain Hound", + "Beagle", + "Beagle-Harrier", + "Belgian Shepherd", + "Bearded Collie", + "Beauceron", + "Bedlington Terrier", + "Bergamasco Shepherd", + "Berger Picard", + "Bernese Mountain Dog", + "Bhotia", + "Bichon Frisé", + "Billy", + "Black and Tan Coonhound", + "Black Norwegian Elkhound", + "Black Russian Terrier", + "Black Mouth Cur", + "Bloodhound", + "Blue Lacy", + "Blue Picardy Spaniel", + "Bluetick Coonhound", + "Boerboel", + "Bohemian Shepherd", + "Bolognese", + "Border Collie", + "Border Terrier", + "Borzoi", + "Bosnian Coarse-haired Hound", + "Boston Terrier", + "Bouvier des Ardennes", + "Bouvier des Flandres", + "Boxer", + "Boykin Spaniel", + "Bracco Italiano", + "Braque d'Auvergne", + "Braque de l'Ariège", + "Braque du Bourbonnais", + "Braque Francais", + "Braque Saint-Germain", + "Briard", + "Briquet Griffon Vendéen", + "Brittany", + "Broholmer", + "Bruno Jura Hound", + "Brussels Griffon", + "Bucovina Shepherd Dog", + "Bull Arab", + "Bull Terrier", + "Bulldog", + "Bullmastiff", + "Bully Kutta", + "Burgos Pointer", + "Cairn Terrier", + "Campeiro Bulldog", + "Canaan Dog", + "Canadian Eskimo Dog", + "Cane Corso", + "Cane di Oropa", + "Cane Paratore", + "Cantabrian Water Dog", + "Can de Chira", + "Cão da Serra de Aires", + "Cão de Castro Laboreiro", + "Cão de Gado Transmontano", + "Cão Fila de São Miguel", + "Cardigan Welsh Corgi", + "Carea Castellano Manchego", + "Carolina Dog", + "Carpathian Shepherd Dog", + "Catahoula Leopard Dog", + "Catalan Sheepdog", + "Caucasian Shepherd Dog", + "Cavalier King Charles Spaniel", + "Central Asian Shepherd Dog", + "Cesky Fousek", + "Cesky Terrier", + "Chesapeake Bay Retriever", + "Chien Français Blanc et Noir", + "Chien Français Blanc et Orange", + "Chien Français Tricolore", + "Chihuahua", + "Chilean Terrier", + "Chinese Chongqing Dog", + "Chinese Crested Dog", + "Chinook", + "Chippiparai", + "Chongqing dog", + "Chortai", + "Chow Chow", + "Cimarrón Uruguayo", + "Cirneco dell'Etna", + "Clumber Spaniel", + "Colombian fino hound", + "Coton de Tulear", + "Cretan Hound", + "Croatian Sheepdog", + "Curly-Coated Retriever", + "Cursinu", + "Czechoslovakian Wolfdog", + "Dachshund", + "Dalmatian", + "Dandie Dinmont Terrier", + "Danish-Swedish Farmdog", + "Denmark Feist", + "Dingo", + "Doberman Pinscher", + "Dogo Argentino", + "Dogo Guatemalteco", + "Dogo Sardesco", + "Dogue Brasileiro", + "Dogue de Bordeaux", + "Drentse Patrijshond", + "Drever", + "Dunker", + "Dutch Shepherd", + "Dutch Smoushond", + "East Siberian Laika", + "East European Shepherd", + "English Cocker Spaniel", + "English Foxhound", + "English Mastiff", + "English Setter", + "English Shepherd", + "English Springer Spaniel", + "English Toy Terrier", + "Entlebucher Mountain Dog", + "Estonian Hound", + "Estrela Mountain Dog", + "Eurasier", + "Field Spaniel", + "Fila Brasileiro", + "Finnish Hound", + "Finnish Lapphund", + "Finnish Spitz", + "Flat-Coated Retriever", + "French Bulldog", + "French Spaniel", + "Galgo Español", + "Galician Shepherd Dog", + "Garafian Shepherd", + "Gascon Saintongeois", + "Georgian Shepherd", + "German Hound", + "German Longhaired Pointer", + "German Pinscher", + "German Roughhaired Pointer", + "German Shepherd Dog", + "German Shorthaired Pointer", + "German Spaniel", + "German Spitz", + "German Wirehaired Pointer", + "Giant Schnauzer", + "Glen of Imaal Terrier", + "Golden Retriever", + "Gończy Polski", + "Gordon Setter", + "Grand Anglo-Français Blanc et Noir", + "Grand Anglo-Français Blanc et Orange", + "Grand Anglo-Français Tricolore", + "Grand Basset Griffon Vendéen", + "Grand Bleu de Gascogne", + "Grand Griffon Vendéen", + "Great Dane", + "Greater Swiss Mountain Dog", + "Greek Harehound", + "Greek Shepherd", + "Greenland Dog", + "Greyhound", + "Griffon Bleu de Gascogne", + "Griffon Fauve de Bretagne", + "Griffon Nivernais", + "Gull Dong", + "Gull Terrier", + "Hällefors Elkhound", + "Hamiltonstövare", + "Hanover Hound", + "Harrier", + "Havanese", + "Hierran Wolfdog", + "Hokkaido", + "Hovawart", + "Huntaway", + "Hygen Hound", + "Ibizan Hound", + "Icelandic Sheepdog", + "Indian pariah dog", + "Indian Spitz", + "Irish Red and White Setter", + "Irish Setter", + "Irish Terrier", + "Irish Water Spaniel", + "Irish Wolfhound", + "Istrian Coarse-haired Hound", + "Istrian Shorthaired Hound", + "Italian Greyhound", + "Jack Russell Terrier", + "Jagdterrier", + "Japanese Chin", + "Japanese Spitz", + "Japanese Terrier", + "Jindo", + "Jonangi", + "Kai Ken", + "Kaikadi", + "Kangal Shepherd Dog", + "Kanni", + "Karakachan dog", + "Karelian Bear Dog", + "Kars", + "Karst Shepherd", + "Keeshond", + "Kerry Beagle", + "Kerry Blue Terrier", + "King Charles Spaniel", + "King Shepherd", + "Kintamani", + "Kishu", + "Kokoni", + "Kombai", + "Komondor", + "Kooikerhondje", + "Koolie", + "Koyun dog", + "Kromfohrländer", + "Kuchi", + "Kuvasz", + "Labrador Retriever", + "Lagotto Romagnolo", + "Lakeland Terrier", + "Lancashire Heeler", + "Landseer", + "Lapponian Herder", + "Large Münsterländer", + "Leonberger", + "Levriero Sardo", + "Lhasa Apso", + "Lithuanian Hound", + "Löwchen", + "Lupo Italiano", + "Mackenzie River Husky", + "Magyar agár", + "Mahratta Greyhound", + "Maltese", + "Manchester Terrier", + "Maremmano-Abruzzese Sheepdog", + "McNab dog", + "Miniature American Shepherd", + "Miniature Bull Terrier", + "Miniature Fox Terrier", + "Miniature Pinscher", + "Miniature Schnauzer", + "Molossus of Epirus", + "Montenegrin Mountain Hound", + "Mountain Cur", + "Mountain Feist", + "Mucuchies", + "Mudhol Hound", + "Mudi", + "Neapolitan Mastiff", + "New Guinea Singing Dog", + "New Zealand Heading Dog", + "Newfoundland", + "Norfolk Terrier", + "Norrbottenspets", + "Northern Inuit Dog", + "Norwegian Buhund", + "Norwegian Elkhound", + "Norwegian Lundehund", + "Norwich Terrier", + "Nova Scotia Duck Tolling Retriever", + "Old Croatian Sighthound", + "Old Danish Pointer", + "Old English Sheepdog", + "Old English Terrier", + "Olde English Bulldogge", + "Otterhound", + "Pachon Navarro", + "Pampas Deerhound", + "Paisley Terrier", + "Papillon", + "Parson Russell Terrier", + "Pastore della Lessinia e del Lagorai", + "Patagonian Sheepdog", + "Patterdale Terrier", + "Pekingese", + "Pembroke Welsh Corgi", + "Perro Majorero", + "Perro de Pastor Mallorquin", + "Perro de Presa Canario", + "Perro de Presa Mallorquin", + "Peruvian Inca Orchid", + "Petit Basset Griffon Vendéen", + "Petit Bleu de Gascogne", + "Phalène", + "Pharaoh Hound", + "Phu Quoc Ridgeback", + "Picardy Spaniel", + "Plummer Terrier", + "Plott Hound", + "Podenco Canario", + "Podenco Valenciano", + "Pointer", + "Poitevin", + "Polish Greyhound", + "Polish Hound", + "Polish Lowland Sheepdog", + "Polish Tatra Sheepdog", + "Pomeranian", + "Pont-Audemer Spaniel", + "Poodle", + "Porcelaine", + "Portuguese Podengo", + "Portuguese Pointer", + "Portuguese Water Dog", + "Posavac Hound", + "Pražský Krysařík", + "Pshdar Dog", + "Pudelpointer", + "Pug", + "Puli", + "Pumi", + "Pungsan Dog", + "Pyrenean Mastiff", + "Pyrenean Mountain Dog", + "Pyrenean Sheepdog", + "Rafeiro do Alentejo", + "Rajapalayam", + "Rampur Greyhound", + "Rat Terrier", + "Ratonero Bodeguero Andaluz", + "Ratonero Mallorquin", + "Ratonero Murciano de Huerta", + "Ratonero Valenciano", + "Redbone Coonhound", + "Rhodesian Ridgeback", + "Romanian Mioritic Shepherd Dog", + "Romanian Raven Shepherd Dog", + "Rottweiler", + "Rough Collie", + "Russian Spaniel", + "Russian Toy", + "Russo-European Laika", + "Saarloos Wolfdog", + "Sabueso Español", + "Saint Bernard", + "Saint Hubert Jura Hound", + "Saint-Usuge Spaniel", + "Saluki", + "Samoyed", + "Sapsali", + "Sarabi dog", + "Šarplaninac", + "Schapendoes", + "Schillerstövare", + "Schipperke", + "Schweizer Laufhund", + "Schweizerischer Niederlaufhund", + "Scottish Deerhound", + "Scottish Terrier", + "Sealyham Terrier", + "Segugio dell'Appennino", + "Segugio Italiano", + "Segugio Maremmano", + "Seppala Siberian Sleddog", + "Serbian Hound", + "Serbian Tricolour Hound", + "Serrano Bulldog", + "Shar Pei", + "Shetland Sheepdog", + "Shiba Inu", + "Shih Tzu", + "Shikoku", + "Shiloh Shepherd", + "Siberian Husky", + "Silken Windhound", + "Silky Terrier", + "Sinhala Hound", + "Skye Terrier", + "Sloughi", + "Slovakian Wirehaired Pointer", + "Slovenský Cuvac", + "Slovenský Kopov", + "Smalandstövare", + "Small Greek domestic dog", + "Small Münsterländer", + "Smooth Collie", + "Smooth Fox Terrier", + "Soft-Coated Wheaten Terrier", + "South Russian Ovcharka", + "Spanish Mastiff", + "Spanish Water Dog", + "Spinone Italiano", + "Sporting Lucas Terrier", + "Sardinian Shepherd Dog", + "Stabyhoun", + "Staffordshire Bull Terrier", + "Standard Schnauzer", + "Stephens Stock", + "Styrian Coarse-haired Hound", + "Sussex Spaniel", + "Swedish Elkhound", + "Swedish Lapphund", + "Swedish Vallhund", + "Swedish White Elkhound", + "Taigan", + "Taiwan Dog", + "Tamaskan Dog", + "Teddy Roosevelt Terrier", + "Telomian", + "Tenterfield Terrier", + "Terrier Brasileiro", + "Thai Bangkaew Dog", + "Thai Ridgeback", + "Tibetan Mastiff", + "Tibetan Spaniel", + "Tibetan Terrier", + "Tornjak", + "Tosa", + "Toy Fox Terrier", + "Toy Manchester Terrier", + "Transylvanian Hound", + "Treeing Cur", + "Treeing Feist", + "Treeing Tennessee Brindle", + "Treeing Walker Coonhound", + "Trigg Hound", + "Tyrolean Hound", + "Vikhan", + "Villano de Las Encartaciones", + "Villanuco de Las Encartaciones", + "Vizsla", + "Volpino Italiano", + "Weimaraner", + "Welsh Sheepdog", + "Welsh Springer Spaniel", + "Welsh Terrier", + "West Highland White Terrier", + "West Siberian Laika", + "Westphalian Dachsbracke", + "Wetterhoun", + "Whippet", + "White Shepherd", + "White Swiss Shepherd Dog", + "Wire Fox Terrier", + "Wirehaired Pointing Griffon", + "Wirehaired Vizsla", + "Xiasi Dog", + "Xoloitzcuintli", + "Yakutian Laika", + "Yorkshire Terrier"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Fishes.h b/src/modules/animal/data/Fishes.h new file mode 100644 index 00000000..16103200 --- /dev/null +++ b/src/modules/animal/data/Fishes.h @@ -0,0 +1,103 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector fishes = {"Grass carp", + "Peruvian anchoveta", + "Silver carp", + "Common carp", + "Asari", + "Japanese littleneck", + "Filipino Venus", + "Japanese cockle", + "Alaska pollock", + "Nile tilapia", + "Whiteleg shrimp", + "Bighead carp", + "Skipjack tuna", + "Catla", + "Crucian carp", + "Atlantic salmon", + "Atlantic herring", + "Chub mackerel", + "Rohu", + "Yellowfin tuna", + "Japanese anchovy", + "Largehead hairtail", + "Atlantic cod", + "European pilchard", + "Capelin", + "Jumbo flying squid", + "Milkfish", + "Atlantic mackerel", + "Rainbow trout", + "Araucanian herring", + "Wuchang bream", + "Gulf menhaden", + "Indian oil sardine", + "Black carp", + "European anchovy", + "Northern snakehead", + "Pacific cod", + "Pacific saury", + "Pacific herring", + "Bigeye tuna", + "Chilean jack mackerel", + "Yellow croaker", + "Haddock", + "Gazami crab", + "Amur catfish", + "Japanese common catfish", + "European sprat", + "Pink salmon", + "Mrigal carp", + "Channel catfish", + "Blood cockle", + "Blue whiting", + "Hilsa shad", + "Daggertooth pike conger", + "California pilchard", + "Cape horse mackerel", + "Pacific anchoveta", + "Japanese flying squid", + "Pollock", + "Chinese softshell turtle", + "Kawakawa", + "Indian mackerel", + "Asian swamp eel", + "Argentine hake", + "Short mackerel", + "Southern rough shrimp", + "Southern African anchovy", + "Pond loach", + "Iridescent shark", + "Mandarin fish", + "Chinese perch", + "Nile perch", + "Round sardinella", + "Japanese pilchard", + "Bombay-duck", + "Yellowhead catfish", + "Korean bullhead", + "Narrow-barred Spanish mackerel", + "Albacore", + "Madeiran sardinella", + "Bonga shad", + "Silver cyprinid", + "Longtail tuna", + "Atlantic menhaden", + "North Pacific hake", + "Atlantic horse mackerel", + "Japanese jack mackerel", + "Pacific thread herring", + "Bigeye scad", + "Yellowstripe scad", + "Chum salmon", + "Blue swimming crab", + "Pacific sand lance", + "Pacific sandlance", + "Goldstripe sardinella"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Horses.h b/src/modules/animal/data/Horses.h new file mode 100644 index 00000000..0f88f65f --- /dev/null +++ b/src/modules/animal/data/Horses.h @@ -0,0 +1,353 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector horses = {"American Albino", + "Abaco Barb", + "Abtenauer", + "Abyssinian", + "Aegidienberger", + "Akhal-Teke", + "Albanian Horse", + "Altai Horse", + "Altèr Real", + "American Cream Draft", + "American Indian Horse", + "American Paint Horse", + "American Quarter Horse", + "American Saddlebred", + "American Warmblood", + "Andalusian Horse", + "Andravida Horse", + "Anglo-Arabian", + "Anglo-Arabo-Sardo", + "Anglo-Kabarda", + "Appaloosa", + "AraAppaloosa", + "Arabian Horse", + "Ardennes Horse", + "Arenberg-Nordkirchen", + "Argentine Criollo", + "Asian wild Horse", + "Assateague Horse", + "Asturcón", + "Augeron", + "Australian Brumby", + "Australian Draught Horse", + "Australian Stock Horse", + "Austrian Warmblood", + "Auvergne Horse", + "Auxois", + "Azerbaijan Horse", + "Azteca Horse", + "Baise Horse", + "Bale", + "Balearic Horse", + "Balikun Horse", + "Baluchi Horse", + "Banker Horse", + "Barb Horse", + "Bardigiano", + "Bashkir Curly", + "Basque Mountain Horse", + "Bavarian Warmblood", + "Belgian Half-blood", + "Belgian Horse", + "Belgian Warmblood ", + "Bhutia Horse", + "Black Forest Horse", + "Blazer Horse", + "Boerperd", + "Borana", + "Boulonnais Horse", + "Brabant", + "Brandenburger", + "Brazilian Sport Horse", + "Breton Horse", + "Brumby", + "Budyonny Horse", + "Burguete Horse", + "Burmese Horse", + "Byelorussian Harness Horse", + "Calabrese Horse", + "Camargue Horse", + "Camarillo White Horse", + "Campeiro", + "Campolina", + "Canadian Horse", + "Canadian Pacer", + "Carolina Marsh Tacky", + "Carthusian Horse", + "Caspian Horse", + "Castilian Horse", + "Castillonnais", + "Catria Horse", + "Cavallo Romano della Maremma Laziale", + "Cerbat Mustang", + "Chickasaw Horse", + "Chilean Corralero", + "Choctaw Horse", + "Cleveland Bay", + "Clydesdale Horse", + "Cob", + "Coldblood Trotter", + "Colonial Spanish Horse", + "Colorado Ranger", + "Comtois Horse", + "Corsican Horse", + "Costa Rican Saddle Horse", + "Cretan Horse", + "Criollo Horse", + "Croatian Coldblood", + "Cuban Criollo", + "Cumberland Island Horse", + "Curly Horse", + "Czech Warmblood", + "Daliboz", + "Danish Warmblood", + "Danube Delta Horse", + "Dole Gudbrandsdal", + "Don", + "Dongola Horse", + "Draft Trotter", + "Dutch Harness Horse", + "Dutch Heavy Draft", + "Dutch Warmblood", + "Dzungarian Horse", + "East Bulgarian", + "East Friesian Horse", + "Estonian Draft", + "Estonian Horse", + "Falabella", + "Faroese", + "Finnhorse", + "Fjord Horse", + "Fleuve", + "Florida Cracker Horse", + "Foutanké", + "Frederiksborg Horse", + "Freiberger", + "French Trotter", + "Friesian Cross", + "Friesian Horse", + "Friesian Sporthorse", + "Furioso-North Star", + "Galiceño", + "Galician Pony", + "Gelderland Horse", + "Georgian Grande Horse", + "German Warmblood", + "Giara Horse", + "Gidran", + "Groningen Horse", + "Gypsy Horse", + "Hackney Horse", + "Haflinger", + "Hanoverian Horse", + "Heck Horse", + "Heihe Horse", + "Henson Horse", + "Hequ Horse", + "Hirzai", + "Hispano-Bretón", + "Holsteiner Horse", + "Horro", + "Hungarian Warmblood", + "Icelandic Horse", + "Iomud", + "Irish Draught", + "Irish Sport Horse sometimes called Irish Hunter", + "Italian Heavy Draft", + "Italian Trotter", + "Jaca Navarra", + "Jeju Horse", + "Jutland Horse", + "Kabarda Horse", + "Kafa", + "Kaimanawa Horses", + "Kalmyk Horse", + "Karabair", + "Karabakh Horse", + "Karachai Horse", + "Karossier", + "Kathiawari", + "Kazakh Horse", + "Kentucky Mountain Saddle Horse", + "Kiger Mustang", + "Kinsky Horse", + "Kisber Felver", + "Kiso Horse", + "Kladruber", + "Knabstrupper", + "Konik", + "Kundudo", + "Kustanair", + "Kyrgyz Horse", + "Latvian Horse", + "Lipizzan", + "Lithuanian Heavy Draught", + "Lokai", + "Losino Horse", + "Lusitano", + "Lyngshest", + "M'Bayar", + "M'Par", + "Mallorquín", + "Malopolski", + "Mangalarga", + "Mangalarga Marchador", + "Maremmano", + "Marismeño Horse", + "Marsh Tacky", + "Marwari Horse", + "Mecklenburger", + "Međimurje Horse", + "Menorquín", + "Mérens Horse", + "Messara Horse", + "Metis Trotter", + "Mezőhegyesi Sport Horse", + "Miniature Horse", + "Misaki Horse", + "Missouri Fox Trotter", + "Monchina", + "Mongolian Horse", + "Mongolian Wild Horse", + "Monterufolino", + "Morab", + "Morgan Horse", + "Mountain Pleasure Horse", + "Moyle Horse", + "Murakoz Horse", + "Murgese", + "Mustang Horse", + "Namib Desert Horse", + "Nangchen Horse", + "National Show Horse", + "Nez Perce Horse", + "Nivernais Horse", + "Nokota Horse", + "Noma", + "Nonius Horse", + "Nooitgedachter", + "Nordlandshest", + "Noriker Horse", + "Norman Cob", + "North American Single-Footer Horse", + "North Swedish Horse", + "Norwegian Coldblood Trotter", + "Norwegian Fjord", + "Novokirghiz", + "Oberlander Horse", + "Ogaden", + "Oldenburg Horse", + "Orlov trotter", + "Ostfriesen", + "Paint", + "Pampa Horse", + "Paso Fino", + "Pentro Horse", + "Percheron", + "Persano Horse", + "Peruvian Paso", + "Pintabian", + "Pleven Horse", + "Poitevin Horse", + "Posavac Horse", + "Pottok", + "Pryor Mountain Mustang", + "Przewalski's Horse", + "Pura Raza Española", + "Purosangue Orientale", + "Qatgani", + "Quarab", + "Quarter Horse", + "Racking Horse", + "Retuerta Horse", + "Rhenish German Coldblood", + "Rhinelander Horse", + "Riwoche Horse", + "Rocky Mountain Horse", + "Romanian Sporthorse", + "Rottaler", + "Russian Don", + "Russian Heavy Draft", + "Russian Trotter", + "Saddlebred", + "Salerno Horse", + "Samolaco Horse", + "San Fratello Horse", + "Sarcidano Horse", + "Sardinian Anglo-Arab", + "Schleswig Coldblood", + "Schwarzwälder Kaltblut", + "Selale", + "Sella Italiano", + "Selle Français", + "Shagya Arabian", + "Shan Horse", + "Shire Horse", + "Siciliano Indigeno", + "Silesian Horse", + "Sokolsky Horse", + "Sorraia", + "South German Coldblood", + "Soviet Heavy Draft", + "Spanish Anglo-Arab", + "Spanish Barb", + "Spanish Jennet Horse", + "Spanish Mustang", + "Spanish Tarpan", + "Spanish-Norman Horse", + "Spiti Horse", + "Spotted Saddle Horse", + "Standardbred Horse", + "Suffolk Punch", + "Swedish Ardennes", + "Swedish coldblood trotter", + "Swedish Warmblood", + "Swiss Warmblood", + "Taishū Horse", + "Takhi", + "Tawleed", + "Tchernomor", + "Tennessee Walking Horse", + "Tersk Horse", + "Thoroughbred", + "Tiger Horse", + "Tinker Horse", + "Tolfetano", + "Tori Horse", + "Trait Du Nord", + "Trakehner", + "Tsushima", + "Tuigpaard", + "Ukrainian Riding Horse", + "Unmol Horse", + "Uzunyayla", + "Ventasso Horse", + "Virginia Highlander", + "Vlaamperd", + "Vladimir Heavy Draft", + "Vyatka", + "Waler", + "Waler Horse", + "Walkaloosa", + "Warlander", + "Warmblood", + "Welsh Cob", + "Westphalian Horse", + "Wielkopolski", + "Württemberger", + "Xilingol Horse", + "Yakutian Horse", + "Yili Horse", + "Yonaguni Horse", + "Zaniskari", + "Žemaitukas", + "Zhemaichu", + "Zweibrücker"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Insects.h b/src/modules/animal/data/Insects.h new file mode 100644 index 00000000..84f33984 --- /dev/null +++ b/src/modules/animal/data/Insects.h @@ -0,0 +1,137 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector insects = {"Acacia-ants", + "Acorn-plum gall", + "Aerial yellowjacket", + "Africanized honey bee", + "Allegheny mound ant", + "Almond stone wasp", + "Ant", + "Arboreal ant", + "Argentine ant", + "Asian paper wasp", + "Baldfaced hornet", + "Bee", + "Bigheaded ant", + "Black and yellow mud dauber", + "Black carpenter ant", + "Black imported fire ant", + "Blue horntail woodwasp", + "Blue orchard bee", + "Braconid wasp", + "Bumble bee", + "Carpenter ant", + "Carpenter wasp", + "Chalcid wasp", + "Cicada killer", + "Citrus blackfly parasitoid", + "Common paper wasp", + "Crazy ant", + "Cuckoo wasp", + "Cynipid gall wasp", + "Eastern Carpenter bee", + "Eastern yellowjacket", + "Elm sawfly", + "Encyrtid wasp", + "Erythrina gall wasp", + "Eulophid wasp", + "European hornet", + "European imported fire ant", + "False honey ant", + "Fire ant", + "Forest bachac", + "Forest yellowjacket", + "German yellowjacket", + "Ghost ant", + "Giant ichneumon wasp", + "Giant resin bee", + "Giant wood wasp", + "Golden northern bumble bee", + "Golden paper wasp", + "Gouty oak gall", + "Grass Carrying Wasp", + "Great black wasp", + "Great golden digger wasp", + "Hackberry nipple gall parasitoid", + "Honey bee", + "Horned oak gall", + "Horse guard wasp", + "Hunting wasp", + "Ichneumonid wasp", + "Keyhole wasp", + "Knopper gall", + "Large garden bumble bee", + "Large oak-apple gall", + "Leafcutting bee", + "Little fire ant", + "Little yellow ant", + "Long-horned bees", + "Long-legged ant", + "Macao paper wasp", + "Mallow bee", + "Marble gall", + "Mossyrose gall wasp", + "Mud-daubers", + "Multiflora rose seed chalcid", + "Oak apple gall wasp", + "Oak rough bulletgall wasp", + "Oak saucer gall", + "Oak shoot sawfly", + "Odorous house ant", + "Orange-tailed bumble bee", + "Orangetailed potter wasp", + "Oriental chestnut gall wasp", + "Paper wasp", + "Pavement ant", + "Pigeon tremex", + "Pip gall wasp", + "Prairie yellowjacket", + "Pteromalid wasp", + "Pyramid ant", + "Raspberry Horntail", + "Red ant", + "Red carpenter ant", + "Red harvester ant", + "Red imported fire ant", + "Red wasp", + "Red wood ant", + "Red-tailed wasp", + "Reddish carpenter ant", + "Rough harvester ant", + "Sawfly parasitic wasp", + "Scale parasitoid", + "Silky ant", + "Sirex woodwasp", + "Siricid woodwasp", + "Smaller yellow ant", + "Southeastern blueberry bee", + "Southern fire ant", + "Southern yellowjacket", + "Sphecid wasp", + "Stony gall", + "Sweat bee", + "Texas leafcutting ant", + "Tiphiid wasp", + "Torymid wasp", + "Tramp ant", + "Valentine ant", + "Velvet ant", + "Vespid wasp", + "Weevil parasitoid", + "Western harvester ant", + "Western paper wasp", + "Western thatching ant", + "Western yellowjacket", + "White-horned horntail", + "Willow shoot sawfly", + "Woodwasp", + "Wool sower gall maker", + "Yellow and black potter wasp", + "Yellow Crazy Ant", + "Yellow-horned horntail"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Lions.h b/src/modules/animal/data/Lions.h new file mode 100644 index 00000000..273645d8 --- /dev/null +++ b/src/modules/animal/data/Lions.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector lions = {"Asiatic Lion", "Barbary Lion", "West African Lion", "Northeast Congo Lion", + "Masai Lion", "Transvaal lion", "Cape lion"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Rabbits.h b/src/modules/animal/data/Rabbits.h new file mode 100644 index 00000000..47681487 --- /dev/null +++ b/src/modules/animal/data/Rabbits.h @@ -0,0 +1,57 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector rabbits = {"American", + "American Chinchilla", + "American Fuzzy Lop", + "American Sable", + "Argente Brun", + "Belgian Hare", + "Beveren", + "Blanc de Hotot", + "Britannia Petite", + "Californian", + "Champagne D’Argent", + "Checkered Giant", + "Cinnamon", + "Crème D’Argent", + "Dutch", + "Dwarf Hotot", + "English Angora", + "English Lop", + "English Spot", + "Flemish Giant", + "Florida White", + "French Angora", + "French Lop", + "Giant Angora", + "Giant Chinchilla", + "Harlequin", + "Havana", + "Himalayan", + "Holland Lop", + "Jersey Wooly", + "Lilac", + "Lionhead", + "Mini Lop", + "Mini Rex", + "Mini Satin", + "Netherland Dwarf", + "New Zealand", + "Palomino", + "Polish", + "Rex", + "Rhinelander", + "Satin", + "Satin Angora", + "Silver", + "Silver Fox", + "Silver Marten", + "Standard Chinchilla", + "Tan", + "Thrianta"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Rodents.h b/src/modules/animal/data/Rodents.h new file mode 100644 index 00000000..a230a114 --- /dev/null +++ b/src/modules/animal/data/Rodents.h @@ -0,0 +1,193 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector rodents = {"Abrocoma", + "Abrocoma schistacea", + "Aconaemys", + "Aconaemys porteri", + "African brush-tailed porcupine", + "Andean mountain cavy", + "Argentine tuco-tuco", + "Ashy chinchilla rat", + "Asiatic brush-tailed porcupine", + "Atherurus", + "Azara's agouti", + "Azara's tuco-tuco", + "Bahia porcupine", + "Bathyergus", + "Bathyergus janetta", + "Bathyergus suillus", + "Bennett's chinchilla rat", + "Bicolored-spined porcupine", + "Black agouti", + "Black dwarf porcupine", + "Black-rumped agouti", + "Black-tailed hairy dwarf porcupine", + "Bolivian chinchilla rat", + "Bolivian tuco-tuco", + "Bonetto's tuco-tuco", + "Brandt's yellow-toothed cavy", + "Brazilian guinea pig", + "Brazilian porcupine", + "Brazilian tuco-tuco", + "Bridge's degu", + "Brown hairy dwarf porcupine", + "Budin's chinchilla rat, A. budini", + "Cape porcupine", + "Catamarca tuco-tuco", + "Cavia", + "Central American agouti", + "Chacoan tuco-tuco", + "Chilean rock rat", + "Chinchilla", + "Coendou", + "Coiban agouti", + "Colburn's tuco-tuco", + "Collared tuco-tuco", + "Common degu", + "Common yellow-toothed cavy", + "Conover's tuco-tuco", + "Coruro", + "Crested agouti", + "Crested porcupine", + "Cryptomys", + "Cryptomys bocagei", + "Cryptomys damarensis", + "Cryptomys foxi", + "Cryptomys hottentotus", + "Cryptomys mechowi", + "Cryptomys ochraceocinereus", + "Cryptomys zechi", + "Ctenomys", + "Cuniculus", + "Cuscomys", + "Cuscomys ashanika", + "Dactylomys", + "Dactylomys boliviensis", + "Dactylomys dactylinus", + "Dactylomys peruanus", + "Dasyprocta", + "Domestic guinea pig", + "Emily's tuco-tuco", + "Erethizon", + "Famatina chinchilla rat", + "Frosted hairy dwarf porcupine", + "Fukomys", + "Fukomys amatus", + "Fukomys anselli", + "Fukomys bocagei", + "Fukomys damarensis", + "Fukomys darlingi", + "Fukomys foxi", + "Fukomys ilariae", + "Fukomys kafuensis", + "Fukomys mechowii", + "Fukomys micklemi", + "Fukomys occlusus", + "Fukomys ochraceocinereus", + "Fukomys whytei", + "Fukomys zechi", + "Furtive tuco-tuco", + "Galea", + "Georychus", + "Georychus capensis", + "Golden viscacha-rat", + "Goya tuco-tuco", + "Greater guinea pig", + "Green acouchi", + "Haig's tuco-tuco", + "Heliophobius", + "Heliophobius argenteocinereus", + "Heterocephalus", + "Heterocephalus glaber", + "Highland tuco-tuco", + "Hystrix", + "Indian porcupine", + "Isla Mocha degu", + "Kalinowski agouti", + "Kannabateomys", + "Kannabateomys amblyonyx", + "Lagidium", + "Lagostomus", + "Lewis' tuco-tuco", + "Long-tailed chinchilla", + "Long-tailed porcupine", + "Los Chalchaleros' viscacha-rat", + "Lowland paca", + "Magellanic tuco-tuco", + "Malayan porcupine", + "Maule tuco-tuco", + "Mendoza tuco-tuco", + "Mexican agouti", + "Mexican hairy dwarf porcupine", + "Microcavia", + "Montane guinea pig", + "Moon-toothed degu", + "Mottled tuco-tuco", + "Mountain degu", + "Mountain paca", + "Mountain viscacha-rat", + "Myoprocta", + "Natterer's tuco-tuco", + "North American porcupine", + "Northern viscacha", + "Octodon", + "Octodontomys", + "Octomys", + "Olallamys", + "Olallamys albicauda", + "Olallamys edax", + "Orinoco agouti", + "Paraguaian hairy dwarf porcupine", + "Pearson's tuco-tuco", + "Peruvian tuco-tuco", + "Philippine porcupine", + "Pipanacoctomys", + "Plains viscacha", + "Plains viscacha-rat", + "Porteous' tuco-tuco", + "Punta de Vacas chinchilla rat", + "Red acouchi", + "Red-rumped agouti", + "Reddish tuco-tuco", + "Rio Negro tuco-tuco", + "Robust tuco-tuco", + "Roosmalen's dwarf porcupine", + "Rothschild's porcupine", + "Ruatan Island agouti", + "Sage's rock rat", + "Salinoctomys", + "Salta tuco-tuco", + "San Luis tuco-tuco", + "Santa Catarina's guinea pig", + "Shiny guinea pig", + "Shipton's mountain cavy", + "Short-tailed chinchilla", + "Silky tuco-tuco", + "Social tuco-tuco", + "Southern mountain cavy", + "Southern tuco-tuco", + "Southern viscacha", + "Spalacopus", + "Spix's yellow-toothed cavy", + "Steinbach's tuco-tuco", + "Streaked dwarf porcupine", + "Strong tuco-tuco", + "Stump-tailed porcupine", + "Sumatran porcupine", + "Sunda porcupine", + "Talas tuco-tuco", + "Tawny tuco-tuco", + "Thick-spined porcupine", + "Tiny tuco-tuco", + "Trichys", + "Tucuman tuco-tuco", + "Tympanoctomys", + "Uspallata chinchilla rat", + "White-toothed tuco-tuco", + "Wolffsohn's viscacha"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Snakes.h b/src/modules/animal/data/Snakes.h new file mode 100644 index 00000000..549c1514 --- /dev/null +++ b/src/modules/animal/data/Snakes.h @@ -0,0 +1,584 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector snakes = {"Viper Adder", + "Common adder", + "Death Adder", + "Desert death adder", + "Horned adder", + "Long-nosed adder", + "Many-horned adder", + "Mountain adder", + "Mud adder", + "Namaqua dwarf adder", + "Nightingale adder", + "Peringuey's adder", + "Puff adder", + "African puff adder", + "Rhombic night adder", + "Sand adder", + "Dwarf sand adder", + "Namib dwarf sand adder", + "Water adder", + "Aesculapian snake", + "Anaconda", + "Bolivian anaconda", + "De Schauensee's anaconda", + "Green anaconda", + "Yellow anaconda", + "Arafura file snake", + "Asp", + "European asp", + "Egyptian asp", + "African beaked snake", + "Ball Python", + "Bird snake", + "Black-headed snake", + "Mexican black kingsnake", + "Black rat snake", + "Black snake", + "Red-bellied black snake", + "Blind snake", + "Brahminy blind snake", + "Texas blind snake", + "Western blind snake", + "Boa", + "Abaco Island boa", + "Amazon tree boa", + "Boa constrictor", + "Cuban boa", + "Dumeril's boa", + "Dwarf boa", + "Emerald tree boa", + "Hogg Island boa", + "Jamaican boa", + "Madagascar ground boa", + "Madagascar tree boa", + "Puerto Rican boa", + "Rainbow boa", + "Red-tailed boa", + "Rosy boa", + "Rubber boa", + "Sand boa", + "Tree boa", + "Boiga", + "Boomslang", + "Brown snake", + "Eastern brown snake", + "Bull snake", + "Bushmaster", + "Dwarf beaked snake", + "Rufous beaked snake", + "Canebrake", + "Cantil", + "Cascabel", + "Cat-eyed snake", + "Banded cat-eyed snake", + "Green cat-eyed snake", + "Cat snake", + "Andaman cat snake", + "Beddome's cat snake", + "Dog-toothed cat snake", + "Forsten's cat snake", + "Gold-ringed cat snake", + "Gray cat snake", + "Many-spotted cat snake", + "Tawny cat snake", + "Chicken snake", + "Coachwhip snake", + "Cobra", + "Andaman cobra", + "Arabian cobra", + "Asian cobra", + "Banded water cobra", + "Black-necked cobra", + "Black-necked spitting cobra", + "Black tree cobra", + "Burrowing cobra", + "Cape cobra", + "Caspian cobra", + "Congo water cobra", + "Common cobra", + "Eastern water cobra", + "Egyptian cobra", + "Equatorial spitting cobra", + "False cobra", + "False water cobra", + "Forest cobra", + "Gold tree cobra", + "Indian cobra", + "Indochinese spitting cobra", + "Javan spitting cobra", + "King cobra", + "Mandalay cobra", + "Mozambique spitting cobra", + "North Philippine cobra", + "Nubian spitting cobra", + "Philippine cobra", + "Red spitting cobra", + "Rinkhals cobra", + "Shield-nosed cobra", + "Sinai desert cobra", + "Southern Indonesian spitting cobra", + "Southern Philippine cobra", + "Southwestern black spitting cobra", + "Snouted cobra", + "Spectacled cobra", + "Spitting cobra", + "Storm water cobra", + "Thai cobra", + "Taiwan cobra", + "Zebra spitting cobra", + "Collett's snake", + "Congo snake", + "Copperhead", + "American copperhead", + "Australian copperhead", + "Coral snake", + "Arizona coral snake", + "Beddome's coral snake", + "Brazilian coral snake", + "Cape coral snake", + "Harlequin coral snake", + "High Woods coral snake", + "Malayan long-glanded coral snake", + "Texas Coral Snake", + "Western coral snake", + "Corn snake", + "South eastern corn snake", + "Cottonmouth", + "Crowned snake", + "Cuban wood snake", + "Eastern hognose snake", + "Egg-eater", + "Eastern coral snake", + "Fer-de-lance", + "Fierce snake", + "Fishing snake", + "Flying snake", + "Golden tree snake", + "Indian flying snake", + "Moluccan flying snake", + "Ornate flying snake", + "Paradise flying snake", + "Twin-Barred tree snake", + "Banded Flying Snake", + "Fox snake, three species of Pantherophis", + "Forest flame snake", + "Garter snake", + "Checkered garter snake", + "Common garter snake", + "San Francisco garter snake", + "Texas garter snake", + "Cape gopher snake", + "Grass snake", + "Green snake", + "Rough green snake", + "Smooth green snake", + "Ground snake", + "Common ground snake", + "Three-lined ground snake", + "Western ground snake", + "Habu", + "Hognose snake", + "Blonde hognose snake", + "Dusty hognose snake", + "Jan's hognose snake", + "Giant Malagasy hognose snake", + "Mexican hognose snake", + "South American hognose snake", + "Hundred pacer", + "Ikaheka snake", + "Indigo snake", + "Jamaican Tree Snake", + "Keelback", + "Asian keelback", + "Assam keelback", + "Black-striped keelback", + "Buff striped keelback", + "Burmese keelback", + "Checkered keelback", + "Common keelback", + "Hill keelback", + "Himalayan keelback", + "Khasi Hills keelback", + "Modest keelback", + "Nicobar Island keelback", + "Nilgiri keelback", + "Orange-collared keelback", + "Red-necked keelback", + "Sikkim keelback", + "Speckle-bellied keelback", + "White-lipped keelback", + "Wynaad keelback", + "Yunnan keelback", + "King brown", + "King snake", + "California kingsnake", + "Desert kingsnake", + "Grey-banded kingsnake", + "North eastern king snake", + "Prairie kingsnake", + "Scarlet kingsnake", + "Speckled kingsnake", + "Krait", + "Banded krait", + "Blue krait", + "Black krait", + "Burmese krait", + "Ceylon krait", + "Indian krait", + "Lesser black krait", + "Malayan krait", + "Many-banded krait", + "Northeastern hill krait", + "Red-headed krait", + "Sind krait", + "Large shield snake", + "Lancehead", + "Common lancehead", + "Lora", + "Grey Lora", + "Lyre snake", + "Baja California lyresnake", + "Central American lyre snake", + "Texas lyre snake", + "Eastern lyre snake", + "Machete savane", + "Mamba", + "Black mamba", + "Green mamba", + "Eastern green mamba", + "Western green mamba", + "Mamushi", + "Mangrove snake", + "Milk snake", + "Moccasin snake", + "Montpellier snake", + "Mud snake", + "Eastern mud snake", + "Western mud snake", + "Mussurana", + "Night snake", + "Cat-eyed night snake", + "Texas night snake", + "Nichell snake", + "Narrowhead Garter Snake", + "Nose-horned viper", + "Rhinoceros viper", + "Vipera ammodytes", + "Parrot snake", + "Mexican parrot snake", + "Patchnose snake", + "Perrotet's shieldtail snake", + "Pine snake", + "Pipe snake", + "Asian pipe snake", + "Dwarf pipe snake", + "Red-tailed pipe snake", + "Python", + "African rock python", + "Amethystine python", + "Angolan python", + "Australian scrub python", + "Ball python", + "Bismarck ringed python", + "Black headed python", + "Blood python", + "Boelen python", + "Borneo short-tailed python", + "Bredl's python", + "Brown water python", + "Burmese python", + "Calabar python", + "Western carpet python", + "Centralian carpet python", + "Coastal carpet python", + "Inland carpet python", + "Jungle carpet python", + "New Guinea carpet python", + "Northwestern carpet python", + "Southwestern carpet python", + "Children's python", + "Dauan Island water python", + "Desert woma python", + "Diamond python", + "Flinders python", + "Green tree python", + "Halmahera python", + "Indian python", + "Indonesian water python", + "Macklot's python", + "Mollucan python", + "Oenpelli python", + "Olive python", + "Papuan python", + "Pygmy python", + "Red blood python", + "Reticulated python", + "Kayaudi dwarf reticulated python", + "Selayer reticulated python", + "Rough-scaled python", + "Royal python", + "Savu python", + "Spotted python", + "Stimson's python", + "Sumatran short-tailed python", + "Tanimbar python", + "Timor python", + "Wetar Island python", + "White-lipped python", + "Brown white-lipped python", + "Northern white-lipped python", + "Southern white-lipped python", + "Woma python", + "Western woma python", + "Queen snake", + "Racer", + "Bimini racer", + "Buttermilk racer", + "Eastern racer", + "Eastern yellowbelly sad racer", + "Mexican racer", + "Southern black racer", + "Tan racer", + "West Indian racer", + "Raddysnake", + "Southwestern blackhead snake", + "Rat snake", + "Baird's rat snake", + "Beauty rat snake", + "Great Plains rat snake", + "Green rat snake", + "Japanese forest rat snake", + "Japanese rat snake", + "King rat snake", + "Mandarin rat snake", + "Persian rat snake", + "Red-backed rat snake", + "Twin-spotted rat snake", + "Yellow-striped rat snake", + "Manchurian Black Water Snake", + "Rattlesnake", + "Arizona black rattlesnake", + "Aruba rattlesnake", + "Chihuahuan ridge-nosed rattlesnake", + "Coronado Island rattlesnake", + "Durango rock rattlesnake", + "Dusky pigmy rattlesnake", + "Eastern diamondback rattlesnake", + "Grand Canyon rattlesnake", + "Great Basin rattlesnake", + "Hopi rattlesnake", + "Lance-headed rattlesnake", + "Long-tailed rattlesnake", + "Massasauga rattlesnake", + "Mexican green rattlesnake", + "Mexican west coast rattlesnake", + "Midget faded rattlesnake", + "Mojave rattlesnake", + "Northern black-tailed rattlesnake", + "Oaxacan small-headed rattlesnake", + "Rattler", + "Red diamond rattlesnake", + "Southern Pacific rattlesnake", + "Southwestern speckled rattlesnake", + "Tancitaran dusky rattlesnake", + "Tiger rattlesnake", + "Timber rattlesnake", + "Tropical rattlesnake", + "Twin-spotted rattlesnake", + "Uracoan rattlesnake", + "Western diamondback rattlesnake", + "Ribbon snake", + "Rinkhals", + "River jack", + "Sea snake", + "Annulated sea snake", + "Beaked sea snake", + "Dubois's sea snake", + "Hardwicke's sea snake", + "Hook Nosed Sea Snake", + "Olive sea snake", + "Pelagic sea snake", + "Stoke's sea snake", + "Yellow-banded sea snake", + "Yellow-bellied sea snake", + "Yellow-lipped sea snake", + "Shield-tailed snake", + "Sidewinder", + "Colorado desert sidewinder", + "Mojave desert sidewinder", + "Sonoran sidewinder", + "Small-eyed snake", + "Smooth snake", + "Brazilian smooth snake", + "European smooth snake", + "Stiletto snake", + "Striped snake", + "Japanese striped snake", + "Sunbeam snake", + "Taipan", + "Central ranges taipan", + "Coastal taipan", + "Inland taipan", + "Paupan taipan", + "Tentacled snake", + "Tic polonga", + "Tiger snake", + "Chappell Island tiger snake", + "Common tiger snake", + "Down's tiger snake", + "Eastern tiger snake", + "King Island tiger snake", + "Krefft's tiger snake", + "Peninsula tiger snake", + "Tasmanian tiger snake", + "Western tiger snake", + "Tigre snake", + "Tree snake", + "Blanding's tree snake", + "Blunt-headed tree snake", + "Brown tree snake", + "Long-nosed tree snake", + "Many-banded tree snake", + "Northern tree snake", + "Trinket snake", + "Black-banded trinket snake", + "Twig snake", + "African twig snake", + "Twin Headed King Snake", + "Titanboa", + "Urutu", + "Vine snake", + "Asian Vine Snake, Whip Snake", + "American Vine Snake", + "Mexican vine snake", + "Viper", + "Asp viper", + "Bamboo viper", + "Bluntnose viper", + "Brazilian mud Viper", + "Burrowing viper", + "Bush viper", + "Great Lakes bush viper", + "Hairy bush viper", + "Nitsche's bush viper", + "Rough-scaled bush viper", + "Spiny bush viper", + "Carpet viper", + "Crossed viper", + "Cyclades blunt-nosed viper", + "Eyelash viper", + "False horned viper", + "Fea's viper", + "Fifty pacer", + "Gaboon viper", + "Hognosed viper", + "Horned desert viper", + "Horned viper", + "Jumping viper", + "Kaznakov's viper", + "Leaf-nosed viper", + "Leaf viper", + "Levant viper", + "Long-nosed viper", + "McMahon's viper", + "Mole viper", + "Palestine viper", + "Pallas' viper", + "Palm viper", + "Amazonian palm viper", + "Black-speckled palm-pitviper", + "Eyelash palm-pitviper", + "Green palm viper", + "Mexican palm-pitviper", + "Guatemalan palm viper", + "Honduran palm viper", + "Siamese palm viper", + "Side-striped palm-pitviper", + "Yellow-lined palm viper", + "Pit viper", + "Banded pitviper", + "Bamboo pitviper", + "Barbour's pit viper", + "Black-tailed horned pit viper", + "Bornean pitviper", + "Brongersma's pitviper", + "Brown spotted pitviper[4]", + "Cantor's pitviper", + "Elegant pitviper", + "Eyelash pit viper", + "Fan-Si-Pan horned pitviper", + "Flat-nosed pitviper", + "Godman's pit viper", + "Green tree pit viper", + "Habu pit viper", + "Hagen's pitviper", + "Horseshoe pitviper", + "Jerdon's pitviper", + "Kanburian pit viper", + "Kaulback's lance-headed pitviper", + "Kham Plateau pitviper", + "Large-eyed pitviper", + "Malabar rock pitviper", + "Malayan pit viper", + "Mangrove pit viper", + "Mangshan pitviper", + "Motuo bamboo pitviper", + "Nicobar bamboo pitviper", + "Philippine pitviper", + "Pointed-scaled pit viper[5]", + "Red-tailed bamboo pitviper", + "Schultze's pitviper", + "Stejneger's bamboo pitviper", + "Sri Lankan pit viper", + "Temple pit viper", + "Tibetan bamboo pitviper", + "Tiger pit viper", + "Undulated pit viper", + "Wagler's pit viper", + "Wirot's pit viper", + "Portuguese viper", + "Saw-scaled viper", + "Schlegel's viper", + "Sedge viper", + "Sharp-nosed viper", + "Snorkel viper", + "Temple viper", + "Tree viper", + "Chinese tree viper", + "Guatemalan tree viper", + "Hutton's tree viper", + "Indian tree viper", + "Large-scaled tree viper", + "Malcolm's tree viper", + "Nitsche's tree viper", + "Pope's tree viper", + "Rough-scaled tree viper", + "Rungwe tree viper", + "Sumatran tree viper", + "White-lipped tree viper", + "Ursini's viper", + "Western hog-nosed viper", + "Wart snake", + "Water moccasin", + "Water snake", + "Bocourt's water snake", + "Northern water snake", + "Whip snake", + "Long-nosed whip snake", + "Wolf snake", + "African wolf snake", + "Barred wolf snake", + "Worm snake", + "Common worm snake", + "Longnosed worm snake", + "Wutu", + "Yarara", + "Zebra snake"}; +} \ No newline at end of file diff --git a/src/modules/animal/data/Types.h b/src/modules/animal/data/Types.h new file mode 100644 index 00000000..831e4e11 --- /dev/null +++ b/src/modules/animal/data/Types.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector types = {"dog", "cat", "snake", "bear", "lion", "cetacean", "insect", + "crocodilia", "cow", "bird", "fish", "rabbit", "horse"}; +} \ No newline at end of file From 99114de41a8702de0ded60dd09f1faf71191a27c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Thu, 5 Oct 2023 21:51:21 +0100 Subject: [PATCH 04/28] add fmt lib (#185) * add fmt lib * add windows macro for mkgmtime * fix windows build * fix windows build * fix time point casting --- .gitmodules | 3 + CMakeLists.txt | 9 ++- README.md | 5 +- externals/fmt | 1 + include/faker-cxx/Animal.h | 12 +-- src/modules/book/Book.cpp | 5 +- src/modules/color/Color.cpp | 6 +- src/modules/commerce/Commerce.cpp | 5 +- src/modules/company/Company.cpp | 15 ++-- src/modules/date/Date.cpp | 22 ++++-- src/modules/date/DateTest.cpp | 1 + src/modules/finance/Finance.cpp | 5 +- src/modules/internet/Internet.cpp | 26 +++---- src/modules/location/Location.cpp | 76 ++++++++----------- src/modules/location/LocationTest.cpp | 22 +++--- .../location/data/france/FranceCities.h | 4 +- .../data/france/FranceStreetPrefixes.h | 2 +- src/modules/lorem/Lorem.cpp | 5 +- src/modules/person/Person.cpp | 6 +- 19 files changed, 119 insertions(+), 111 deletions(-) create mode 160000 externals/fmt diff --git a/.gitmodules b/.gitmodules index a78013ab..0222bacd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "externals/googletest"] path = externals/googletest url = https://github.com/google/googletest.git +[submodule "externals/fmt"] + path = externals/fmt + url = https://github.com/fmtlib/fmt.git diff --git a/CMakeLists.txt b/CMakeLists.txt index cbe5bc3d..476ed6ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,8 +77,15 @@ target_include_directories(${LIBRARY_NAME} "${CMAKE_CURRENT_LIST_DIR}/include" PRIVATE "${CMAKE_CURRENT_LIST_DIR}/include" + ${FMT_INCLUDE_DIR} ) +add_subdirectory(externals/fmt) + +set(FMT_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/externals/fmt/include") + +target_link_libraries(${LIBRARY_NAME} PRIVATE fmt) + if (BUILD_FAKER_TESTS) add_subdirectory(externals/googletest) @@ -97,7 +104,7 @@ if (BUILD_FAKER_TESTS) target_link_libraries(${LIBRARY_NAME}-UT PRIVATE gtest_main gmock_main faker-cxx) - target_include_directories(${LIBRARY_NAME}-UT PRIVATE ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} ${CMAKE_CURRENT_LIST_DIR}) + target_include_directories(${LIBRARY_NAME}-UT PRIVATE ${FMT_INCLUDE_DIR} ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR} ${CMAKE_CURRENT_LIST_DIR}) add_test(NAME ${LIBRARY_NAME}-UT COMMAND ${LIBRARY_NAME}-UT WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}) diff --git a/README.md b/README.md index 41656034..963cf597 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ C++ Faker is a modern C++20 open-source library for generating fake data for tes The library is heavily inspired by [Faker.js](https://github.com/faker-js/faker). -Dependencies: GTest for building library tests (can be disabled by setting CMake flag BUILD_FAKER_TESTS=OFF) +Dependencies: + - GTest: building library tests (can be disabled by setting CMake flag BUILD_FAKER_TESTS=OFF) + - fmt: formatting, cannot use standard lib because apple clang does not support this feature ## 🎯 Goal @@ -59,6 +61,7 @@ int main() - [MSVC➚](https://en.wikipedia.org/wiki/Microsoft_Visual_Studio) version 143 or newer. - [GCC➚](https://gcc.gnu.org/) version 13 or newer. - [Clang➚](https://clang.llvm.org/) version 16 or newer. +- [Apple Clang➚](https://clang.llvm.org/) version 16 or newer. ### [CMake](https://cmake.org/) version 3.22 or newer diff --git a/externals/fmt b/externals/fmt new file mode 160000 index 00000000..f76603f2 --- /dev/null +++ b/externals/fmt @@ -0,0 +1 @@ +Subproject commit f76603f21ea75bcd8d0007d7599cac75862b13b9 diff --git a/include/faker-cxx/Animal.h b/include/faker-cxx/Animal.h index f5a99136..f2f17cc2 100644 --- a/include/faker-cxx/Animal.h +++ b/include/faker-cxx/Animal.h @@ -94,7 +94,7 @@ class Animal * @endcode */ static std::string fish(); - + /** * @brief Returns a random species of horse. * @@ -105,7 +105,7 @@ class Animal * @endcode */ static std::string horse(); - + /** * @brief Returns a random species of insect. * @@ -116,7 +116,7 @@ class Animal * @endcode */ static std::string insect(); - + /** * @brief Returns a random species of lion. * @@ -127,7 +127,7 @@ class Animal * @endcode */ static std::string lion(); - + /** * @brief Returns a random species of rabbit. * @@ -138,7 +138,7 @@ class Animal * @endcode */ static std::string rabbit(); - + /** * @brief Returns a random species of rodent. * @@ -149,7 +149,7 @@ class Animal * @endcode */ static std::string rodent(); - + /** * @brief Returns a random species of snake. * diff --git a/src/modules/book/Book.cpp b/src/modules/book/Book.cpp index 02b77a50..a094d003 100644 --- a/src/modules/book/Book.cpp +++ b/src/modules/book/Book.cpp @@ -1,13 +1,12 @@ #include "faker-cxx/Book.h" -#include - #include "data/Authors.h" #include "data/Genres.h" #include "data/Publishers.h" #include "data/Titles.h" #include "faker-cxx/Helper.h" #include "faker-cxx/String.h" +#include "fmt/format.h" namespace faker { @@ -33,7 +32,7 @@ std::string Book::publisher() std::string Book::isbn() { - return std::format("{}-{}-{}-{}-{}", String::numeric(3, false), String::numeric(2), String::numeric(2), + return fmt::format("{}-{}-{}-{}-{}", String::numeric(3, false), String::numeric(2), String::numeric(2), String::numeric(5), String::numeric(1)); } } diff --git a/src/modules/color/Color.cpp b/src/modules/color/Color.cpp index f25ebc40..3aa0b0b1 100644 --- a/src/modules/color/Color.cpp +++ b/src/modules/color/Color.cpp @@ -1,12 +1,12 @@ #include "faker-cxx/Color.h" -#include #include #include "data/Colors.h" #include "faker-cxx/Helper.h" #include "faker-cxx/Number.h" #include "faker-cxx/String.h" +#include "fmt/format.h" namespace faker { @@ -23,7 +23,7 @@ std::string Color::rgb(bool includeAlpha) if (!includeAlpha) { - return std::format("rgb({}, {}, {})", red, green, blue); + return fmt::format("rgb({}, {}, {})", red, green, blue); } const std::floating_point auto alpha = Number::decimal(1); @@ -34,7 +34,7 @@ std::string Color::rgb(bool includeAlpha) ss << alpha; const auto formattedAlpha = ss.str(); - return std::format("rgba({}, {}, {}, {})", red, green, blue, formattedAlpha); + return fmt::format("rgba({}, {}, {}, {})", red, green, blue, formattedAlpha); } std::string Color::hex(HexCasing casing, HexPrefix prefix, bool includeAlpha) diff --git a/src/modules/commerce/Commerce.cpp b/src/modules/commerce/Commerce.cpp index 047b2bd3..b7f1e944 100644 --- a/src/modules/commerce/Commerce.cpp +++ b/src/modules/commerce/Commerce.cpp @@ -1,11 +1,10 @@ #include "faker-cxx/Commerce.h" -#include - #include "data/Commerce.h" #include "faker-cxx/Finance.h" #include "faker-cxx/Helper.h" #include "faker-cxx/String.h" +#include "fmt/format.h" namespace faker { @@ -41,6 +40,6 @@ std::string Commerce::productName() std::string Commerce::productFullName() { - return std::format("{} {} {}", productAdjective(), productMaterial(), productName()); + return fmt::format("{} {} {}", productAdjective(), productMaterial(), productName()); } } diff --git a/src/modules/company/Company.cpp b/src/modules/company/Company.cpp index bff46748..c21d707c 100644 --- a/src/modules/company/Company.cpp +++ b/src/modules/company/Company.cpp @@ -1,7 +1,5 @@ #include "faker-cxx/Company.h" -#include - #include "data/BuzzAdjectives.h" #include "data/BuzzNouns.h" #include "data/BuzzVerbs.h" @@ -13,6 +11,7 @@ #include "data/Suffixes.h" #include "faker-cxx/Helper.h" #include "faker-cxx/Person.h" +#include "fmt/format.h" namespace faker { @@ -23,16 +22,16 @@ std::string Company::name() switch (Number::integer(3)) { case 0: - companyName = std::format("{} {}", Person::lastName(), Helper::arrayElement(companySuffixes)); + companyName = fmt::format("{} {}", Person::lastName(), Helper::arrayElement(companySuffixes)); break; case 1: - companyName = std::format("{} {} {}", Person::firstName(), Person::lastName(), Person::jobArea()); + companyName = fmt::format("{} {} {}", Person::firstName(), Person::lastName(), Person::jobArea()); break; case 2: - companyName = std::format("{} {} {} Services", Person::firstName(), Person::lastName(), Person::jobArea()); + companyName = fmt::format("{} {} {} Services", Person::firstName(), Person::lastName(), Person::jobArea()); break; case 3: - companyName = std::format("{} {} {} {}", Person::firstName(), Person::lastName(), Person::jobArea(), + companyName = fmt::format("{} {} {} {}", Person::firstName(), Person::lastName(), Person::jobArea(), Helper::arrayElement(companySuffixes)); break; } @@ -52,7 +51,7 @@ std::string Company::industry() std::string Company::buzzPhrase() { - return std::format("{} {} {}", buzzVerb(), buzzAdjective(), buzzNoun()); + return fmt::format("{} {} {}", buzzVerb(), buzzAdjective(), buzzNoun()); } std::string Company::buzzAdjective() @@ -72,7 +71,7 @@ std::string Company::buzzVerb() std::string Company::catchPhrase() { - return std::format("{} {} {}", catchPhraseAdjective(), catchPhraseDescriptor(), catchPhraseNoun()); + return fmt::format("{} {} {}", catchPhraseAdjective(), catchPhraseDescriptor(), catchPhraseNoun()); } std::string Company::catchPhraseAdjective() diff --git a/src/modules/date/Date.cpp b/src/modules/date/Date.cpp index 08e5378e..72d96d0d 100644 --- a/src/modules/date/Date.cpp +++ b/src/modules/date/Date.cpp @@ -7,25 +7,37 @@ #include "data/WeekdayNames.h" #include "faker-cxx/Helper.h" #include "faker-cxx/Number.h" +#include "fmt/format.h" namespace faker { namespace { -std::string betweenDate( - std::chrono::time_point>> from, - std::chrono::time_point>> to) +std::string serializeTimePoint(const auto& timePoint) +{ + time_t timePointTimeT = std::chrono::system_clock::to_time_t(timePoint); + + std::tm utcTime = *std::gmtime(&timePointTimeT); + + std::stringstream ss; + + ss << std::put_time(&utcTime, "%FT%TZ"); + + return ss.str(); +} + +std::string betweenDate(const auto& from, const auto& to) { if (from > to) { - throw std::runtime_error{std::format("Start date is greater than end date. {{from: {}, to: {}}}", from, to)}; + throw std::runtime_error{fmt::format("Start date is greater than end date. {{from: {}, to: {}}}", serializeTimePoint(from),serializeTimePoint(to))}; } const auto size = std::chrono::duration_cast(to - from).count(); const auto randomDateWithinRange = from + std::chrono::seconds{Number::integer(size - 1)}; - return std::format("{:%FT%TZ}", std::chrono::floor(randomDateWithinRange)); + return serializeTimePoint(randomDateWithinRange); } const auto numberOfHoursInDay = 24; diff --git a/src/modules/date/DateTest.cpp b/src/modules/date/DateTest.cpp index 5f3b6863..d3b6ad18 100644 --- a/src/modules/date/DateTest.cpp +++ b/src/modules/date/DateTest.cpp @@ -50,6 +50,7 @@ TEST_F(DateTest, shouldGeneratePastDate) const auto pastDateISO = Date::pastDate(); + std::cout << pastDateISO; const auto pastDate = parseISOFormattedStringToTimePoint(pastDateISO); EXPECT_TRUE(std::chrono::duration_cast(currentDate - pastDate).count() < secondsInYear); diff --git a/src/modules/finance/Finance.cpp b/src/modules/finance/Finance.cpp index e457b9a9..26a58488 100644 --- a/src/modules/finance/Finance.cpp +++ b/src/modules/finance/Finance.cpp @@ -1,7 +1,5 @@ #include "faker-cxx/Finance.h" -#include - #include "../../common/mappers/PrecisionMapper.h" #include "data/AccountTypes.h" #include "data/BankIndentifiersCodes.h" @@ -11,6 +9,7 @@ #include "faker-cxx/Helper.h" #include "faker-cxx/Number.h" #include "faker-cxx/String.h" +#include "fmt/format.h" namespace faker { @@ -64,7 +63,7 @@ std::string Finance::amount(double min, double max, Precision precision, const s ss << generatedNumber; - return std::format("{}{}", symbol, ss.str()); + return fmt::format("{}{}", symbol, ss.str()); } std::string Finance::iban(std::optional country) diff --git a/src/modules/internet/Internet.cpp b/src/modules/internet/Internet.cpp index 27b91e67..777cf136 100644 --- a/src/modules/internet/Internet.cpp +++ b/src/modules/internet/Internet.cpp @@ -1,6 +1,5 @@ #include "faker-cxx/Internet.h" -#include #include #include @@ -12,6 +11,7 @@ #include "faker-cxx/Person.h" #include "faker-cxx/String.h" #include "faker-cxx/Word.h" +#include "fmt/format.h" namespace faker { @@ -59,14 +59,14 @@ std::string Internet::username(std::optional firstNameInit, std::op switch (Number::integer(2)) { case 0: - username = std::format("{}{}{}", firstName, lastName, Number::integer(999)); + username = fmt::format("{}{}{}", firstName, lastName, Number::integer(999)); break; case 1: - username = std::format("{}{}{}", firstName, + username = fmt::format("{}{}{}", firstName, Helper::arrayElement(std::vector{".", "_", ""}), lastName); break; case 2: - username = std::format("{}{}{}{}", firstName, + username = fmt::format("{}{}{}{}", firstName, Helper::arrayElement(std::vector{".", "_", ""}), lastName, Number::integer(99)); break; @@ -78,13 +78,13 @@ std::string Internet::username(std::optional firstNameInit, std::op std::string Internet::email(std::optional firstName, std::optional lastName, std::optional emailHost) { - return std::format("{}@{}", username(std::move(firstName), std::move(lastName)), + return fmt::format("{}@{}", username(std::move(firstName), std::move(lastName)), emailHost ? *emailHost : Helper::arrayElement(emailHosts)); } std::string Internet::exampleEmail(std::optional firstName, std::optional lastName) { - return std::format("{}@{}", username(std::move(firstName), std::move(lastName)), + return fmt::format("{}@{}", username(std::move(firstName), std::move(lastName)), Helper::arrayElement(emailExampleHosts)); } @@ -104,12 +104,12 @@ std::string Internet::password(int length) std::string Internet::imageUrl(unsigned int width, unsigned int height) { - return std::format("https://source.unsplash.com/{}x{}", width, height); + return fmt::format("https://source.unsplash.com/{}x{}", width, height); } std::string Internet::githubAvatarUrl() { - return std::format("https://avatars.githubusercontent.com/u/{}", Number::integer(100000000)); + return fmt::format("https://avatars.githubusercontent.com/u/{}", Number::integer(100000000)); } std::string Internet::emoji(std::optional type) @@ -195,7 +195,7 @@ std::string Internet::ipv4(IPv4Class ipv4class) } } - return std::format("{}.{}.{}.{}", sectors[0], sectors[1], sectors[2], sectors[3]); + return fmt::format("{}.{}.{}.{}", sectors[0], sectors[1], sectors[2], sectors[3]); } std::string Internet::ipv4(const IPv4Address& baseIpv4Address, const IPv4Address& generationMask) @@ -208,7 +208,7 @@ std::string Internet::ipv4(const IPv4Address& baseIpv4Address, const IPv4Address sectors[i] |= (baseIpv4Address[i] & generationMask[i]); } - return std::format("{}.{}.{}.{}", sectors[0], sectors[1], sectors[2], sectors[3]); + return fmt::format("{}.{}.{}.{}", sectors[0], sectors[1], sectors[2], sectors[3]); } std::string Internet::ipv6() @@ -254,17 +254,17 @@ std::string Internet::url(WebProtocol webProtocol) { const auto protocol = webProtocol == WebProtocol::Https ? "https" : "http"; - return std::format("{}://{}", protocol, domainName()); + return fmt::format("{}://{}", protocol, domainName()); } std::string Internet::domainName() { - return std::format("{}.{}", domainWord(), domainSuffix()); + return fmt::format("{}.{}", domainWord(), domainSuffix()); } std::string Internet::domainWord() { - return StringHelper::toLower(std::format("{}-{}", Word::adjective(), Word::noun())); + return StringHelper::toLower(fmt::format("{}-{}", Word::adjective(), Word::noun())); } std::string Internet::domainSuffix() diff --git a/src/modules/location/Location.cpp b/src/modules/location/Location.cpp index 77a8df6f..2bcd8f67 100644 --- a/src/modules/location/Location.cpp +++ b/src/modules/location/Location.cpp @@ -6,17 +6,17 @@ #include "../../common/StringHelper.h" #include "data/Countries.h" #include "data/Directions.h" -#include "data/russia/RussiaAddressFormat.h" -#include "data/russia/RussiaCities.h" -#include "data/russia/RussiaStreetPrefixes.h" -#include "data/poland/PolandAddressFromat.h" -#include "data/poland/PolandCities.h" -#include "data/poland/PolandStreetNames.h" -#include "data/poland/PolandStreetPrefixes.h" #include "data/france/FranceAddressFormat.h" #include "data/france/FranceCities.h" #include "data/france/FranceStreetPrefixes.h" #include "data/france/FranceStreetSuffixes.h" +#include "data/poland/PolandAddressFromat.h" +#include "data/poland/PolandCities.h" +#include "data/poland/PolandStreetNames.h" +#include "data/poland/PolandStreetPrefixes.h" +#include "data/russia/RussiaAddressFormat.h" +#include "data/russia/RussiaCities.h" +#include "data/russia/RussiaStreetPrefixes.h" #include "data/States.h" #include "data/TimeZones.h" #include "data/usa/UsaAddressFormat.h" @@ -30,60 +30,44 @@ namespace faker { namespace { -const std::map> countryToCitiesMapping{ - {Country::Usa, usaCities}, - {Country::Russia, russiaCities}, - {Country::Poland, polandCities}, - {Country::France, franceCities} -}; - -const std::map> countryToStreetsMapping{ - {Country::Poland, polandStreets} -}; - -const std::map countryToZipCodeFormatMapping{ - {Country::Usa, usaZipCodeFormat}, - {Country::Russia, russiaZipCodeFormat}, - {Country::Poland, polandZipCodeFormat}, - {Country::France, franceZipCodeFormat} -}; +const std::map> countryToCitiesMapping{{Country::Usa, usaCities}, + {Country::Russia, russiaCities}, + {Country::Poland, polandCities}, + {Country::France, franceCities}}; + +const std::map> countryToStreetsMapping{{Country::Poland, polandStreets}}; + +const std::map countryToZipCodeFormatMapping{{Country::Usa, usaZipCodeFormat}, + {Country::Russia, russiaZipCodeFormat}, + {Country::Poland, polandZipCodeFormat}, + {Country::France, franceZipCodeFormat}}; const std::map> countryToBuildingNumberFormatsMapping{ {Country::Usa, usaBuildingNumberFormats}, {Country::Russia, russiaBuildingNumberFormats}, {Country::Poland, polandBuildingNumberFormats}, - {Country::France, franceBuildingNumberFormats} -}; + {Country::France, franceBuildingNumberFormats}}; -const std::map> countryToStreetFormatsMapping{ - {Country::Usa, usaStreetFormats}, - {Country::Russia, russiaStreetFormats}, - {Country::Poland, polandStreetFormats}, - {Country::France, franceStreetFormats} -}; +const std::map> countryToStreetFormatsMapping{{Country::Usa, usaStreetFormats}, + {Country::Russia, russiaStreetFormats}, + {Country::Poland, polandStreetFormats}, + {Country::France, franceStreetFormats}}; const std::map> countryToSecondaryAddressFormatsMapping{ - {Country::Usa, usaSecondaryAddressFormats}, - {Country::France, franceSecondaryAddressFormats} -}; + {Country::Usa, usaSecondaryAddressFormats}, {Country::France, franceSecondaryAddressFormats}}; -const std::map countryToAddressFormatMapping{ - {Country::Usa, usaAddressFormat}, - {Country::Russia, russiaAddressFormat}, - {Country::Poland, polandAddressFormat}, - {Country::France, franceAddressFormat} -}; +const std::map countryToAddressFormatMapping{{Country::Usa, usaAddressFormat}, + {Country::Russia, russiaAddressFormat}, + {Country::Poland, polandAddressFormat}, + {Country::France, franceAddressFormat}}; const std::map> countryToStreetSuffixesMapping{ - {Country::Usa, usaStreetSuffixes}, - {Country::France, franceStreetSuffixes} -}; + {Country::Usa, usaStreetSuffixes}, {Country::France, franceStreetSuffixes}}; const std::map> countryToStreetPrefixesMapping{ {Country::Russia, russiaStreetPrefixes}, {Country::Poland, polandStreetPrefixes}, - {Country::France, franceStreetPrefixes} -}; + {Country::France, franceStreetPrefixes}}; } std::string Location::country() diff --git a/src/modules/location/LocationTest.cpp b/src/modules/location/LocationTest.cpp index ad3cf2b8..40f99e7a 100644 --- a/src/modules/location/LocationTest.cpp +++ b/src/modules/location/LocationTest.cpp @@ -12,18 +12,18 @@ #include "../string/data/Characters.h" #include "data/Countries.h" #include "data/Directions.h" -#include "data/russia/RussiaCities.h" -#include "data/russia/RussiaStreetPrefixes.h" +#include "data/france/FranceCities.h" +#include "data/france/FranceStreetPrefixes.h" +#include "data/france/FranceStreetSuffixes.h" #include "data/poland/PolandCities.h" #include "data/poland/PolandStreetNames.h" #include "data/poland/PolandStreetPrefixes.h" +#include "data/russia/RussiaCities.h" +#include "data/russia/RussiaStreetPrefixes.h" #include "data/States.h" #include "data/TimeZones.h" #include "data/usa/UsaCities.h" #include "data/usa/UsaStreetSuffixes.h" -#include "data/france/FranceCities.h" -#include "data/france/FranceStreetPrefixes.h" -#include "data/france/FranceStreetSuffixes.h" using namespace ::testing; using namespace faker; @@ -208,9 +208,9 @@ TEST_F(LocationTest, shouldGeneratePolandStreetAddress) std::string generatedStreetName{}; - if(generatedStreetAddressElements.size() > 3) + if (generatedStreetAddressElements.size() > 3) { - for(size_t i = 1; i < generatedStreetAddressElements.size() -1; ++i ) + for (size_t i = 1; i < generatedStreetAddressElements.size() - 1; ++i) { street.push_back(generatedStreetAddressElements.at(i)); } @@ -259,7 +259,7 @@ TEST_F(LocationTest, shouldGenerateFranceBuildingNumber) TEST_F(LocationTest, shouldGenerateFranceSecondaryAddress) { const auto generatedSecondaryAddress = Location::secondaryAddress(Country::France); - + ASSERT_TRUE(generatedSecondaryAddress.starts_with("Apt. ") || generatedSecondaryAddress.starts_with("Étage ")); const auto generatedSecondaryAddressParts = StringHelper::split(generatedSecondaryAddress, " "); @@ -277,7 +277,8 @@ TEST_F(LocationTest, shouldGenerateFranceStreet) const auto generatedStreetElements = StringHelper::split(generatedStreet, " "); const auto& generatedStreetPrefix = generatedStreetElements[0]; - const auto& generatedStreetSuffix = StringHelper::join({generatedStreetElements.begin()+1, generatedStreetElements.end()}); + const auto& generatedStreetSuffix = + StringHelper::join({generatedStreetElements.begin() + 1, generatedStreetElements.end()}); ASSERT_GE(generatedStreetElements.size(), 2); ASSERT_TRUE(std::ranges::any_of(franceStreetPrefixes, [generatedStreetPrefix](const std::string& streetPrefix) @@ -294,7 +295,8 @@ TEST_F(LocationTest, shouldGenerateFranceStreetAddress) const auto& generatedBuildingNumber = generatedStreetAddressElements[0]; const auto& generatedStreetPrefix = generatedStreetAddressElements[1]; - const auto& generatedStreetSuffix = StringHelper::join({generatedStreetAddressElements.begin()+2, generatedStreetAddressElements.end()}); + const auto& generatedStreetSuffix = + StringHelper::join({generatedStreetAddressElements.begin() + 2, generatedStreetAddressElements.end()}); ASSERT_GE(generatedStreetAddressElements.size(), 3); ASSERT_TRUE(generatedBuildingNumber.size() >= 1 && generatedBuildingNumber.size() <= 4); diff --git a/src/modules/location/data/france/FranceCities.h b/src/modules/location/data/france/FranceCities.h index 3c6b3055..2ed43e67 100644 --- a/src/modules/location/data/france/FranceCities.h +++ b/src/modules/location/data/france/FranceCities.h @@ -1004,5 +1004,5 @@ const std::vector franceCities = {"Abbeville", "Yerres", "Yutz", "Yvetot", - "Yzeure"}; -} \ No newline at end of file + "Yzeure"}; +} diff --git a/src/modules/location/data/france/FranceStreetPrefixes.h b/src/modules/location/data/france/FranceStreetPrefixes.h index 5a300a58..8f658def 100644 --- a/src/modules/location/data/france/FranceStreetPrefixes.h +++ b/src/modules/location/data/france/FranceStreetPrefixes.h @@ -5,6 +5,6 @@ namespace faker { -const std::vector franceStreetPrefixes = {"allée", "voie", "rue", "avenue", "boulevard", "quai", +const std::vector franceStreetPrefixes = {"allée", "voie", "rue", "avenue", "boulevard", "quai", "passage", "impasse", "place", "chemin", "lotissement"}; } diff --git a/src/modules/lorem/Lorem.cpp b/src/modules/lorem/Lorem.cpp index b2906661..8344b15c 100644 --- a/src/modules/lorem/Lorem.cpp +++ b/src/modules/lorem/Lorem.cpp @@ -1,10 +1,9 @@ #include "faker-cxx/Lorem.h" -#include - #include "../../common/StringHelper.h" #include "data/LoremWords.h" #include "faker-cxx/Helper.h" +#include "fmt/format.h" namespace faker { @@ -31,7 +30,7 @@ std::string Lorem::sentence(unsigned minNumberOfWords, unsigned maxNumberOfWords const auto sentenceWords = words(numberOfWords); - return std::format("{}{}.", static_cast(std::toupper(sentenceWords[0])), sentenceWords.substr(1)); + return fmt::format("{}{}.", static_cast(std::toupper(sentenceWords[0])), sentenceWords.substr(1)); } std::string Lorem::sentences(unsigned minNumberOfSentences, unsigned maxNumberOfSentences) diff --git a/src/modules/person/Person.cpp b/src/modules/person/Person.cpp index d682728a..b0b020ca 100644 --- a/src/modules/person/Person.cpp +++ b/src/modules/person/Person.cpp @@ -1,6 +1,5 @@ #include "faker-cxx/Person.h" -#include #include #include "data/english/EnglishFirstNamesFemales.h" @@ -34,6 +33,7 @@ #include "data/russian/RussianLastNamesFemales.h" #include "data/russian/RussianLastNamesMales.h" #include "faker-cxx/Helper.h" +#include "fmt/format.h" namespace faker { @@ -130,7 +130,7 @@ std::string Person::lastName(Language language, std::optional sex) std::string Person::fullName(Language language, std::optional sex) { - return std::format("{} {}", firstName(language, sex), lastName(language, sex)); + return fmt::format("{} {}", firstName(language, sex), lastName(language, sex)); } std::string Person::sex() @@ -145,7 +145,7 @@ std::string Person::gender() std::string Person::jobTitle() { - return std::format("{} {} {}", jobDescriptor(), jobArea(), jobType()); + return fmt::format("{} {} {}", jobDescriptor(), jobArea(), jobType()); } std::string Person::jobDescriptor() From d9be774fb1cbb1e89a026102112bda3e0221ca34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Thu, 5 Oct 2023 22:13:48 +0100 Subject: [PATCH 05/28] add formatting rules to contributing guide (#190) --- CONTRIBUTING.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f3243436..9b245624 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,30 +5,33 @@ How to contribute Getting Started --------------- -- Pick a feature from the [TODO Features](https://github.com/cieslarmichal/faker-cxx/blob/main/TODO.md) or [Issues](https://github.com/cieslarmichal/faker-cxx/issues). You could also implement your own module/functions. -- If you picked a feature from list, please create an issue for it (so other contributors don't implement the same feature). -- Fork the repository on GitHub +- Pick a feature from the [TODO Features](https://github.com/cieslarmichal/faker-cxx/blob/main/TODO.md) + or [Issues](https://github.com/cieslarmichal/faker-cxx/issues). You could also implement your own module/functions. +- If you picked a feature from list, please create an issue for it (so other contributors don't implement the same + feature). +- Fork the repository on GitHub Making Changes -------------- -- Create a feature/bug branch from main branch: +- Create a feature/bug branch from main branch: - ``git checkout -b feature/feature-name`` - - Please avoid working directly on the ``main`` branch. -- Make commits of logical units. -- Make sure you have added the necessary tests for your changes. -- Run *all* the tests to assure nothing else was accidentally broken. + ``git checkout -b feature/feature-name`` + + Please avoid working directly on the ``main`` branch. +- Make commits of logical units. +- Make sure you have added the necessary tests for your changes. +- Run *all* the tests to assure nothing else was accidentally broken. Submitting Changes ------------------ -- Push your changes to the branch in your fork of the repository. -- Submit a pull request to the repository. +- Format code with ``clang-format src/**/*.cpp src/**/*.h include/**/*.h -i -style=file`` +- Push your changes to the branch in your fork of the repository. +- Submit a pull request to the repository. Additional Resources ==================== -- If you have any questions about features you can join [Discord Channel](https://discord.com/invite/h2ur8H6mK6). -- Features implementations in [Faker.js](https://github.com/faker-js/faker) could be helpful as a reference. +- If you have any questions about features you can join [Discord Channel](https://discord.com/invite/h2ur8H6mK6). +- Features implementations in [Faker.js](https://github.com/faker-js/faker) could be helpful as a reference. From d6e26e194b5498416f00222a0593485ea6df8a67 Mon Sep 17 00:00:00 2001 From: Eric Floyd <101071809+eric-bodhi@users.noreply.github.com> Date: Sun, 8 Oct 2023 16:47:44 -0400 Subject: [PATCH 06/28] Feature/hacker (#196) * everything works but hacker::phrases * added hacker * Fixed phrases, formatted, and added better tests --- CMakeLists.txt | 6 +- include/faker-cxx/Hacker.h | 74 ++++++++++++++++ include/faker-cxx/Helper.h | 42 +++++++++ src/modules/hacker/Hacker.cpp | 74 ++++++++++++++++ src/modules/hacker/HackerTest.cpp | 109 ++++++++++++++++++++++++ src/modules/hacker/data/Abbreviations.h | 12 +++ src/modules/hacker/data/Adjectives.h | 12 +++ src/modules/hacker/data/Ingverbs.h | 12 +++ src/modules/hacker/data/Nouns.h | 12 +++ src/modules/hacker/data/Phrases.h | 28 ++++++ src/modules/hacker/data/Verbs.h | 12 +++ src/modules/helper/Helper.cpp | 25 ++++++ src/modules/helper/HelperTest.cpp | 31 +++++++ 13 files changed, 447 insertions(+), 2 deletions(-) create mode 100644 include/faker-cxx/Hacker.h create mode 100644 src/modules/hacker/Hacker.cpp create mode 100644 src/modules/hacker/HackerTest.cpp create mode 100644 src/modules/hacker/data/Abbreviations.h create mode 100644 src/modules/hacker/data/Adjectives.h create mode 100644 src/modules/hacker/data/Ingverbs.h create mode 100644 src/modules/hacker/data/Nouns.h create mode 100644 src/modules/hacker/data/Phrases.h create mode 100644 src/modules/hacker/data/Verbs.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 476ed6ba..04750b08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,7 +41,8 @@ set(FAKER_SOURCES src/modules/database/Database.cpp src/modules/music/Music.cpp src/modules/movie/Movie.cpp - ) + src/modules/hacker/Hacker.cpp +) set(FAKER_UT_SOURCES src/modules/animal/AnimalTest.cpp @@ -68,7 +69,8 @@ set(FAKER_UT_SOURCES src/modules/database/DatabaseTest.cpp src/modules/music/MusicTest.cpp src/modules/movie/MovieTest.cpp - ) + src/modules/hacker/HackerTest.cpp +) add_library(${LIBRARY_NAME} ${FAKER_SOURCES}) diff --git a/include/faker-cxx/Hacker.h b/include/faker-cxx/Hacker.h new file mode 100644 index 00000000..adc5292f --- /dev/null +++ b/include/faker-cxx/Hacker.h @@ -0,0 +1,74 @@ +#pragma once + +#include + +namespace faker { + class Hacker { +public: + /** + * @brief Returns a hacker abbreviation. + * + * @returns abbreviation. + * + * @code + * Hacker::abbreviation() // "TCP" + * @endcode + */ + static std::string abbreviation(); + + /** + * @brief Returns a random adjective. + * + * @returns adjective. + * + * @code + * Hacker::adjective() // "open-source" + * @endcode + */ + static std::string adjective(); + + /** + * @brief Returns a random noun. + * + * @returns noun. + * + * @code + * Hacker::noun() // "coder" + * @endcode + */ + static std::string noun(); + + /** + * @brief Returns a random verb. + * + * @returns verb. + * + * @code + * Hacker::verb() // "run" + * @endcode + */ + static std::string verb(); + + /** + * @brief Returns a random ingverb. + * + * @returns ingverb. + * + * @code + * Hacker::ingverb() // "backing up" + * @endcode + */ + static std::string ingverb(); + + /** + * @brief Returns a random phrase. + * + * @return phrase. + * + * @code + * Hacker::phrase() // "If we bypass the monitor, we can get to the TCP monitor through the neural EXE monitor!" + * @endcode + */ + static std::string phrase(); + }; +} \ No newline at end of file diff --git a/include/faker-cxx/Helper.h b/include/faker-cxx/Helper.h index d517453c..79406934 100644 --- a/include/faker-cxx/Helper.h +++ b/include/faker-cxx/Helper.h @@ -2,6 +2,8 @@ #include #include +#include +#include #include "Datatype.h" #include "Number.h" @@ -177,6 +179,46 @@ class Helper return TResult(); } + /* + * @brief Returns a split string into words. + * + * @param input The string to split. + * + * @return A vector of words. + * + * @code + * Helper::splitIntoWords("Hello World!") // {"Hello", "World!"} + * @endcode + */ + static std::vector splitIntoWords(const std::string& input); + + /* + * @brief Returns true if the given character is punctuation. + * + * @param c The character to check. + * + * @return True if the given character is punctuation. + * + * @code + * Helper::isPunctuation('!') // true + * Helper::isPunctuation('a') // false + * @endcode + */ + static bool isPunctuation(char c); + + /* + * @brief Returns the given word without punctuation. + * + * @param word The word to remove punctuation. + * + * @return The given word without punctuation. + * + * @code + * Helper::removePunctuation("Hello!") // "Hello" + * @endcode + */ + static std::string removePunctuation(const std::string& word); + private: static std::random_device randomDevice; static std::mt19937 pseudoRandomGenerator; diff --git a/src/modules/hacker/Hacker.cpp b/src/modules/hacker/Hacker.cpp new file mode 100644 index 00000000..5dfdfe0a --- /dev/null +++ b/src/modules/hacker/Hacker.cpp @@ -0,0 +1,74 @@ +#include "faker-cxx/Hacker.h" + +#include +#include + +#include "data/Abbreviations.h" +#include "data/Adjectives.h" +#include "data/Ingverbs.h" +#include "data/Nouns.h" +#include "data/Phrases.h" +#include "data/Verbs.h" + +namespace faker +{ +std::string Hacker::abbreviation() +{ + return faker::Helper::arrayElement(faker::abbreviations); +} + +std::string Hacker::adjective() +{ + return faker::Helper::arrayElement(faker::adjectives); +} + +std::string Hacker::noun() +{ + return faker::Helper::arrayElement(faker::nouns); +} + +std::string Hacker::verb() +{ + return faker::Helper::arrayElement(faker::verbs); +} + +std::string Hacker::ingverb() +{ + return faker::Helper::arrayElement(faker::ingverbs); +} + +std::string Hacker::phrase() +{ + auto splitRandomPhrase = Helper::splitIntoWords(faker::Helper::arrayElement(faker::phrases)); + std::string ret; + + for (auto& word : splitRandomPhrase) + { + word = Helper::removePunctuation(word); + if (word == "{abbreviation}") + { + word = abbreviation(); + } + else if (word == "{adjective}") + { + word = adjective(); + } + else if (word == "{noun}") + { + word = noun(); + } + else if (word == "{verb}") + { + word = verb(); + } + else if (word == "{ingverb}") + { + word = ingverb(); + } + + ret += word + " "; + } + + return ret; +} +} diff --git a/src/modules/hacker/HackerTest.cpp b/src/modules/hacker/HackerTest.cpp new file mode 100644 index 00000000..f6f4aac5 --- /dev/null +++ b/src/modules/hacker/HackerTest.cpp @@ -0,0 +1,109 @@ +#include "faker-cxx/Hacker.h" + +#include +#include + +#include "gtest/gtest.h" + +#include "data/Abbreviations.h" +#include "data/Adjectives.h" +#include "data/Ingverbs.h" +#include "data/Nouns.h" +#include "data/Phrases.h" +#include "data/Verbs.h" +#include "faker-cxx/Helper.h" + +using namespace ::testing; +using namespace faker; + +class HackerTest : public Test +{ +public: +}; + +TEST_F(HackerTest, shouldGenerateAbbreviation) +{ + std::string generatedAbbreviation = Hacker::abbreviation(); + + ASSERT_TRUE(std::ranges::any_of(abbreviations, [generatedAbbreviation](const std::string& abbreviation) + { return abbreviation == generatedAbbreviation; })); +} + +TEST_F(HackerTest, shouldGenerateAdjective) +{ + std::string generatedAdjective = Hacker::adjective(); + + ASSERT_TRUE(std::ranges::any_of(adjectives, [generatedAdjective](const std::string& adjective) + { return adjective == generatedAdjective; })); +} + +TEST_F(HackerTest, shouldGenerateNoun) +{ + std::string generatedNoun = Hacker::noun(); + + ASSERT_TRUE(std::ranges::any_of(nouns, [generatedNoun](const std::string& noun) { return noun == generatedNoun; })); +} + +TEST_F(HackerTest, shouldGenerateVerb) +{ + std::string generatedVerb = Hacker::verb(); + + ASSERT_TRUE(std::ranges::any_of(verbs, [generatedVerb](const std::string& verb) { return verb == generatedVerb; })); +} + +TEST_F(HackerTest, shouldGenerateIngverb) +{ + std::string generatedIngverb = Hacker::ingverb(); + + ASSERT_TRUE(std::ranges::any_of(ingverbs, [generatedIngverb](const std::string& ingverb) + { return ingverb == generatedIngverb; })); +} + +TEST_F(HackerTest, shouldGeneratePhrase) +{ + std::string generatedPhrase = Hacker::phrase(); + bool hasAdjective, hasNoun, hasVerb, hasAbbreviation; + hasAdjective = hasNoun = hasVerb = hasAbbreviation = false; + + // Check for adjectives + for (const std::string& adj : adjectives) + { + if (generatedPhrase.find(adj) != std::string::npos) + { + hasAdjective = true; + break; + } + } + + // Check for nouns + for (const std::string& noun : nouns) + { + if (generatedPhrase.find(noun) != std::string::npos) + { + hasNoun = true; + break; + } + } + + // Check for verbs + for (const std::string& verb : verbs) + { + if (generatedPhrase.find(verb) != std::string::npos) + { + hasVerb = true; + break; + } + } + + // Check for abbreviations + for (const std::string& abbreviation : abbreviations) + { + if (generatedPhrase.find(abbreviation) != std::string::npos) + { + hasAbbreviation = true; + break; + } + } + + ASSERT_TRUE((hasAdjective && hasNoun && hasVerb && hasAbbreviation)); +} diff --git a/src/modules/hacker/data/Abbreviations.h b/src/modules/hacker/data/Abbreviations.h new file mode 100644 index 00000000..a048b927 --- /dev/null +++ b/src/modules/hacker/data/Abbreviations.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector abbreviations = { + "e.g.", "i.e.", "etc.", "Mr.", "Mrs.", "Ms.", "Dr.", "Prof.", + "Ave.", "St.", "A.M.", "P.M.", "USA", "UK", "CEO", "CFO", +}; +} diff --git a/src/modules/hacker/data/Adjectives.h b/src/modules/hacker/data/Adjectives.h new file mode 100644 index 00000000..6cacc6a6 --- /dev/null +++ b/src/modules/hacker/data/Adjectives.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector adjectives = { + "auxiliary", "primary", "back-end", "digital", "open-source", "virtual", "cross-platform", "redundant", + "online", "haptic", "multi-byte", "bluetooth", "wireless", "1080p", "neural", "optical", +}; +} diff --git a/src/modules/hacker/data/Ingverbs.h b/src/modules/hacker/data/Ingverbs.h new file mode 100644 index 00000000..8afe2c55 --- /dev/null +++ b/src/modules/hacker/data/Ingverbs.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector ingverbs = { + "backing up", "bypassing", "hacking", "overriding", "compressing", "copying", "navigating", "indexing", + "connecting", "generating", "quantifying", "calculating", "synthesizing", "transmitting", "programming", "parsing", +}; +} diff --git a/src/modules/hacker/data/Nouns.h b/src/modules/hacker/data/Nouns.h new file mode 100644 index 00000000..e446dc9b --- /dev/null +++ b/src/modules/hacker/data/Nouns.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector nouns = { + "driver", "protocol", "bandwidth", "panel", "microchip", "program", "port", "card", + "array", "interface", "system", "sensor", "firewall", "hard drive", "pixel", "alarm", +}; +} diff --git a/src/modules/hacker/data/Phrases.h b/src/modules/hacker/data/Phrases.h new file mode 100644 index 00000000..36c86d63 --- /dev/null +++ b/src/modules/hacker/data/Phrases.h @@ -0,0 +1,28 @@ +#pragma once + +#include +#include + +#include "Abbreviations.h" +#include "Adjectives.h" +#include "faker-cxx/Helper.h" +#include "fmt/format.h" +#include "Ingverbs.h" +#include "Nouns.h" +#include "Verbs.h" + +namespace faker +{ +// use fmt::format() to format each phrase w/ random word + +const std::vector phrases = { + "If we {verb} the {noun}, we can get to the {abbreviation} {noun} through the {adjective} {abbreviation} {noun}!", + "We need to {verb} the {adjective} {abbreviation} {noun}!", + "Try to {verb} the {abbreviation} {noun}, maybe it will {verb} the {adjective} {noun}!", + "You can't {verb} the {noun} without {ingverb} the {adjective} {abbreviation} {noun}!", + "Use the {adjective} {abbreviation} {noun}, then you can {verb} the {adjective} {noun}!", + "The {abbreviation} {noun} is down, {verb} the {adjective} {noun} so we can {verb} the {abbreviation} {noun}!", + "{ingverb} the {noun} won't do anything, we need to {verb} the {adjective} {abbreviation} {noun}!", + "I'll {verb} the {adjective} {abbreviation} {noun}, that should {noun} the {abbreviation} {noun}!", +}; +} diff --git a/src/modules/hacker/data/Verbs.h b/src/modules/hacker/data/Verbs.h new file mode 100644 index 00000000..f62bde23 --- /dev/null +++ b/src/modules/hacker/data/Verbs.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector verbs = { + "back up", "bypass", "hack", "override", "compress", "copy", "navigate", "index", + "connect", "generate", "quantify", "calculate", "synthesize", "transmit", "program", "parse", +}; +} diff --git a/src/modules/helper/Helper.cpp b/src/modules/helper/Helper.cpp index 463f4fa5..a7686476 100644 --- a/src/modules/helper/Helper.cpp +++ b/src/modules/helper/Helper.cpp @@ -1,9 +1,12 @@ #include "faker-cxx/Helper.h" #include +#include #include #include +#include #include +#include #include "../src/common/LuhnCheck.h" #include "../src/common/StringHelper.h" @@ -104,4 +107,26 @@ std::string Helper::regexpStyleStringParse(const std::string& input) return string; } + +// helper functions for phrases +std::vector Helper::splitIntoWords(const std::string& input) +{ + std::istringstream iss(input); + std::vector words(std::istream_iterator{iss}, std::istream_iterator()); + return words; +} + +// Function to check if a character is punctuation +bool Helper::isPunctuation(char c) +{ + return (c == '.' || c == ',' || c == '!' || c == '?' || c == ';' || c == ':'); +} + +// Function to remove punctuation from a word +std::string Helper::removePunctuation(const std::string& word) +{ + std::string result = word; + result.erase(std::remove_if(result.begin(), result.end(), isPunctuation), result.end()); + return result; +} } diff --git a/src/modules/helper/HelperTest.cpp b/src/modules/helper/HelperTest.cpp index b58053a1..e851719e 100644 --- a/src/modules/helper/HelperTest.cpp +++ b/src/modules/helper/HelperTest.cpp @@ -107,4 +107,35 @@ TEST_F(HelperTest, MaybeDouble) result = Helper::maybe([]() { return 3.14; }, lowProbability); EXPECT_EQ(result, 0.0); } + +TEST_F(HelperTest, IsPunctuation) +{ + std::string punctuation = ".,;:!?"; + for (char c : punctuation) + { + EXPECT_TRUE(Helper::isPunctuation(c)); + } + + std::string notPunctuation = "abc123"; + for (char c : notPunctuation) + { + EXPECT_FALSE(Helper::isPunctuation(c)); + } +} + +TEST_F(HelperTest, RemovePunctuation) +{ + std::string input = "Hello, World!"; + std::string result = Helper::removePunctuation(input); + EXPECT_EQ(result, "Hello World"); +} + +TEST_F(HelperTest, SplitIntoWords) +{ + std::string input = "Hello World!"; + std::vector result = Helper::splitIntoWords(input); + EXPECT_EQ(result.size(), 2); + EXPECT_EQ(result[0], "Hello"); + EXPECT_EQ(result[1], "World!"); +} } From 51ba70d8d02a13ffd8f8d06462bbca4505f944df Mon Sep 17 00:00:00 2001 From: Eric Floyd <101071809+eric-bodhi@users.noreply.github.com> Date: Tue, 10 Oct 2023 04:42:42 -0400 Subject: [PATCH 07/28] Feature/sport (#198) * Removed uneeded functions and moved some to StringHelper * Added Sport Module --- CMakeLists.txt | 2 + include/faker-cxx/Helper.h | 41 ---------------- include/faker-cxx/Sport.h | 65 +++++++++++++++++++++++++ src/common/StringHelper.cpp | 14 ++++++ src/common/StringHelper.h | 2 + src/common/StringHelperTest.cpp | 22 +++++++++ src/modules/hacker/Hacker.cpp | 5 +- src/modules/hacker/HackerTest.cpp | 2 - src/modules/helper/Helper.cpp | 24 --------- src/modules/helper/HelperTest.cpp | 31 ------------ src/modules/sport/Sport.cpp | 39 +++++++++++++++ src/modules/sport/SportTest.cpp | 60 +++++++++++++++++++++++ src/modules/sport/data/FemaleAthletes.h | 12 +++++ src/modules/sport/data/MaleAthletes.h | 12 +++++ src/modules/sport/data/SoccerTeams.h | 12 +++++ src/modules/sport/data/SportEvents.h | 20 ++++++++ src/modules/sport/data/SportNames.h | 12 +++++ 17 files changed, 275 insertions(+), 100 deletions(-) create mode 100644 include/faker-cxx/Sport.h create mode 100644 src/modules/sport/Sport.cpp create mode 100644 src/modules/sport/SportTest.cpp create mode 100644 src/modules/sport/data/FemaleAthletes.h create mode 100644 src/modules/sport/data/MaleAthletes.h create mode 100644 src/modules/sport/data/SoccerTeams.h create mode 100644 src/modules/sport/data/SportEvents.h create mode 100644 src/modules/sport/data/SportNames.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 04750b08..857e7799 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ set(FAKER_SOURCES src/modules/music/Music.cpp src/modules/movie/Movie.cpp src/modules/hacker/Hacker.cpp + src/modules/sport/Sport.cpp ) set(FAKER_UT_SOURCES @@ -70,6 +71,7 @@ set(FAKER_UT_SOURCES src/modules/music/MusicTest.cpp src/modules/movie/MovieTest.cpp src/modules/hacker/HackerTest.cpp + src/modules/sport/SportTest.cpp ) add_library(${LIBRARY_NAME} ${FAKER_SOURCES}) diff --git a/include/faker-cxx/Helper.h b/include/faker-cxx/Helper.h index 79406934..f1f20056 100644 --- a/include/faker-cxx/Helper.h +++ b/include/faker-cxx/Helper.h @@ -3,7 +3,6 @@ #include #include #include -#include #include "Datatype.h" #include "Number.h" @@ -179,46 +178,6 @@ class Helper return TResult(); } - /* - * @brief Returns a split string into words. - * - * @param input The string to split. - * - * @return A vector of words. - * - * @code - * Helper::splitIntoWords("Hello World!") // {"Hello", "World!"} - * @endcode - */ - static std::vector splitIntoWords(const std::string& input); - - /* - * @brief Returns true if the given character is punctuation. - * - * @param c The character to check. - * - * @return True if the given character is punctuation. - * - * @code - * Helper::isPunctuation('!') // true - * Helper::isPunctuation('a') // false - * @endcode - */ - static bool isPunctuation(char c); - - /* - * @brief Returns the given word without punctuation. - * - * @param word The word to remove punctuation. - * - * @return The given word without punctuation. - * - * @code - * Helper::removePunctuation("Hello!") // "Hello" - * @endcode - */ - static std::string removePunctuation(const std::string& word); - private: static std::random_device randomDevice; static std::mt19937 pseudoRandomGenerator; diff --git a/include/faker-cxx/Sport.h b/include/faker-cxx/Sport.h new file mode 100644 index 00000000..a9f0bfeb --- /dev/null +++ b/include/faker-cxx/Sport.h @@ -0,0 +1,65 @@ +#pragma once + +#include + +namespace faker +{ +class Sport +{ +public: + /** + * @brief Returns a random sport. + * + * @returns sport. + * + * @code + * Sport::sport() // "football" + * @endcode + */ + static std::string sport(); + + /** + * @brief Returns a random soccer team. + * + * @returns soccer team. + * + * @code + * Sport::soccerTeam() // "Manchester United" + * @endcode + */ + static std::string soccerTeam(); + + /** + * @brief Returns a random male athlete. + * + * @returns male athlete. + * + * @code + * Sport::maleAthlete() // "Cristiano Ronaldo" + * @endcode + */ + static std::string maleAthlete(); + + /** + * @brief Returns a random female athlete. + * + * @returns female athlete. + * + * @code + * Sport::femaleAthlete() // "Serena Williams" + * @endcode + */ + static std::string femaleAthlete(); + + /** + * @brief Returns a random Sport Event. + * + * @returns Sport Event. + * + * @code + * Sport::sportEvent() // "Super Bowl" + * @endcode + */ + static std::string sportEvent(); +}; +} \ No newline at end of file diff --git a/src/common/StringHelper.cpp b/src/common/StringHelper.cpp index 3b4c87f3..173c56c1 100644 --- a/src/common/StringHelper.cpp +++ b/src/common/StringHelper.cpp @@ -63,4 +63,18 @@ std::string StringHelper::toLower(const std::string& data) return lowerData; } + +// Function to check if a character is punctuation +bool StringHelper::isPunctuation(char c) +{ + return (c == '.' || c == ',' || c == '!' || c == '?' || c == ';' || c == ':'); +} + +// Function to remove punctuation from a word +std::string StringHelper::removePunctuation(const std::string& word) +{ + std::string result = word; + result.erase(std::remove_if(result.begin(), result.end(), isPunctuation), result.end()); + return result; +} } diff --git a/src/common/StringHelper.h b/src/common/StringHelper.h index 3c22433b..163bcaca 100644 --- a/src/common/StringHelper.h +++ b/src/common/StringHelper.h @@ -12,5 +12,7 @@ class StringHelper static std::string join(const std::vector& data, const std::string& separator = " "); static std::string repeat(const std::string& data, int repetition); static std::string toLower(const std::string& data); + static bool isPunctuation(char c); + static std::string removePunctuation(const std::string& word); }; } diff --git a/src/common/StringHelperTest.cpp b/src/common/StringHelperTest.cpp index f905b2cc..ec58c75b 100644 --- a/src/common/StringHelperTest.cpp +++ b/src/common/StringHelperTest.cpp @@ -70,3 +70,25 @@ TEST_F(StringHelperTest, toLower) ASSERT_EQ(result, "hello!"); } + +TEST_F(StringHelperTest, IsPunctuation) +{ + std::string punctuation = ".,;:!?"; + for (char c : punctuation) + { + EXPECT_TRUE(StringHelper::isPunctuation(c)); + } + + std::string notPunctuation = "abc123"; + for (char c : notPunctuation) + { + EXPECT_FALSE(StringHelper::isPunctuation(c)); + } +} + +TEST_F(StringHelperTest, RemovePunctuation) +{ + std::string input = "Hello, World!"; + std::string result = StringHelper::removePunctuation(input); + EXPECT_EQ(result, "Hello World"); +} diff --git a/src/modules/hacker/Hacker.cpp b/src/modules/hacker/Hacker.cpp index 5dfdfe0a..b61eb059 100644 --- a/src/modules/hacker/Hacker.cpp +++ b/src/modules/hacker/Hacker.cpp @@ -1,4 +1,5 @@ #include "faker-cxx/Hacker.h" +#include "../../common/StringHelper.h" #include #include @@ -39,12 +40,12 @@ std::string Hacker::ingverb() std::string Hacker::phrase() { - auto splitRandomPhrase = Helper::splitIntoWords(faker::Helper::arrayElement(faker::phrases)); + auto splitRandomPhrase = StringHelper::split(faker::Helper::arrayElement(faker::phrases)); std::string ret; for (auto& word : splitRandomPhrase) { - word = Helper::removePunctuation(word); + word = StringHelper::removePunctuation(word); if (word == "{abbreviation}") { word = abbreviation(); diff --git a/src/modules/hacker/HackerTest.cpp b/src/modules/hacker/HackerTest.cpp index f6f4aac5..1b1a5df5 100644 --- a/src/modules/hacker/HackerTest.cpp +++ b/src/modules/hacker/HackerTest.cpp @@ -9,9 +9,7 @@ #include "data/Adjectives.h" #include "data/Ingverbs.h" #include "data/Nouns.h" -#include "data/Phrases.h" #include "data/Verbs.h" -#include "faker-cxx/Helper.h" using namespace ::testing; using namespace faker; diff --git a/src/modules/helper/Helper.cpp b/src/modules/helper/Helper.cpp index a7686476..74b400e4 100644 --- a/src/modules/helper/Helper.cpp +++ b/src/modules/helper/Helper.cpp @@ -1,11 +1,9 @@ #include "faker-cxx/Helper.h" #include -#include #include #include #include -#include #include #include "../src/common/LuhnCheck.h" @@ -107,26 +105,4 @@ std::string Helper::regexpStyleStringParse(const std::string& input) return string; } - -// helper functions for phrases -std::vector Helper::splitIntoWords(const std::string& input) -{ - std::istringstream iss(input); - std::vector words(std::istream_iterator{iss}, std::istream_iterator()); - return words; -} - -// Function to check if a character is punctuation -bool Helper::isPunctuation(char c) -{ - return (c == '.' || c == ',' || c == '!' || c == '?' || c == ';' || c == ':'); -} - -// Function to remove punctuation from a word -std::string Helper::removePunctuation(const std::string& word) -{ - std::string result = word; - result.erase(std::remove_if(result.begin(), result.end(), isPunctuation), result.end()); - return result; -} } diff --git a/src/modules/helper/HelperTest.cpp b/src/modules/helper/HelperTest.cpp index e851719e..b58053a1 100644 --- a/src/modules/helper/HelperTest.cpp +++ b/src/modules/helper/HelperTest.cpp @@ -107,35 +107,4 @@ TEST_F(HelperTest, MaybeDouble) result = Helper::maybe([]() { return 3.14; }, lowProbability); EXPECT_EQ(result, 0.0); } - -TEST_F(HelperTest, IsPunctuation) -{ - std::string punctuation = ".,;:!?"; - for (char c : punctuation) - { - EXPECT_TRUE(Helper::isPunctuation(c)); - } - - std::string notPunctuation = "abc123"; - for (char c : notPunctuation) - { - EXPECT_FALSE(Helper::isPunctuation(c)); - } -} - -TEST_F(HelperTest, RemovePunctuation) -{ - std::string input = "Hello, World!"; - std::string result = Helper::removePunctuation(input); - EXPECT_EQ(result, "Hello World"); -} - -TEST_F(HelperTest, SplitIntoWords) -{ - std::string input = "Hello World!"; - std::vector result = Helper::splitIntoWords(input); - EXPECT_EQ(result.size(), 2); - EXPECT_EQ(result[0], "Hello"); - EXPECT_EQ(result[1], "World!"); -} } diff --git a/src/modules/sport/Sport.cpp b/src/modules/sport/Sport.cpp new file mode 100644 index 00000000..253eb7d1 --- /dev/null +++ b/src/modules/sport/Sport.cpp @@ -0,0 +1,39 @@ +#include "faker-cxx/Sport.h" +#include "faker-cxx/Helper.h" + + +#include + +#include "data/FemaleAthletes.h" +#include "data/MaleAthletes.h" +#include "data/SoccerTeams.h" +#include "data/SportEvents.h" +#include "data/SportNames.h" + +namespace faker +{ +std::string Sport::sport() +{ + return Helper::arrayElement(sportNames); +} + +std::string Sport::soccerTeam() +{ + return Helper::arrayElement(soccerTeams); +} + +std::string Sport::maleAthlete() +{ + return Helper::arrayElement(maleAthletes); +} + +std::string Sport::femaleAthlete() +{ + return Helper::arrayElement(femaleAthletes); +} + +std::string Sport::sportEvent() +{ + return Helper::arrayElement(sportEvents); +} +} diff --git a/src/modules/sport/SportTest.cpp b/src/modules/sport/SportTest.cpp new file mode 100644 index 00000000..634cbfed --- /dev/null +++ b/src/modules/sport/SportTest.cpp @@ -0,0 +1,60 @@ +#include "faker-cxx/Sport.h" + +#include +#include + +#include "gtest/gtest.h" + +#include "data/FemaleAthletes.h" +#include "data/MaleAthletes.h" +#include "data/SoccerTeams.h" +#include "data/SportEvents.h" +#include "data/SportNames.h" + +using namespace ::testing; +using namespace faker; + +class SportTest : public Test +{ +public: +}; + +TEST_F(SportTest, shouldGenerateSport) +{ + std::string generatedSport = Sport::sport(); + + ASSERT_TRUE(std::ranges::any_of(sportNames, + [generatedSport](const std::string& sport) { return sport == generatedSport; })); +} + +TEST_F(SportTest, shouldGenerateSoccerTeam) +{ + std::string generatedSoccerTeam = Sport::soccerTeam(); + + ASSERT_TRUE(std::ranges::any_of(soccerTeams, [generatedSoccerTeam](const std::string& soccerTeam) + { return soccerTeam == generatedSoccerTeam; })); +} + +TEST_F(SportTest, shouldGenerateSportEvent) +{ + std::string generatedSportEvent = Sport::sportEvent(); + + ASSERT_TRUE(std::ranges::any_of(sportEvents, [generatedSportEvent](const std::string& sportEvent) + { return sportEvent == generatedSportEvent; })); +} + +TEST_F(SportTest, shouldGenerateMaleAthlete) +{ + std::string generatedMaleAthlete = Sport::maleAthlete(); + + ASSERT_TRUE(std::ranges::any_of(maleAthletes, [generatedMaleAthlete](const std::string& maleAthlete) + { return maleAthlete == generatedMaleAthlete; })); +} + +TEST_F(SportTest, shouldGenerateFemaleAthlete) +{ + std::string generatedFemaleAthlete = Sport::femaleAthlete(); + + ASSERT_TRUE(std::ranges::any_of(femaleAthletes, [generatedFemaleAthlete](const std::string& femaleAthlete) + { return femaleAthlete == generatedFemaleAthlete; })); +} diff --git a/src/modules/sport/data/FemaleAthletes.h b/src/modules/sport/data/FemaleAthletes.h new file mode 100644 index 00000000..4fa90fc9 --- /dev/null +++ b/src/modules/sport/data/FemaleAthletes.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector femaleAthletes = { + "Serena Williams", "Simone Biles", "Mia Hamm", "Ronda Rousey", "Lindsey Vonn", "Alex Morgan", + "Martina Navratilova", "Jackie Joyner-Kersee", "Nadia Comăneci", "Steffi Graf", +}; +} diff --git a/src/modules/sport/data/MaleAthletes.h b/src/modules/sport/data/MaleAthletes.h new file mode 100644 index 00000000..d2514356 --- /dev/null +++ b/src/modules/sport/data/MaleAthletes.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector maleAthletes = { + "Lionel Messi", "Cristiano Ronaldo", "LeBron James", "Usain Bolt", "Michael Phelps", + "Roger Federer", "Kobe Bryant", "Tom Brady", "Muhammad Ali", "Michael Jordan", +}; +} diff --git a/src/modules/sport/data/SoccerTeams.h b/src/modules/sport/data/SoccerTeams.h new file mode 100644 index 00000000..c817b318 --- /dev/null +++ b/src/modules/sport/data/SoccerTeams.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector soccerTeams{ + "FC Barcelona", "Real Madrid CF", "Manchester United FC", "Liverpool FC", "FC Bayern Munich", + "AC Milan", "Inter Milan", "Juventus FC", "Paris Saint-Germain FC", "Chelsea FC", +}; +} diff --git a/src/modules/sport/data/SportEvents.h b/src/modules/sport/data/SportEvents.h new file mode 100644 index 00000000..f273b3da --- /dev/null +++ b/src/modules/sport/data/SportEvents.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector sportEvents = { + "World Cup", + "Olympics", + "Super Bowl", + "World Athletics Championship", + "UEFA Champions League", + "NBA Finals", + "Wimbledon", + "ICC Cricket World Cup", + "The Masters", + "Rugby World Cup", +}; +} diff --git a/src/modules/sport/data/SportNames.h b/src/modules/sport/data/SportNames.h new file mode 100644 index 00000000..b3ffe1ec --- /dev/null +++ b/src/modules/sport/data/SportNames.h @@ -0,0 +1,12 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector sportNames = { + "Soccer", "Cricket", "Basketball", "Tennis", "Volleyball", "Table Tennis", + "Golf", "Baseball", "American Football", "Rugby", +}; +} From 277fc5024c010951a221bb83fb9671838343c0e3 Mon Sep 17 00:00:00 2001 From: sandeshkhadka <84300784+sandeshkhadka@users.noreply.github.com> Date: Tue, 10 Oct 2023 22:36:19 +0545 Subject: [PATCH 08/28] add hsl-function to color module (#199) Co-authored-by: sandeshkhadka --- include/faker-cxx/Color.h | 12 ++++++++++ src/modules/color/Color.cpp | 22 +++++++++++++++++++ src/modules/color/ColorTest.cpp | 39 +++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/include/faker-cxx/Color.h b/include/faker-cxx/Color.h index 987d6cfc..03b2b238 100644 --- a/include/faker-cxx/Color.h +++ b/include/faker-cxx/Color.h @@ -50,5 +50,17 @@ class Color */ static std::string hex(HexCasing casing = HexCasing::Lower, HexPrefix prefix = HexPrefix::Hash, bool includeAlpha = false); + + /** + * @brief Returns an HSL color. + * + * @param includeAlpha Adds an alpha value to the color (HSLA). Defaults to `false`. + * @returns HSL color formatted with hsl(X,X,X) or hsla(X,X,X,X). + * @code + * Color::hsl() // "hsl(0, 20, 100)" + * Color::hsl(true) // "hsla(0, 0, 100, 0.50)" + * @endcode + */ + static std::string hsl(bool includeAlpha = false); }; } diff --git a/src/modules/color/Color.cpp b/src/modules/color/Color.cpp index 3aa0b0b1..d156d6b5 100644 --- a/src/modules/color/Color.cpp +++ b/src/modules/color/Color.cpp @@ -46,4 +46,26 @@ std::string Color::hex(HexCasing casing, HexPrefix prefix, bool includeAlpha) return String::hexadecimal(6, casing, prefix); } +std::string Color::hsl(bool includeAlpha) +{ + const std::integral auto hue = Number::integer(360); + const std::integral auto saturation = Number::integer(100); + const std::integral auto lightness = Number::integer(100); + + if (!includeAlpha) + { + return fmt::format("hsl({}, {}, {})", hue, saturation, lightness); + } + + const std::floating_point auto alpha = Number::decimal(1); + + std::stringstream ss; + ss << std::fixed; + ss.precision(2); + ss << alpha; + const auto formattedAlpha = ss.str(); + + return fmt::format("hsla({}, {}, {}, {})", hue, saturation, lightness, formattedAlpha); +} + } diff --git a/src/modules/color/ColorTest.cpp b/src/modules/color/ColorTest.cpp index 8682c969..e4d11a5f 100644 --- a/src/modules/color/ColorTest.cpp +++ b/src/modules/color/ColorTest.cpp @@ -88,3 +88,42 @@ TEST_F(ColorTest, shouldGenerateHexColorWithAlpha) ASSERT_TRUE(std::ranges::any_of(hexNumber, [hexNumber](char hexNumberCharacter) { return hexUpperCharacters.find(hexNumberCharacter) != std::string::npos; })); } + +TEST_F(ColorTest, shouldGenerateHslWithoutAlpha) +{ + const auto generatedHslColor = faker::Color::hsl(); + const auto hslValues = faker::StringHelper::split(generatedHslColor.substr(4, generatedHslColor.size() - 1), " "); + + int hue, staturation, lightness; + + std::from_chars(hslValues[0].data(), hslValues[0].data() + hslValues[0].size(), hue); + std::from_chars(hslValues[1].data(), hslValues[1].data() + hslValues[1].size(), staturation); + std::from_chars(hslValues[2].data(), hslValues[2].data() + hslValues[2].size(), lightness); + + ASSERT_TRUE(generatedHslColor.starts_with("hsl(")); + ASSERT_TRUE(generatedHslColor.ends_with(")")); + ASSERT_TRUE(hue >= 0 && hue <= 360); + ASSERT_TRUE(staturation >= 0 && staturation <= 100); + ASSERT_TRUE(lightness >= 0 && lightness <= 100); +} + +TEST_F(ColorTest, shouldGenerateHslWithAlpha) +{ + const auto generatedHslaColor = faker::Color::hsl(true); + const auto hslValues = faker::StringHelper::split(generatedHslaColor.substr(5, generatedHslaColor.size() - 1), " "); + + int hue, staturation, lightness; + double alpha; + + std::from_chars(hslValues[0].data(), hslValues[0].data() + hslValues[0].size(), hue); + std::from_chars(hslValues[1].data(), hslValues[1].data() + hslValues[1].size(), staturation); + std::from_chars(hslValues[2].data(), hslValues[2].data() + hslValues[2].size(), lightness); + std::from_chars(hslValues[3].data(), hslValues[3].data() + hslValues[3].size(), alpha); + + ASSERT_TRUE(generatedHslaColor.starts_with("hsla(")); + ASSERT_TRUE(generatedHslaColor.ends_with(")")); + ASSERT_TRUE(hue >= 0 && hue <= 360); + ASSERT_TRUE(staturation >= 0 && staturation <= 100); + ASSERT_TRUE(lightness >= 0 && lightness <= 100); + ASSERT_TRUE(alpha >= 0 && alpha <= 1); +} From 144829b2c7a575f93523a9b6d5cf7ff0cf20a211 Mon Sep 17 00:00:00 2001 From: sandeshkhadka <84300784+sandeshkhadka@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:32:50 +0545 Subject: [PATCH 09/28] add missing iomanip header file in Date.cpp (#201) required for std::put_time function --- src/modules/date/Date.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/date/Date.cpp b/src/modules/date/Date.cpp index 72d96d0d..abd28328 100644 --- a/src/modules/date/Date.cpp +++ b/src/modules/date/Date.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "data/MonthNames.h" #include "data/WeekdayNames.h" @@ -30,7 +31,8 @@ std::string betweenDate(const auto& from, const auto& to) { if (from > to) { - throw std::runtime_error{fmt::format("Start date is greater than end date. {{from: {}, to: {}}}", serializeTimePoint(from),serializeTimePoint(to))}; + throw std::runtime_error{fmt::format("Start date is greater than end date. {{from: {}, to: {}}}", + serializeTimePoint(from), serializeTimePoint(to))}; } const auto size = std::chrono::duration_cast(to - from).count(); From f98b747979592518cae3836a7c58455b446d0ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Tue, 10 Oct 2023 23:32:38 +0200 Subject: [PATCH 10/28] Add macos build github workflow --- .github/workflows/macos-clang-build | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/macos-clang-build diff --git a/.github/workflows/macos-clang-build b/.github/workflows/macos-clang-build new file mode 100644 index 00000000..48f16f74 --- /dev/null +++ b/.github/workflows/macos-clang-build @@ -0,0 +1,29 @@ +name: macos-clang + +on: + push: + branches: + - 'main' + pull_request: + +env: + BUILD_TYPE: Debug + +jobs: + build: + runs-on: macos-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Configure CMake + run: | + cmake -B ${{github.workspace}}/build \ + -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ + -DCMAKE_CXX_COMPILER=/usr/bin/clang++ + + - name: Build + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} From 5fbbd543fbd006d38b5f520f684588934366a670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Tue, 10 Oct 2023 23:32:57 +0200 Subject: [PATCH 11/28] Rename macos-clang-build to macos-clang-build.yml --- .github/workflows/{macos-clang-build => macos-clang-build.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{macos-clang-build => macos-clang-build.yml} (100%) diff --git a/.github/workflows/macos-clang-build b/.github/workflows/macos-clang-build.yml similarity index 100% rename from .github/workflows/macos-clang-build rename to .github/workflows/macos-clang-build.yml From 7b87f9df4a3d7fe3b8d9a00d9e454618d2c30bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 00:00:33 +0200 Subject: [PATCH 12/28] add installing clang16 on macos workflow --- .github/workflows/macos-clang-build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/macos-clang-build.yml b/.github/workflows/macos-clang-build.yml index 48f16f74..c48700be 100644 --- a/.github/workflows/macos-clang-build.yml +++ b/.github/workflows/macos-clang-build.yml @@ -14,6 +14,9 @@ jobs: runs-on: macos-latest steps: + - name: Install clang + run: brew install llvm@16 && echo 'export PATH="/opt/homebrew/opt/llvm@16/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc + - name: Checkout uses: actions/checkout@v3 with: @@ -23,7 +26,7 @@ jobs: run: | cmake -B ${{github.workspace}}/build \ -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ - -DCMAKE_CXX_COMPILER=/usr/bin/clang++ + -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm@16/bin/clang++ - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} From dbbd48158caef3707eeb569a07fc4bdafdcf66e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 00:24:58 +0200 Subject: [PATCH 13/28] Update macos-clang-build.yml --- .github/workflows/macos-clang-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos-clang-build.yml b/.github/workflows/macos-clang-build.yml index c48700be..0b9a822b 100644 --- a/.github/workflows/macos-clang-build.yml +++ b/.github/workflows/macos-clang-build.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Install clang - run: brew install llvm@16 && echo 'export PATH="/opt/homebrew/opt/llvm@16/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc + run: brew install llvm@16 && echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> /Users/runner/.bash_profile && source /Users/runner/.bash_profile && which clang++ - name: Checkout uses: actions/checkout@v3 @@ -26,7 +26,7 @@ jobs: run: | cmake -B ${{github.workspace}}/build \ -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ - -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm@16/bin/clang++ + -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} From c66c0159f5ece88320306654b5e946b869de31f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 09:42:41 +0200 Subject: [PATCH 14/28] fix implicit conversion in color tests --- src/modules/color/ColorTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/color/ColorTest.cpp b/src/modules/color/ColorTest.cpp index e4d11a5f..1b34bd60 100644 --- a/src/modules/color/ColorTest.cpp +++ b/src/modules/color/ColorTest.cpp @@ -118,7 +118,7 @@ TEST_F(ColorTest, shouldGenerateHslWithAlpha) std::from_chars(hslValues[0].data(), hslValues[0].data() + hslValues[0].size(), hue); std::from_chars(hslValues[1].data(), hslValues[1].data() + hslValues[1].size(), staturation); std::from_chars(hslValues[2].data(), hslValues[2].data() + hslValues[2].size(), lightness); - std::from_chars(hslValues[3].data(), hslValues[3].data() + hslValues[3].size(), alpha); + std::from_chars(hslValues[3].data(), hslValues[3].data() + hslValues[3].size(), static_cast(alpha)); ASSERT_TRUE(generatedHslaColor.starts_with("hsla(")); ASSERT_TRUE(generatedHslaColor.ends_with(")")); From 12f5251f2d957f5a2cc1debb2c3eae1cf406e255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 09:54:24 +0200 Subject: [PATCH 15/28] Update ColorTest.cpp --- src/modules/color/ColorTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/color/ColorTest.cpp b/src/modules/color/ColorTest.cpp index 1b34bd60..e4d11a5f 100644 --- a/src/modules/color/ColorTest.cpp +++ b/src/modules/color/ColorTest.cpp @@ -118,7 +118,7 @@ TEST_F(ColorTest, shouldGenerateHslWithAlpha) std::from_chars(hslValues[0].data(), hslValues[0].data() + hslValues[0].size(), hue); std::from_chars(hslValues[1].data(), hslValues[1].data() + hslValues[1].size(), staturation); std::from_chars(hslValues[2].data(), hslValues[2].data() + hslValues[2].size(), lightness); - std::from_chars(hslValues[3].data(), hslValues[3].data() + hslValues[3].size(), static_cast(alpha)); + std::from_chars(hslValues[3].data(), hslValues[3].data() + hslValues[3].size(), alpha); ASSERT_TRUE(generatedHslaColor.starts_with("hsla(")); ASSERT_TRUE(generatedHslaColor.ends_with(")")); From 734edcb0211cdc543c938dffc748b69a0bf5a188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 10:16:27 +0200 Subject: [PATCH 16/28] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 963cf597..3c8dcee0 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The library is heavily inspired by [Faker.js](https://github.com/faker-js/faker) Dependencies: - GTest: building library tests (can be disabled by setting CMake flag BUILD_FAKER_TESTS=OFF) - - fmt: formatting, cannot use standard lib because apple clang does not support this feature + - fmt: formatting ## 🎯 Goal From 11cc9266f208b6865f00e273b4765b1c27def3fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 10:23:48 +0100 Subject: [PATCH 17/28] fix apple clang build (#202) Co-authored-by: Michal Cieslar --- src/modules/color/ColorTest.cpp | 5 +++-- src/modules/commerce/CommerceTest.cpp | 4 ++-- src/modules/finance/FinanceTest.cpp | 5 +++-- src/modules/location/LocationTest.cpp | 16 ++++++++-------- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/modules/color/ColorTest.cpp b/src/modules/color/ColorTest.cpp index e4d11a5f..7aa74d13 100644 --- a/src/modules/color/ColorTest.cpp +++ b/src/modules/color/ColorTest.cpp @@ -113,12 +113,13 @@ TEST_F(ColorTest, shouldGenerateHslWithAlpha) const auto hslValues = faker::StringHelper::split(generatedHslaColor.substr(5, generatedHslaColor.size() - 1), " "); int hue, staturation, lightness; - double alpha; std::from_chars(hslValues[0].data(), hslValues[0].data() + hslValues[0].size(), hue); std::from_chars(hslValues[1].data(), hslValues[1].data() + hslValues[1].size(), staturation); std::from_chars(hslValues[2].data(), hslValues[2].data() + hslValues[2].size(), lightness); - std::from_chars(hslValues[3].data(), hslValues[3].data() + hslValues[3].size(), alpha); + + auto offset = hslValues[3].size(); + const auto alpha = std::stod(hslValues[3].data(), &offset); ASSERT_TRUE(generatedHslaColor.starts_with("hsla(")); ASSERT_TRUE(generatedHslaColor.ends_with(")")); diff --git a/src/modules/commerce/CommerceTest.cpp b/src/modules/commerce/CommerceTest.cpp index 456e3094..ed49b524 100644 --- a/src/modules/commerce/CommerceTest.cpp +++ b/src/modules/commerce/CommerceTest.cpp @@ -29,8 +29,8 @@ TEST_F(CommerceTest, shouldGeneratePrice) { const auto generatedPrice = Commerce::price(100, 10000); - auto priceAsFloat{0.0f}; - std::from_chars(generatedPrice.data(), generatedPrice.data() + generatedPrice.size(), priceAsFloat); + auto offset = generatedPrice.size(); + const auto priceAsFloat = std::stof(generatedPrice.data(), &offset); const auto generatedPriceElements = StringHelper::split(generatedPrice, "."); diff --git a/src/modules/finance/FinanceTest.cpp b/src/modules/finance/FinanceTest.cpp index 19854372..e4a30298 100644 --- a/src/modules/finance/FinanceTest.cpp +++ b/src/modules/finance/FinanceTest.cpp @@ -150,9 +150,10 @@ TEST_F(FinanceTest, shouldGenerateAccountType) TEST_F(FinanceTest, shouldGenerateAmount) { - auto amountAsFloat{0.0f}; const auto generatedAmount = Finance::amount(); - std::from_chars(generatedAmount.data(), generatedAmount.data() + generatedAmount.size(), amountAsFloat); + + auto offset = generatedAmount.size(); + const auto amountAsFloat = std::stof(generatedAmount.data(), &offset); const auto generatedAmountParts = StringHelper::split(generatedAmount, "."); diff --git a/src/modules/location/LocationTest.cpp b/src/modules/location/LocationTest.cpp index 40f99e7a..51dfd77c 100644 --- a/src/modules/location/LocationTest.cpp +++ b/src/modules/location/LocationTest.cpp @@ -311,8 +311,8 @@ TEST_F(LocationTest, shouldGenerateLatitude) { const auto latitude = Location::latitude(); - auto latitudeAsFloat{0.0f}; - std::from_chars(latitude.data(), latitude.data() + latitude.size(), latitudeAsFloat); + auto offset = latitude.size(); + const auto latitudeAsFloat = std::stof(latitude.data(), &offset); const auto generatedLatitudeParts = StringHelper::split(latitude, "."); @@ -326,8 +326,8 @@ TEST_F(LocationTest, shouldGenerateLatitudeWithSpecifiedPrecision) { const auto latitude = Location::latitude(Precision::ThreeDp); - auto latitudeAsFloat{0.0f}; - std::from_chars(latitude.data(), latitude.data() + latitude.size(), latitudeAsFloat); + auto offset = latitude.size(); + const auto latitudeAsFloat = std::stof(latitude.data(), &offset); const auto generatedLatitudeParts = StringHelper::split(latitude, "."); @@ -341,8 +341,8 @@ TEST_F(LocationTest, shouldGenerateLongitude) { const auto longitude = Location::longitude(); - auto longitudeAsFloat{0.0f}; - std::from_chars(longitude.data(), longitude.data() + longitude.size(), longitudeAsFloat); + auto offset = longitude.size(); + const auto longitudeAsFloat = std::stof(longitude.data(), &offset); const auto generatedLongitudeParts = StringHelper::split(longitude, "."); @@ -356,8 +356,8 @@ TEST_F(LocationTest, shouldGenerateLongitudeWithSpecifiedPrecision) { const auto longitude = Location::longitude(Precision::SixDp); - auto longitudeAsFloat{0.0f}; - std::from_chars(longitude.data(), longitude.data() + longitude.size(), longitudeAsFloat); + auto offset = longitude.size(); + const auto longitudeAsFloat = std::stof(longitude.data(), &offset); const auto generatedLongitudeParts = StringHelper::split(longitude, "."); From 58514596d57c28d04d37148e087ec3d9c0a04bfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:25:43 +0200 Subject: [PATCH 18/28] add test step in macos pipeline --- .github/workflows/macos-clang-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/macos-clang-build.yml b/.github/workflows/macos-clang-build.yml index 0b9a822b..f3c58270 100644 --- a/.github/workflows/macos-clang-build.yml +++ b/.github/workflows/macos-clang-build.yml @@ -30,3 +30,6 @@ jobs: - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - working-directory: build/ + run: ctest -C Debug --output-on-failure From 20cb6c760cee2f5283e18a2d3432a6230ff00ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:27:48 +0200 Subject: [PATCH 19/28] add macos clang build badge --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c8dcee0..559c91cf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@

C++ Faker

-[![clang](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-clang-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-clang-build.yml?query=branch%3Amain) +[![clang++](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-clang-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-clang-build.yml?query=branch%3Amain) +[![apple clang++](https://github.com/cieslarmichal/faker-cxx/actions/workflows/macos-clang-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/macos-clang-build.yml?query=branch%3Amain) [![g++](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-gxx-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-gxx-build.yml?query=branch%3Amain) [![msvc](https://github.com/cieslarmichal/faker-cxx/actions/workflows/windows-msvc-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/windows-msvc-build.yml?query=branch%3Amain) [![codecov](https://codecov.io/github/cieslarmichal/faker-cxx/branch/main/graph/badge.svg?token=0RTV4JFH2U)](https://codecov.io/github/cieslarmichal/faker-cxx) From 04b312069bfd170eb53419b81de03cfd0aeef98a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:28:15 +0200 Subject: [PATCH 20/28] delete license badge --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 559c91cf..ebfe11db 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ [![g++](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-gxx-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/linux-gxx-build.yml?query=branch%3Amain) [![msvc](https://github.com/cieslarmichal/faker-cxx/actions/workflows/windows-msvc-build.yml/badge.svg?branch=main)](https://github.com/cieslarmichal/faker-cxx/actions/workflows/windows-msvc-build.yml?query=branch%3Amain) [![codecov](https://codecov.io/github/cieslarmichal/faker-cxx/branch/main/graph/badge.svg?token=0RTV4JFH2U)](https://codecov.io/github/cieslarmichal/faker-cxx) -[![GitHub](https://img.shields.io/github/license/cieslarmichal/faker-cxx)](https://github.com/cieslarmichal/faker-cxx/blob/main/LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![Discord Shield](https://img.shields.io/badge/discord-join-blue)](https://discord.gg/h2ur8H6mK6) From 46004f74e1b79b4ed046ec5143584dc125e33526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:32:23 +0200 Subject: [PATCH 21/28] rename linux clang github workflow --- .github/workflows/linux-clang-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux-clang-build.yml b/.github/workflows/linux-clang-build.yml index 80d99969..9848f94b 100644 --- a/.github/workflows/linux-clang-build.yml +++ b/.github/workflows/linux-clang-build.yml @@ -1,4 +1,4 @@ -name: clang +name: linux-clang++ on: push: From ff85f9be93ddb09ff36f4b9a65a6050ac7f19d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:32:56 +0200 Subject: [PATCH 22/28] rename macos clang github workflow --- .github/workflows/macos-clang-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos-clang-build.yml b/.github/workflows/macos-clang-build.yml index f3c58270..0b9149fc 100644 --- a/.github/workflows/macos-clang-build.yml +++ b/.github/workflows/macos-clang-build.yml @@ -1,4 +1,4 @@ -name: macos-clang +name: macos-clang++ on: push: From 7faa06c3039c76898dac8936a9c1cc27089920f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:33:58 +0200 Subject: [PATCH 23/28] Update linux-clang-build.yml --- .github/workflows/linux-clang-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux-clang-build.yml b/.github/workflows/linux-clang-build.yml index 9848f94b..0152565c 100644 --- a/.github/workflows/linux-clang-build.yml +++ b/.github/workflows/linux-clang-build.yml @@ -1,4 +1,4 @@ -name: linux-clang++ +name: clang++ on: push: From 39567b0297c0ef64452f163b28dec851a43b8e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:34:22 +0200 Subject: [PATCH 24/28] Update macos-clang-build.yml --- .github/workflows/macos-clang-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos-clang-build.yml b/.github/workflows/macos-clang-build.yml index 0b9149fc..2655eca8 100644 --- a/.github/workflows/macos-clang-build.yml +++ b/.github/workflows/macos-clang-build.yml @@ -1,4 +1,4 @@ -name: macos-clang++ +name: apple-clang++ on: push: From 9fd79f63379192087a94aa74ba44f202aa35a60d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Cie=C5=9Blar?= Date: Wed, 11 Oct 2023 11:43:50 +0200 Subject: [PATCH 25/28] fix test step in macos clang workflow --- .github/workflows/macos-clang-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos-clang-build.yml b/.github/workflows/macos-clang-build.yml index 2655eca8..f73fb135 100644 --- a/.github/workflows/macos-clang-build.yml +++ b/.github/workflows/macos-clang-build.yml @@ -32,4 +32,4 @@ jobs: run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - working-directory: build/ - run: ctest -C Debug --output-on-failure + run: ./faker-cxx-UT From 310588135e49d992abd8661d154078cbe5a11a45 Mon Sep 17 00:00:00 2001 From: sandeshkhadka <84300784+sandeshkhadka@users.noreply.github.com> Date: Wed, 11 Oct 2023 22:57:08 +0545 Subject: [PATCH 26/28] Feature/nepali person (#203) * add nepalese people data * test for nepalese people data --- include/faker-cxx/types/Language.h | 9 ++++--- src/modules/person/Person.cpp | 5 ++++ src/modules/person/PersonTest.cpp | 16 ++++++++---- .../data/nepalese/NepaleseFirstNamesFemales.h | 25 +++++++++++++++++++ .../data/nepalese/NepaleseFirstNamesMales.h | 25 +++++++++++++++++++ .../person/data/nepalese/NepaleseLastNames.h | 20 +++++++++++++++ 6 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 src/modules/person/data/nepalese/NepaleseFirstNamesFemales.h create mode 100644 src/modules/person/data/nepalese/NepaleseFirstNamesMales.h create mode 100644 src/modules/person/data/nepalese/NepaleseLastNames.h diff --git a/include/faker-cxx/types/Language.h b/include/faker-cxx/types/Language.h index acffd916..045c198b 100644 --- a/include/faker-cxx/types/Language.h +++ b/include/faker-cxx/types/Language.h @@ -15,14 +15,17 @@ enum class Language Romanian, Hindi, Finnish, + Nepali, }; inline std::string toString(Language language) { std::map languageToStringMapping{ - {Language::English, "English"} , {Language::Polish, "Polish"}, {Language::Italian, "Italian"}, - {Language::French, "French"} , {Language::German, "German"}, {Language::Russian, "Russian"}, - {Language::Romanian, "Romanian"}, {Language::Hindi, "Hindi"}, {Language::Finnish, "Finnish"}}; + {Language::English, "English"}, {Language::Polish, "Polish"}, {Language::Italian, "Italian"}, + {Language::French, "French"}, {Language::German, "German"}, {Language::Russian, "Russian"}, + {Language::Romanian, "Romanian"}, {Language::Hindi, "Hindi"}, {Language::Finnish, "Finnish"}, + {Language::Nepali, "Nepali"}, + }; return languageToStringMapping.at(language); } diff --git a/src/modules/person/Person.cpp b/src/modules/person/Person.cpp index b0b020ca..ccb97615 100644 --- a/src/modules/person/Person.cpp +++ b/src/modules/person/Person.cpp @@ -22,6 +22,9 @@ #include "data/italian/ItalianFirstNamesMales.h" #include "data/italian/ItalianLastNames.h" #include "data/JobTitles.h" +#include "data/nepalese/NepaleseFirstNamesFemales.h" +#include "data/nepalese/NepaleseFirstNamesMales.h" +#include "data/nepalese/NepaleseLastNames.h" #include "data/polish/PolishFirstNamesFemales.h" #include "data/polish/PolishFirstNamesMales.h" #include "data/polish/PolishLastNames.h" @@ -54,6 +57,7 @@ const std::map>> languageToFirs {Language::Romanian, {{Sex::Male, romanianFirstNamesMales}, {Sex::Female, romanianFirstNamesFemales}}}, {Language::Hindi, {{Sex::Male, indianFirstNamesMales}, {Sex::Female, indianFirstNamesFemales}}}, {Language::Finnish, {{Sex::Male, finnishFirstNamesMales}, {Sex::Female, finnishFirstNamesFemales}}}, + {Language::Nepali, {{Sex::Male, nepaleseFirstNamesMales}, {Sex::Female, nepaleseFirstNamesFemales}}}, }; const std::map>> languageToLastNamesMapping{ @@ -66,6 +70,7 @@ const std::map>> languageToLast {Language::Romanian, {{Sex::Male, romanianLastNames}, {Sex::Female, romanianLastNames}}}, {Language::Hindi, {{Sex::Male, indianLastNames}, {Sex::Female, indianLastNames}}}, {Language::Finnish, {{Sex::Male, finnishLastNames}, {Sex::Female, finnishLastNames}}}, + {Language::Nepali, {{Sex::Male, nepaleseLastNames}, {Sex::Female, nepaleseLastNames}}}, }; } diff --git a/src/modules/person/PersonTest.cpp b/src/modules/person/PersonTest.cpp index dab912bb..e58a8113 100644 --- a/src/modules/person/PersonTest.cpp +++ b/src/modules/person/PersonTest.cpp @@ -35,6 +35,9 @@ #include "data/russian/RussianLastNamesFemales.h" #include "data/russian/RussianLastNamesMales.h" #include "src/common/StringHelper.h" +#include "src/modules/person/data/nepalese/NepaleseFirstNamesFemales.h" +#include "src/modules/person/data/nepalese/NepaleseFirstNamesMales.h" +#include "src/modules/person/data/nepalese/NepaleseLastNames.h" using namespace ::testing; using namespace faker; @@ -45,9 +48,10 @@ const auto malePrefix{"Mr."}; const std::vector femalePrefixes{"Ms.", "Miss"}; const std::vector allPrefixes{"Mr.", "Ms.", "Miss"}; -const std::vector languages{Language::English, Language::French, Language::German, - Language::Italian, Language::Polish, Language::Russian, - Language::Romanian, Language::Hindi, Language::Finnish}; +const std::vector languages{ + Language::English, Language::French, Language::German, Language::Italian, Language::Polish, + Language::Russian, Language::Romanian, Language::Hindi, Language::Finnish, Language::Nepali, +}; const std::map>> languageToFirstNamesMapping{ {Language::English, {{Sex::Male, englishFirstNamesMales}, {Sex::Female, englishFirstNamesFemales}}}, @@ -59,6 +63,7 @@ const std::map>> languageToFirs {Language::Romanian, {{Sex::Male, romanianFirstNamesMales}, {Sex::Female, romanianFirstNamesFemales}}}, {Language::Hindi, {{Sex::Male, indianFirstNamesMales}, {Sex::Female, indianFirstNamesFemales}}}, {Language::Finnish, {{Sex::Male, finnishFirstNamesMales}, {Sex::Female, finnishFirstNamesFemales}}}, + {Language::Nepali, {{Sex::Male, nepaleseFirstNamesMales}, {Sex::Female, nepaleseFirstNamesFemales}}}, }; const std::map>> languageToLastNamesMapping{ @@ -71,6 +76,7 @@ const std::map>> languageToLast {Language::Romanian, {{Sex::Male, romanianLastNames}, {Sex::Female, romanianLastNames}}}, {Language::Hindi, {{Sex::Male, indianLastNames}, {Sex::Female, indianLastNames}}}, {Language::Finnish, {{Sex::Male, finnishLastNames}, {Sex::Female, finnishLastNames}}}, + {Language::Nepali, {{Sex::Male, nepaleseLastNames}, {Sex::Female, nepaleseLastNames}}}, }; const std::map generatedTestName{ @@ -78,7 +84,7 @@ const std::map generatedTestName{ {Language::German, "shouldGenerateGermanName"}, {Language::Italian, "shouldGenerateItalianName"}, {Language::Polish, "shouldGeneratePolishName"}, {Language::Russian, "shouldGenerateRussianName"}, {Language::Romanian, "shouldGenerateRomanianName"}, {Language::Hindi, "shouldGenerateIndianName"}, - {Language::Finnish, "shouldGenerateFinnishName"}, + {Language::Finnish, "shouldGenerateFinnishName"}, {Language::Nepali, "shouldGenerateNepaleseName"}, }; } @@ -325,4 +331,4 @@ TEST_F(PersonTest, shouldGenerateHobby) ASSERT_TRUE( std::ranges::any_of(hobbies, [generatedHobby](const std::string& hobby) { return hobby == generatedHobby; })); -} \ No newline at end of file +} diff --git a/src/modules/person/data/nepalese/NepaleseFirstNamesFemales.h b/src/modules/person/data/nepalese/NepaleseFirstNamesFemales.h new file mode 100644 index 00000000..76c28bf3 --- /dev/null +++ b/src/modules/person/data/nepalese/NepaleseFirstNamesFemales.h @@ -0,0 +1,25 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector nepaleseFirstNamesFemales = { + + "Sita", "Gita", "Shristi", "Anita", "Priya", "Sabina", "Nisha", "Saraswati", + "Asha", "Binita", "Deepa", "Kamala", "Laxmi", "Rina", "Bishnu", "Meera", + "Sushma", "Pooja", "Rajani", "Sunita", "Nirmala", "Rita", "Sumitra", "Usha", + "Manisha", "Rekha", "Sarita", "Kusum", "Puja", "Sanjana", "Smriti", "Pratima", + "Sabita", "Kanchan", "Nandita", "Anjali", "Harsha", "Sangita", "Sushmita", "Suman", + "Sweta", "Sadhana", "Anju", "Nabina", "Bhawana", "Srijana", "Nikita", "Aarati", + "Anita", "Nitu", "Sima", "Sita", "Goma", "Sarala", "Sarika", "Sabita", + "Madhavi", "Indira", "Ankita", "Bhumika", "Neha", "Ashmita", "Subiksha", "Supriya", + "Urmila", "Shova", "Shruti", "Ruby", "Samjhana", "Prakriti", "Ashika", "Reecha", + "Yamuna", "Sunaina", "Sujata", "Muna", "Sulochana", "Jamuna", "Anshu", "Sarala", + "Sarika", "Puspa", "Manju", "Sadhana", "Pabitra", "Usha", "Manita", "Rekha", + "Swastika", "Priyanka", "Sharmila", "Manju", "Sudha", "Laxmi", "Sunita", "Tulsi", + "Usha", "Saraswati", "Rachana" + +}; +} diff --git a/src/modules/person/data/nepalese/NepaleseFirstNamesMales.h b/src/modules/person/data/nepalese/NepaleseFirstNamesMales.h new file mode 100644 index 00000000..d1e65ef2 --- /dev/null +++ b/src/modules/person/data/nepalese/NepaleseFirstNamesMales.h @@ -0,0 +1,25 @@ +#pragma once + +#include +#include + +namespace faker +{ + +const std::vector nepaleseFirstNamesMales = { + + "Sijan", "Prabesh", "Niwang", "Nabin", "Sanjok", "Bibek", "Sujal", "Sagar", "Mukunda", "Arun", + "Nirdesh", "Rabin", "Ramesh", "Manoj", "Bimal", "Anil", "Bipin", "Gopal", "Sunil", "Bikash", + "Sujan", "Sudeep", "Nikhil", "Nishant", "Kiran", "Pramod", "Saroj", "Rajesh", "Dilip", "Sandesh", + "Krishna", "Hari", "Suresh", "Arjun", "Bibash", "Rajiv", "Rajendra", "Bijay", "Aashish", "Raju", + "Sabin", "Keshav", "Rabi", "Sanjeev", "Puspa", "Saroj", "Khem", "Shiva", "Mohan", "Dinesh", + "Rajendra", "Suman", "Ujjwal", "Bhuwan", "Birendra", "Birat", "Lalit", "Bhola", "Pradip", "Nabin", + "Suman", "Shankar", "Laxman", "Sushant", "Roshan", "Buddha", "Kapil", "Rajbir", "Suraj", "Raj Kumar", + "Manish", "Ajay", "Dipak", "Anish", "Sabin", "Prem", "Bijay", "Narayan", "Rajat", "Rishi", + "Yogesh", "Rajendra", "Pawan", "Bhawesh", "Pramod", "Pramod", "Saurav", "Hemant", "Subash", "Sparsha", + "Sabin", "Manohar", "Anuj", "Aryan", "Yogendra", "Nischal", "Samir", "Sanjay", "Bijay", "Rohit", + "Rajat", "Biraj", "Kiran", "Pravin", "Pramod" + +}; + +} diff --git a/src/modules/person/data/nepalese/NepaleseLastNames.h b/src/modules/person/data/nepalese/NepaleseLastNames.h new file mode 100644 index 00000000..360a3121 --- /dev/null +++ b/src/modules/person/data/nepalese/NepaleseLastNames.h @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +namespace faker +{ + +const std::vector nepaleseLastNames = { + "Adhikari", "Bhattarai", "Gurung", "Tamang", "Magar", "Shrestha", "Rai", "Limbu", "Poudel", + "Joshi", "Karki", "Shah", "Thapa", "Rana", "Regmi", "Acharya", "Basnet", "Shrestha", + "Lama", "Khadka", "Maharjan", "Panta", "Sherpa", "Lohani", "Giri", "Gupta", "Mishra", + "Chhetri", "Magar", "Parajuli", "Dhakal", "Malla", "Gyawali", "Pariyar", "Thakuri", "Roka", + "Sapkota", "Waiba", "Pariyar", "Chand", "Subedi", "Ghimere", "Khatri", "Bista", "Bajracharya", + "Dhungana", "Budhathoki", "Yadav", "Rokaya", "Chaudhary", "Pathak", "Pandey", "Baniya", "Devkota", + "Dangol", "Koirala", "Mishra", "Oli", "Sherchan", "Rajbanshi", "Bhandari", "Niroula", "Nepal", + "Nepali" + +}; +} From e838ce6f1e05bb07817a7296137c127b384b6ebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ba=C4=8D=C3=ADk?= <56115264+sebastianbacik@users.noreply.github.com> Date: Fri, 13 Oct 2023 00:09:14 +0200 Subject: [PATCH 27/28] 161 feature/video game module (#204) * Added video game data * Added video game methods * Added tests to video game module * Added new files to cmakelist * Fixed typos --- CMakeLists.txt | 2 + include/faker-cxx/VideoGame.h | 54 + src/modules/videoGame/VideoGame.cpp | 30 + src/modules/videoGame/VideoGameTest.cpp | 50 + src/modules/videoGame/data/GameTitles.h | 3161 ++++++++++++++++++++++ src/modules/videoGame/data/Genres.h | 36 + src/modules/videoGame/data/Platforms.h | 18 + src/modules/videoGame/data/StudioNames.h | 400 +++ 8 files changed, 3751 insertions(+) create mode 100644 include/faker-cxx/VideoGame.h create mode 100644 src/modules/videoGame/VideoGame.cpp create mode 100644 src/modules/videoGame/VideoGameTest.cpp create mode 100644 src/modules/videoGame/data/GameTitles.h create mode 100644 src/modules/videoGame/data/Genres.h create mode 100644 src/modules/videoGame/data/Platforms.h create mode 100644 src/modules/videoGame/data/StudioNames.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 857e7799..064a7af1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ set(FAKER_SOURCES src/modules/movie/Movie.cpp src/modules/hacker/Hacker.cpp src/modules/sport/Sport.cpp + src/modules/videoGame/VideoGame.cpp ) set(FAKER_UT_SOURCES @@ -72,6 +73,7 @@ set(FAKER_UT_SOURCES src/modules/movie/MovieTest.cpp src/modules/hacker/HackerTest.cpp src/modules/sport/SportTest.cpp + src/modules/videoGame/VideoGameTest.cpp ) add_library(${LIBRARY_NAME} ${FAKER_SOURCES}) diff --git a/include/faker-cxx/VideoGame.h b/include/faker-cxx/VideoGame.h new file mode 100644 index 00000000..4c4ace80 --- /dev/null +++ b/include/faker-cxx/VideoGame.h @@ -0,0 +1,54 @@ +#pragma once + +#include + +namespace faker +{ +class VideoGame +{ +public: + /** + * @brief Returns a random video game name. + * + * @returns Video game name. + * + * @code + * Videogame::gameTitle() // "Rayman Arena" + * @endcode + */ + static std::string gameTitle(); + + /** + * @brief Returns a random video game genre. + * + * @returns Video game genre. + * + * @code + * VideoGame::genre() // "Platformer" + * @endcode + */ + static std::string genre(); + + /** + * @brief Returns a random video game platform. + * + * @returns Platform. + * + * @code + * VideoGame::platform() // "Playstation 5" + * @endcode + */ + static std::string platform(); + + /** + * @brief Returns a random video game studio name. + * + * @returns Studio name. + * + * @code + * VideoGame::studioName() // "Activision Blizzard" + * @endcode + */ + static std::string studioName(); +}; +} diff --git a/src/modules/videoGame/VideoGame.cpp b/src/modules/videoGame/VideoGame.cpp new file mode 100644 index 00000000..5c7393f2 --- /dev/null +++ b/src/modules/videoGame/VideoGame.cpp @@ -0,0 +1,30 @@ +#include "faker-cxx/VideoGame.h" + +#include "data/GameTitles.h" +#include "data/Genres.h" +#include "data/Platforms.h" +#include "data/StudioNames.h" +#include "faker-cxx/Helper.h" + +namespace faker +{ +std::string VideoGame::gameTitle() +{ + return Helper::arrayElement(videoGameNames); +} + +std::string VideoGame::genre() +{ + return Helper::arrayElement(genres); +} + +std::string VideoGame::platform() +{ + return Helper::arrayElement(platforms); +} + +std::string VideoGame::studioName() +{ + return Helper::arrayElement(studioNames); +} +} diff --git a/src/modules/videoGame/VideoGameTest.cpp b/src/modules/videoGame/VideoGameTest.cpp new file mode 100644 index 00000000..94541f8b --- /dev/null +++ b/src/modules/videoGame/VideoGameTest.cpp @@ -0,0 +1,50 @@ +#include "faker-cxx/VideoGame.h" + +#include + +#include "gtest/gtest.h" + +#include "data/GameTitles.h" +#include "data/Genres.h" +#include "data/Platforms.h" +#include "data/StudioNames.h" + +using namespace ::testing; +using namespace faker; + +class VideoGameTest : public Test +{ +public: +}; + +TEST_F(VideoGameTest, shouldGenerateGameTitle) +{ + const auto generatedGameTitle = VideoGame::gameTitle(); + + ASSERT_TRUE(std::ranges::any_of(videoGameNames, [generatedGameTitle](const std::string& gameTitle) + { return generatedGameTitle == gameTitle; })); +} + +TEST_F(VideoGameTest, shouldGenerateGenre) +{ + const auto generatedGenre = VideoGame::genre(); + + ASSERT_TRUE(std::ranges::any_of(genres, [generatedGenre](const std::string& genre) + { return generatedGenre == genre; })); +} + +TEST_F(VideoGameTest, shouldGeneratePlatform) +{ + const auto generatedPlatform = VideoGame::platform(); + + ASSERT_TRUE(std::ranges::any_of(platforms, [generatedPlatform](const std::string& platform) + { return generatedPlatform == platform; })); +} + +TEST_F(VideoGameTest, shouldGenerateStudioName) +{ + const auto generatedStudioName = VideoGame::studioName(); + + ASSERT_TRUE(std::ranges::any_of(studioNames, [generatedStudioName](const std::string& studioName) + { return generatedStudioName == studioName; })); +} diff --git a/src/modules/videoGame/data/GameTitles.h b/src/modules/videoGame/data/GameTitles.h new file mode 100644 index 00000000..ef76ad3a --- /dev/null +++ b/src/modules/videoGame/data/GameTitles.h @@ -0,0 +1,3161 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector videoGameNames = {"1552: Tenka Tairan", + "1941: Counter Attack", + "1943 Kai", + "Addams Family, The", + "Advanced V.G.", + "Aero Blasters", + "After Burner II", + "Aldynes", + "Alien Crush", + "Alshark", + "Alzadick", + "Ane-san", + "Aoi Blink", + "Appare! Gateball", + "Astralius", + "Asuka 120% Maxima", + "The Atlas", + "Atomic Robo-Kid Special", + "Aurora Quest: Otaku no Seiza in Another World", + "Auto Crusher Palladium", + "Avenger", + "Andre Panza Kick Boxing", + "Babel", + "Baby Jo the Superhero", + "Bakuden: Unbalanced Zone", + "Ballistix", + "Bari Bari Densetsu", + "Barunba", + "Basted", + "Batman", + "Battle Ace", + "Battle Field '94 in Tokyo Dome", + "Battle Lode Runner", + "Battle Royale", + "Bazar dé Gozarre no Game de Gozāru", + "Benkei Gaiden", + "Beyond Shadowgate", + "Bikkuriman Daijikai", + "Bikkuriman World", + "Bishōjo Senshi Sailor Moon", + "Bishōjo Senshi Sailor Moon Collection", + "Black Hole Assault", + "Blazing Lazers - •GunhedJP", + "Blood Gear", + "Bloody Wolf - •Narazumono Sentō Butai Bloody WolfJP", + "Bomberman", + "Bomberman '93", + "Bomberman '94", + "Bomberman Users Battle", + "Bonanza Bros.", + "Bonk's Adventure - •PC GenjinJP", + "Bonk's Revenge - •PC Genjin 2JP", + "Bonk 3: Bonk's Big Adventure - •PC Genjin 3JP", + "Bonk 3: Bonk's Big Adventure CD-ROM² - •PC Genjin 3JP", + "Bouken Danshaku Don Sun=Heart-hen", + "Boxyboy - •Sōkoban WorldJP", + "Brandish", + "Bravoman - •Chōzetsurin-jin BerabōmanJP", + "Break In", + "Browning", + "Bubblegum Crash", + "Builder Land", + "Bullfight Ring no Hasha", + "Burai", + "Burai II", + "Burning Angels", + "Buster Bros. - •Pomping WorldJP", + "Cadash", + "CAL II", + "Cal III", + "Camp California", + "Card Angels", + "Akumajō Dracula X: Chi no Rondo", + "CD Battle: Hikari no Yūshatachi", + "Champion Wrestler", + "Champions Forever", + "Championship Rally", + "Chase H.Q. - •Taito Chase HQJP", + "Chew Man Fu - •Be BallJP", + "Chibi Maruko-chan: Quiz de Piihira", + "Chiki Chiki Boys", + "Chikuden-ya Toubei", + "China Warrior - •The Kung FuJP", + "Cho Aniki", + "Chō Jikū Yōsai Macross: Eien no Love Song", + "Chō Jikū Yōsai Macross 2036", + "Circus Lido", + "City Hunter", + "Cobra: Kokuryū-Ō no Densetsu", + "Cobra II: Densetsu no Otoko", + "Color Wars", + "Columns", + "Coryoon", + "Cosmic Fantasy 2 - •Cosmic Fantasy 2: Bōken Shōnen VanJP", + "Cosmic Fantasy 3: Bōken Shōnen Rei", + "Cosmic Fantasy 4: Ginga Shōnen Densetsu: Gekitouhen", + "Cosmic Fantasy 4: Ginga Shōnen Densetsu: Totsunyūhen", + "Cosmic Fantasy: Bōken Shōnen Yū", + "Cotton: Fantastic Night Dreams - •CottonJP", + "Cratermaze - •Doraemon: Meikyū DaisakusenJP", + "Cross Wiber: Cyber Combat Police", + "Cyber City Oedo: Kemono no Alignment", + "Cyber Core", + "Cyber Cross", + "Cyber Dodge", + "Cyber Knight", + "Dai Makaimura", + "Daichikun Crisis", + "Daisenpū Custom", + "Daisenpuu", + "Daisenryaku II: Campaign Version", + "Darius Alpha", + "Darius Plus", + "Darkwing Duck", + "Davis Cup Tennis", + "Davis Cup Tennis, The (CD)", + "Dead Moon", + "Dead of the Brain 1 & 2", + "Death Bringer", + "Deep Blue - •Deep Blue: Kaitei ShinwaJP", + "Deko Boko Densetsu", + "Dennō Tenshi: Digital Angel", + "Detana!! TwinBee", + "Devil's Crush - •Devil CrashJP", + "DE.JA", + "Die Hard", + "Digital Champ: Battle Boxing", + "Digital Comic Patlabor: Chapter of Griffon", + "Dōkyūsei", + "Don Doko Don", + "Doraemon: Nobita no Dorabian Night", + "Doraemon: Nobita no Dorabian Night (CD)", + "Double Dragon II: The Revenge", + "Double Dungeons", + "Double Ring - •W-Ring: The Double RingsJP", + "Download", + "Download 2", + "Downtown Nekketsu Kōshinkyoku", + "Downtown Nekketsu Monogatari", + "Dragon Ball Z: Idainaru Son Gokou Densetsu", + "Dragon EGG!", + "Dragon Half", + "Dragon Knight & Graffiti", + "Dragon Knight II", + "Dragon Knight III", + "Dragon Saber", + "Dragon Slayer: The Legend of Heroes - •Dragon Slayer: Eiyū DensetsuJP", + "Dragon Slayer: The Legend of Heroes II", + "Dragon Spirit", + "Dragon's Curse - •Adventure IslandJP", + "Drop Off - •Drop Rock Hora HoraJP", + "Dungeons & Dragons: Order of the Griffon", + "Dungeon Explorer", + "Dungeon Explorer II", + "Dungeon Master - •Dungeon Master: Theron's QuestJP", + "Dynastic Hero, The - •Chō Eiyū Densetsu Dynastic HeroJP", + "Efera and Jiliora: The Emblem from Darkness", + "Eikan wa Kimi ni", + "Eiyū Saigokushi", + "Emerald Dragon", + "Energy", + "Exile", + "Exile: Wicked Phenomenon - •Exile IIJP", + "F-1 Dream", + "F-1 Pilot", + "F1 Circus", + "F1 Circus '91", + "F-1 CIRCUS'92", + "F1 Circus Special", + "F1 Team Simulation Project F", + "F1 Triple Battle", + "Faceball", + "Falcon", + "Fang of Alnam", + "Fantasy Zone", + "Farjius no Jakōtei", + "Faussete Amour", + "Fiend Hunter", + "Fighting Run", + "Fighting Street", + "Final Blaster", + "Final Lap Twin", + "Final Match Tennis", + "Final Soldier", + "Final Zone II", + "Fire Pro Joshi: Shōmu Chōjo Taisen: Zenjo vs. JWP", + "Fire Pro Wrestling 2nd Bout", + "Fire Pro Wrestling 3 Legend Bout", + "Fire Pro Wrestling Combination Tag", + "Flash Hiders", + "Forgotten Worlds", + "Formation Armed F", + "Formation Soccer", + "Formation Soccer '95 della Seria A", + "Formation Soccer on J-League", + "World Circuit", + "Fray CD", + "Fushigi no Yume no Alice", + "Gaia no Monshou", + "Gaiflame", + "Gain Ground SX", + "Galaga '90 - •Galaga '88JP", + "Galaxy Deka Gayvan", + "Galaxy Fräulein Yuna", + "Galaxy Fräulein Yuna 2", + "Ganbare! Golf Boys", + "Garō Densetsu 2", + "Garō Densetsu Special", + "Gate of Thunder", + "Gekisha Boy", + "Genji Tsūshin Amedama", + "Genocide", + "Genpei Tōma Den", + "Gensō Tairiku Auleria", + "Ghost Manor", + "Ghost Sweeper Mikami", + "Ginga Fukei Densetsu Sapphire", + "Go! Go! Birdie Chance", + "God Panic: Shijō Saikyō Gundan", + "Godzilla - •Gojira: Bakutō RetsudenJP", + "Gokuraku! Chuuka Daisen", + "Golden Axe", + "Gomola Speed", + "Götzendiener", + "Gradius", + "Gradius II", + "Sotsugyō II", + "Gulclight TDF-2", + "Gulliver Boy", + "Gunboat", + "Gyuwanburā Jiko Chūshin Ha: Gekitō Sanjūroku Janshi", + "Gyuwanburā Jiko Chūshin Ha: Mahjong Puzzle Collection", + "Hanataa ka daka!?", + "Hataraku Shōjo: Tekipaki Working Love", + "Hatris", + "Hatsukoi Monogatari", + "Hawk F-123", + "Heavy Unit", + "Hellfire S", + "High Grenadier", + "Hihō Densetsu: Chris no Bōken", + "Himitsu no Hanazono", + "Hisou Kihei Kai-Serd[b]", + "Hit the Ice", + "Honey in the Sky", + "Honey on the Road", + "Honō no Dōkyūji: Dodge Danpei", + "Horror Story", + "Human Sports Festival", + "Hyakumonogatari: Honto ni Atta Kowai Hanashi", + "Hyper Wars", + "I.Q. Panic", + "Iga Ninden Gaiō", + "Image Fight", + "Image Fight II", + "Impossamole", + "It Came From The Desert", + "J-League Greatest Eleven", + "Jack Nicklaus' Turbo Golf - •Jack Nicklaus Championship GolfJP", + "Jack Nicklaus' Turbo Golf - •Jack Nicklaus' World Golf TourJP", + "Jackie Chan's Action Kung Fu - •Jackie ChanJP", + "Janshin Densetsu: Quest of Jongmaster", + "Jantei Monogatari", + "Jantei Monogatari 2: Uchū Tantei Diban: Shutsudō Hen", + "Jantei Monogatari 3: Saver Angels", + "Jaseiken Necromancer", + "Jigoku Meguri", + "Jim Power", + "Jinmu Denshō Yaksa", + "John Madden Duo CD-ROM² Football", + "Jūōki", + "Jūōki", + "J. League Tremendous Soccer '94", + "J.B. Harold Murder Club", + "J.J. & Jeff - •Kato-chan Ken-chanJP", + "Kabuki Ittō Ryōdan", + "Kagami no Kuni no Legend", + "Kaizō Chōjin Shubibinman", + "Kaizō Chōjin Shubibinman 3", + "Kakuto Haō Densetsu Algunos", + "Kattobi! Takuhai-Kun", + "Kawa no Nushizuri: Shizenha", + "Kaze Kiri", + "Keith Courage in Alpha Zones - •Mashin Eiyuuden WataruJP", + "Kiaidan 00", + "Kick Boxing, The", + "Kickball", + "KiKi KaiKai", + "King Of Casino", + "Kisō Louga", + "Klax", + "Knight Rider Special", + "Kore ga Pro Yakyū '89", + "Kore ga Pro Yakyuu '90", + "Kyūkyoku Tiger", + "K.O. Seiki Beast Sanjūshi", + "L-Dis", + "La Valeur", + "Lady Phantom", + "Langrisser: Hikari no Matsuei", + "Laplace no Ma", + "Last Alert - •Red AlertJP", + "Last Armageddon", + "Legend of Hero Tonma", + "Legend of Xanadu", + "Legend of Xanadu II", + "Legendary Axe, The - •Makyō DensetsuJP", + "Legendary Axe II, The - •Ankoku DensetsuJP", + "Legion", + "Lemmings", + "Linda³", + "Lode Runner: Ushina Wareta Meikyū", + "Loom", + "Lord of Wars", + "Lords of the Rising Sun - •Rising SunJP", + "Lords of Thunder - •Winds of ThunderJP", + "Louga II: The Ends of Shangrila", + "Mad Stalker: Full Metal Force", + "Madō King Granzort", + "Madō Monogatari I", + "Magical Chase", + "Magical Dinosaur Tour - •Magical Saurus TourJP", + "Magicoal", + "Mahjong Clinic Special", + "Mahjong Gakuen - Tōma Sōhirō Tōjō", + "Mahjong Gakuen Mild", + "Mahjong Gokū Special", + "Mahjong Haōden: Kaiser's Quest", + "Mahjong Lemon Angel", + "Mahjong on the Beach", + "Mahjong Shikaku Retsuden: Mahjong Wars", + "Mahjong Sword", + "Maison Ikkoku", + "Makai Hakkenden Shada", + "Makai Prince Dorabocchan", + "Inoue Mami: Kono Hoshi ni Tatta Hitori no Kimi", + "Mamono Hunter Yōko: Makai Kara no Tenkōsai", + "Mamono Hunter Yōko: Tooki Yobikoe", + "The Manhole", + "Maniac Pro Wrestling", + "Märchen Maze", + "Martial Champion", + "Master of Monsters", + "Megami Paradise", + "Meikyū no Elfine", + "Metal Angel", + "Metal Angel 2", + "Metal Stoker", + "MetamorJupiter", + "Might & Magic", + "Might and Magic III: Isles of Terra", + "Military Madness - •NectarisJP", + "Minesweeper", + "Mirai Shōnen Conan", + "Mitsubachi Gakuen", + "Mizubaku Daibouken", + "Momotaro Densetsu Gaiden Dai Ichi Shu", + "Momotarou Densetsu Turbo", + "Momotarou Densetsu II", + "Momotarō Katsugeki", + "Monster Lair - •Wonder Boy III: Monster LairJP", + "Monster Maker: Yami no Ryūkishi", + "Monster Pro Wrestling", + "Moonlight Lady", + "Morita Shogi PC", + "Motteke Tamago", + "Moto Roader", + "Moto Roader II", + "Moto Roader MC", + "Mr Heli no Daibouken", + "Mystic Formula", + "Fushigi no Umi no Nadia", + "Naritore: The Sugoroku '92", + "Naxat Open", + "Naxat Stadium", + "Nazo no Masquerade", + "Necros no Yōsai", + "Nekketsu Kōkō Dodgeball Bu: CD Soccer Hen", + "Nekketsu Kōkō Dodgeball Bu: PC Soccer Hen", + "Nekketsu Kōkō Dodgeball Bu: PC Bangai Hen", + "Nekketsu Legend Baseballer", + "Nemurenu Yoru Chiisaina Ohanashi", + "Neo Nectaris", + "Neutopia", + "Neutopia II", + "New Adventure Island - •Takahashi Meijin no Shin Bōken JimaJP", + "The NewZealand Story", + "Nexzr", + "Nexzr Special", + "NHK Taiga Drama Taiheki", + "Night Creatures", + "Niko Niko Pun", + "Ninja Ryūkenden", + "Ninja Spirit - •Saigo no Nindō: Ninja SpiritJP", + "Ninja Warriors", + "Nishimura Kyōtaro Mystery: Hokutosei no Onna", + "No-Ri-Ko", + "Nobunaga no Yabō: Bushō Fūunroku", + "Nobunaga no Yabō: Zenkokuban", + "Obocchamakun", + "Operation Wolf", + "Ordyne", + "Out Live", + "Out Run", + "OverRide", + "P-47", + "Pac-Land", + "Pachio-kun: Jūban Shōbu", + "Pachio-kun: Maboroshi no Densetsu", + "Pachio-kun: Warau Uchū", + "Pachio-kun 3: Pachislot & Pachinko", + "Panic Bomber", + "Parasol Stars", + "Parodius Da!", + "Pastel Lime", + "Police Connection", + "Pop'n Magic", + "Popful Mail", + "Populous", + "Populous: The Promised Lands", + "Power Drift", + "Power Eleven", + "Power Gate", + "Power Golf", + "Power Golf 2", + "Power League II", + "Power League III", + "Power League 4", + "Power League V", + "Power League '93", + "Power Tennis", + "Prince of Persia", + "Princess Maker 1", + "Princess Maker 2", + "Princess Minerva", + "Private Eyedol", + "The Pro Yakyū", + "The Pro Yakyū Super '94", + "Pro Yakyuu World Stadium", + "Pro Yakyuu World Stadium '91", + "The Pro Yakyū Super", + "Psychic Detective Series Vol. 3: Aýa", + "Psychic Detective Vol. 4: Orgel", + "Psychic Storm", + "Psycho Chaser", + "Psychosis - •ParanoiaJP", + "Puyo Puyo CD", + "Puyo Puyo CD Tsū", + "Puzzle Boy", + "Puzznic", + "Quiz Avenue", + "Quiz Avenue II", + "Quiz Avenue 3", + "Quiz Caravan Cult Q", + "Quiz de Gakuensai", + "Quiz Marugoto The World", + "Quiz Marugoto The World: Time Machine ni Onegai!", + "Quiz no Hoshi", + "Quiz Nobunaga no Yabō", + "R-Type - •R-Type I / R-Type IIJP", + "R-Type: Complete CD", + "Rabio Lepus Special", + "Racing Spirits", + "Raiden", + "Rainbow Islands", + "Ranma ½", + "Ranma ½: Datō, Ganso Musabetsu Kakuto Ryū", + "Ranma ½: Toraware no Hayanome", + "Rastan Saga II", + "Rayxanber II", + "Rayxanber III", + "Record of Lodoss War", + "Records of Lodoss War II", + "Renny Blaster", + "Riot Zone - •Crest of WolfJP", + "Road Spirits", + "Rock-On", + "ROM ROM Stadium", + "Ruin: Kami no Isan", + "Ryūkō no Ken", + "Ryūkyū", + "S.C.I.", + "Sadakichi Sebun: Hideyoshi no Ougon", + "Saint Dragon", + "Salamander", + "Samurai Ghost - •Genpei Toumaden: KannoniJP", + "Sangokushi: Eiketsu Tenka ni Nozomu", + "Sangokushi III", + "SD Senyō Aldynes", + "Seirei Senshi Spriggan", + "Seiryū Densetsu Monbit", + "Seisenshi Denshō", + "Seiya Monogatari", + "Sekigahara", + "Sengoku Kantō Sangokushi", + "Sengoku Mahjong", + "Sexy Idol Mahjong", + "Sexy Idol Mahjong: Mahjong Fashion Monogatari", + "Sexy Idol Mahjong 2: Yakyūken no Uta", + "Shadow of the Beast", + "Shanghai", + "Shanghai II", + "Shanghai III: Dragon's Eye", + "Shape Shifter - •Shapeshift: Makai Eiyū DenJP", + "Sherlock Holmes Consulting Detective", + "Sherlock Holmes: Consulting Detective Vol. II", + "Shin Megami Tensei", + "Shin Onryō Senki", + "Shin Sangokushi: Tenka wa Waga ni", + "Shinobi", + "Shiryō Sensen", + "Shockman - •Kaizou Chōjin Shubibinman 2: Atanaru TekiJP", + "Shōgi Database Kiyū", + "Shogi Shodan Icchokusen", + "Shogi Shoshinsha Muyou", + "Side Arms Hyper Dyne - •Hyper Dyne Side ArmsJP", + "Side Arms Special", + "Silent Debuggers", + "SimEarth", + "Sindibad: Chitei No Dai Makyu", + "Sinistron - •Violent SoldierJP", + "Skweek", + "Slime World", + "Slot Gambler", + "Snatcher CD-ROMantic", + "Sol Bianca", + "Sol Moonarge", + "Soldier Blade", + "Solid Force", + "Somer Assault - •MesopotamiaJP", + "Sonic Spike - •World Beach VolleyJP", + "Son Son II", + "Sorcerian", + "Sotsugyō: Graduation", + "Sotsugyō Shashin: Miki", + "Space Harrier", + "Space Invaders: Fukkatsu no Hi", + "Space Invaders: The Original Game", + "Spin Pair", + "Spiral Wave", + "Splash Lake", + "Splatterhouse", + "Spriggan Mk. II", + "Star Breaker", + "Star Mobile", + "Star Parodier", + "Startling Odyssey", + "Startling Odyssey II", + "Steam-Heart's", + "Stratego", + "Street Fighter II", + "Strider Hiryū", + "Super Air Zonk - •CD-ROM² DenjinJP", + "Super Albatross", + "Super CD-ROM² Taiken Soft Shū", + "Super Daisenryaku", + "Super Darius", + "Super Darius II", + "Super Mahjong Taikai", + "Super Metal Crusher", + "Super Momotaro Dentetsu", + "Super Momotarou Dentetsu II", + "Super Raiden", + "Super Real Mahjong P II/III Custom", + "Super Real Mahjong PIV", + "Super Real Mahjong P.V Custom", + "Super Real Mahjong Special", + "Super Schwarzchild", + "Super Schwarzschild 2", + "Super Star Soldier", + "Super Volleyball", + "Susano-ou Densetsu", + "Sword Master", + "Syd Mead's Terraforming - •TerraformingJP", + "Sylphia", + "Taidaima Yūsha Boshūchū", + "Taiheiki", + "Takeda Shingen", + "Takin' it to the Hoop - •USA Pro BasketballJP", + "TaleSpin", + "Tanjō: Debut", + "Tatsu no Ko Fighter", + "TATSUJIN", + "Tecmo World Cup: Super Soccer", + "Tenchi Muyō! Ryōōki", + "Tenchi wo Kurau", + "Tengai Makyō: Deden no Den", + "Tengai Makyō: Fū-un Kabuki Den", + "Tengai Makyō: ZIRIA", + "Tengai Makyō II: Manjimaru", + "Tenshi no Uta", + "Tenshi no Uta II", + "Terra Cresta II", + "Thunder Blade", + "Tiger Road - •Tora he no MichiJP", + "Time Cruise - •Time Cruise IIJP", + "Timeball - •BlodiaJP", + "Titan", + "Toilet Kids", + "Tokimeki Memorial", + "Top o Nerae! GunBuster Vol. 1", + "Top o Nerae! GunBuster Vol. 2", + "Toshi Tensō Keikaku Eternal City", + "The Tower of Druaga", + "Toy Shop Boys", + "Travelers!: Densetsu o Buttobase", + "Travel Epuru", + "Tricky Kick - •TrickyJP", + "Tsuppari Oozumou Heisei Ban", + "Tsuru Teruto no Jissen Kabushiki Bi-Game", + "Turrican", + "The TV Show", + "TV Sports Basketball", + "TV Sports: Football", + "TV Sports Hockey - •TV Sports Ice HockeyJP", + "Uchū Senkan Yamato", + "Ultra Box No. 2", + "Ultra Box No. 3", + "Ultra Box No. 4", + "Ultra Box No. 5", + "Ultra Box No. 6", + "Ultra Box Premiere Issue", + "Urusei Yatsura: Stay With You", + "Valis II", + "Valis III", + "Valis IV", + "Valis: The Fantasm Soldier", + "Valkyrie no Densetsu", + "Vanilla Syndrome", + "Vasteel", + "Vasteel 2", + "Veigues Tactical Gladiator - •VeiguesJP", + "Victory Run", + "Vigilante", + "Virgin Dream", + "Volfied", + "Wai Wai Mahjong", + "Wallaby!!", + "Where in the World is Carmen Sandiego?", + "Winning Shot", + "Wizardry I & II", + "Wizardry III & IV", + "Wizardry V", + "Wonder Momo", + "World Class Baseball - •Power LeagueJP", + "World Court Tennis - •Pro Tennis: World CourtJP", + "World Heroes 2", + "World Jockey", + "World Sports Competition - •Power SportsJP", + "Wrestle Angels: Double Impact", + "Xak I & II", + "Xak III: The Eternal Recurrence", + "Xevious: Fardraut Saga", + "Yamamura Misa Suspense: Kizenka Kyō Ezara Satsujin Jiken", + "Yami no Ketsuzoku", + "Yawara!", + "Yawara! 2", + "Yo, Bro", + "Yokai Dochuki", + "Yūyū Jinsei", + "Yū Yū Hakusho: Yami Shōbu!! Ankoku Bujutsu Kai", + "Ys: Book I & II - •Ys I & IIJP", + "Ys III: Wanderers from Ys", + "Ys IV: The Dawn of Ys", + "Zan: Kagerō no Toki", + "Zero4 Champ", + "Zero4 Champ II", + "Zero Wing", + "Zipang", + "007: Agent Under Fire", + "007: Everything or Nothing", + "007: From Russia with Love", + "007: Nightfire", + "187 Ride or Die", + "2002 FIFA World Cup", + "25 To Life", + "4x4 EVO 2", + "50 Cent: Bulletproof", + "Advent Rising", + "Æon Flux", + "AFL Live 2003", + "AFL Live 2004", + "AFL Live Premiership Edition", + "AFL Premiership 2005", + "Aggressive Inline", + "Airforce Delta Storm - Deadly Skies (PAL) - Airforce Delta II (JP)", + "Alias", + "Alien Hominid", + "Aliens Versus Predator: Extinction", + "Alfa Romeo Racing Italiano - SCAR : Squadra Corse Alfa Romeo (PAL)", + "All-Star Baseball 2003", + "All-Star Baseball 2004", + "All-Star Baseball 2005", + "Alter Echo", + "America's Army: Rise of a Soldier", + "American Chopper", + "American Chopper 2: Full Throttle", + "AMF Bowling 2004", + "AMF Xtreme Bowling 2006", + "Amped: Freestyle Snowboarding", + "Amped 2 - Tenku 2 (JP)", + "AND 1 Streetball", + "Angelic Concert (JP)", + "Animaniacs: The Great Edgar Hunt", + "Antz Extreme Racing", + "Aoi Namida (JP)", + "APEX - Racing Evoluzione (PAL)", + "Aquaman: Battle for Atlantis", + "Arctic Thunder", + "Area 51", + "Arena Football", + "Armed and Dangerous", + "Army Men: Major Malfunction", + "Army Men: Sarge's War", + "Arx Fatalis", + "Atari Anthology", + "ATV Quad Power Racing 2", + "Auto Modellista", + "Avatar: The Last Airbender", + "Azurik: Rise of Perathia", + "Backyard Wrestling: Don't Try This at Home", + "Backyard Wrestling 2: There Goes the Neighborhood", + "Bad Boys: Miami Takedown - Bad Boys II (PAL)", + "Baldur's Gate: Dark Alliance", + "Baldur's Gate: Dark Alliance II", + "Barbarian", + "Barbie Horse Adventures: Wild Horse Rescue", + "The Bard's Tale", + "The Baseball 2002: Battle Ball Park Sengen", + "Bass Pro Shops: Trophy Bass 2007", + "Bass Pro Shops Trophy Hunter 2007", + "Batman Begins", + "Batman: Dark Tomorrow", + "Batman: Rise of Sin Tzu", + "Batman Vengeance", + "Battle Engine Aquila", + "Battlefield 2: Modern Combat", + "Battlestar Galactica", + "Beat Down: Fists of Vengeance", + "Beyond Good & Evil", + "The Bible Game", + "Bicycle Casino", + "Big Bumpin'", + "Big Mutha Truckers", + "Big Mutha Truckers 2", + "Bionicle", + "Bistro Cupid (JP)", + "Bistro Cupid 2", + "Black", + "Black Stone: Magic & Steel - Ex-Chaser (JP)", + "Blade II", + "Blazing Angels: Squadrons of WWII", + "Blinx: The Time Sweeper", + "Blinx 2: Masters of Time and Space - Blinx 2: Battle of Time and Space (JP)", + "Blitz: The League", + "Blood Omen 2", + "Blood Wake", + "BloodRayne", + "BloodRayne 2", + "Bloody Roar Extreme", + "BlowOut", + "BMX XXX", + "Braveknight", + "Break Nine: World Billiards Tournament", + "Breakdown", + "Breeders' Cup World Thoroughbred Championships", + "Brian Lara International Cricket 2005", + "Broken Sword: The Sleeping Dragon", + "Brothers in Arms: Earned in Blood", + "Brothers in Arms: Road to Hill 30", + "Bruce Lee: Quest of the Dragon", + "Brute Force", + "Buffy the Vampire Slayer", + "Buffy the Vampire Slayer: Chaos Bleeds", + "Burnout", + "Burnout 2: Point of Impact", + "Burnout 3: Takedown", + "Burnout Revenge", + "C.A.T.: Cyber Attack Team", + "Cabela's Big Game Hunter 2005 Adventures", + "Cabela's Dangerous Hunts", + "Cabela's Dangerous Hunts 2", + "Cabela's Deer Hunt: 2004 Season", + "Cabela's Deer Hunt: 2005 Season", + "Cabela's Outdoor Adventures", + "Call of Cthulhu: Dark Corners of the Earth", + "Call of Duty: Finest Hour", + "Call of Duty 2: Big Red One", + "Call of Duty 3", + "Capcom Classics Collection Vol. 1", + "Capcom Classics Collection Vol. 2", + "Capcom Fighting Evolution - Capcom Fighting Jam (PAL) (JP)", + "Capcom vs. SNK 2 EO", + "Carmen Sandiego: The Secret of the Stolen Drums", + "Cars", + "Carve", + "Castlevania: Curse of Darkness - Akumajo Dracula: Yami no Juin (JP)", + "Catwoman", + "Cel Damage", + "Celebrity Deathmatch", + "Championship Bowling", + "Championship Manager: Season 01/02", + "Championship Manager: Season 02/03", + "Championship Manager 2006", + "Championship Manager 5", + "Charlie and the Chocolate Factory", + "Chase: Hollywood Stunt Driver", + "Chessmaster 10th Edition", + "Chicago Enforcer", + "Chicken Little", + "The Chronicles of Narnia: The Lion, the Witch and the Wardrobe", + "The Chronicles of Riddick: Escape from Butcher Bay", + "Circus Maximus: Chariot Wars", + "Classified: The Sentinel Crisis", + "Close Combat: First to Fight", + "Club Football", + "Club Football 2005", + "Codename: Kids Next Door - Operation: V.I.D.E.O.G.A.M.E.", + "Cold Fear", + "Cold War", + "Colin McRae Rally 04", + "Colin McRae Rally 2005", + "Colin McRae Rally 3", + "College Hoops 2K6", + "College Hoops 2K7", + "Combat Elite: WWII Paratroopers", + "Combat: Task Force 121", + "Commandos: Strike Force", + "Commandos 2: Men of Courage", + "Conan", + "Conflict: Desert Storm", + "Conflict: Desert Storm II: Back to Baghdad", + "Conflict: Global Terror", + "Conflict: Vietnam", + "Conker: Live & Reloaded", + "Conspiracy: Weapons of Mass Destruction", + "Constantine", + "Corvette", + "Counter-Strike", + "Crash Bandicoot: The Wrath of Cortex", + "Crash 'n' Burn", + "Crash Nitro Kart", + "Crash Tag Team Racing", + "Crash Twinsanity", + "Crazy Taxi 3: High Roller", + "Cricket 2005", + "Crime Life: Gang Wars", + "Crimson Sea", + "Crimson Skies: High Road to Revenge", + "Crouching Tiger, Hidden Dragon", + "Crusty Demons", + "CSI: Crime Scene Investigation", + "Curious George", + "Curse: The Eye of Isis", + "The Da Vinci Code", + "Daemon Vector", + "Dai Senryaku VII: Modern Military Tactics - Daisenryaku VII (JP)", + "Dakar 2: The World's Ultimate Rally", + "Dance Dance Revolution Ultramix - Dance Stage Unleashed (PAL)", + "Dance Dance Revolution Ultramix 2 - Dance Stage Unleashed 2 (PAL)", + "Dance Dance Revolution Ultramix 3 - Dance Stage Unleashed 3 (PAL)", + "Dance Dance Revolution Ultramix 4", + "Dance: UK", + "Dark Summit", + "Darkwatch", + "Dave Mirra Freestyle BMX 2", + "David Beckham Soccer", + "Dead Man's Hand", + "Dead or Alive 3", + "Dead or Alive Ultimate", + "Dead or Alive Xtreme Beach Volleyball", + "Dead to Rights", + "Dead to Rights II", + "Deathrow", + "Def Jam: Fight for NY", + "Defender", + "Delta Force: Black Hawk Down", + "Dennou Taisen: DroneZ", + "Destroy All Humans!", + "Destroy All Humans! 2", + "Deus Ex: Invisible War", + "Die Hard: Vendetta", + "Digimon Rumble Arena 2", + "Digimon World 4 - Dejimon Warudo X (JP)", + "Dino Crisis 3", + "Dinosaur Hunting", + "Dinotopia: The Sunstone Odyssey", + "Disney's Extreme Skate Adventure", + "Doom 3", + "Doom 3: Resurrection of Evil", + "Double-S.T.E.A.L. - The Second Clash", + "Dr. Muto", + "Dr. Seuss' The Cat in the Hat", + "Dragon Ball Z: Sagas", + "Dragon's Lair 3D: Return to the Lair", + "Drake of the 99 Dragons", + "Dreamfall: The Longest Journey", + "Drihoo (JP)", + "Mashed: Drive to Survive", + "DRIV3R", + "Driver: Parallel Lines", + "The Dukes of Hazzard: Return of the General Lee", + "Dungeons & Dragons: Heroes", + "Dynasty Warriors 3 - Shin Sangokumusou 2 (JP)", + "Dynasty Warriors 4 - Shin Sangokumusou 3 (JP)", + "Dynasty Warriors 5 - Shin Sangokumusou 4 (JP)", + "Ed, Edd n Eddy: The Mis-Edventures", + "Egg Mania: Eggstreme Madness", + "The Elder Scrolls III: Morrowind", + "Enclave", + "England International Football", + "Enter the Matrix", + "Eragon", + "ESPN College Hoops", + "ESPN College Hoops 2K5", + "ESPN International Winter Sports 2002", + "ESPN Major League Baseball", + "ESPN MLS ExtraTime 2002", + "ESPN NBA 2K5", + "ESPN NBA 2Night 2002", + "ESPN NBA Basketball", + "ESPN NFL 2K5", + "ESPN NFL Football", + "ESPN NFL PrimeTime 2002", + "ESPN NHL 2K5", + "ESPN NHL Hockey", + "ESPN Winter X-Games Snowboarding 2002", + "Evil Dead: A Fistful of Boomstick", + "Evil Dead: Regeneration", + "ExaSkeleton", + "F1 2001", + "F1 2002", + "F1 Career Challenge", + "Fable", + "Fable: The Lost Chapters", + "The Fairly OddParents: Breakin' Da Rules", + "Fallout: Brotherhood of Steel", + "Family Guy Video Game!", + "Fantastic 4", + "Far Cry Instincts", + "Far Cry Instincts: Evolution", + "Fatal Frame - Project Zero (PAL)", + "Fatal Frame II: Crimson Butterfly - Project Zero II: Crimson Butterfly (PAL)", + "FIFA 06 Soccer", + "FIFA 07", + "FIFA Football 2003", + "FIFA Football 2004", + "FIFA 2005", + "FIFA Street", + "FIFA Street 2", + "FIFA World Cup: Germany 2006", + "Fight Club", + "Fight Night 2004", + "Fight Night Round 2", + "Fight Night: Round 3", + "FILA World Tour Tennis", + "Final Fight: Streetwise", + "Finding Nemo", + "Fire Blade", + "FlatOut", + "FlatOut 2", + "Flight Academy", + "Ford Bold Moves Street Racing", + "Ford Mustang: The Legend Lives", + "Ford Racing 2", + "Ford Racing 3", + "Ford vs. Chevy", + "Forgotten Realms: Demon Stone", + "Forza Motorsport", + "Freaky Flyers", + "Freedom Fighters", + "Freestyle MetalX", + "Freestyle Street Soccer", + "Frogger Beyond", + "Frogger: Ancient Shadow", + "Full Spectrum Warrior", + "Full Spectrum Warrior: Ten Hammers", + "Furious Karting", + "Futurama", + "Future Tactics: The Uprising", + "Fuzion Frenzy", + "Galaxy Angel", + "Galleon", + "Gauntlet: Dark Legacy", + "Gauntlet: Seven Sorrows", + "Gene Troopers", + "Genma Onimusha", + "Ghost Master: The Gravenville Chronicles", + "Gladiator: Sword of Vengeance", + "Gladius", + "Goblin Commander: Unleash the Horde", + "The Godfather: The Game", + "Godzilla: Destroy All Monsters Melee", + "Godzilla: Save the Earth", + "GoldenEye: Rogue Agent", + "Gotcha!", + "Grabbed by the Ghoulies", + "Grand Theft Auto III", + "Grand Theft Auto: San Andreas", + "Grand Theft Auto: Vice City", + "Gravity Games Bike: Street. Vert. Dirt.", + "The Great Escape", + "Greg Hastings Tournament Paintball", + "Greg Hastings' Tournament Paintball Max'd", + "Grooverider: Slot Car Thunder", + "Group S Challenge - CIRCUS DRIVE (JP)", + "Guilty Gear Isuka[1]", + "Guilty Gear X2#Reload[2]", + "Gun", + "Gun Metal", + "GunGriffon: Allied Strike", + "Gunvalkyrie", + "The Guy Game", + "Half-Life 2", + "Halo: Combat Evolved", + "Halo 2", + "Halo 2 Multiplayer Map Pack", + "Harry Potter and the Chamber of Secrets", + "Harry Potter and the Goblet of Fire", + "Harry Potter and the Prisoner of Azkaban", + "Harry Potter and the Sorcerer's Stone - Harry Potter and the Philosopher's Stone (PAL)", + "Harry Potter: Quidditch World Cup", + "The Haunted Mansion", + "Headhunter Redemption", + "Hello Kitty: Roller Rescue - Hello Kitty: Mission Rescue (AS)", + "Heroes of the Pacific", + "High Heat Major League Baseball 2004", + "High Rollers Casino", + "Hitman: Blood Money", + "Hitman: Contracts", + "Hitman 2: Silent Assassin", + "The Hobbit", + "Hot Wheels: Stunt Track Challenge", + "The House of the Dead III", + "Hulk", + "Hummer Badlands", + "Hunter: The Reckoning", + "Hunter: The Reckoning: Redeemer", + "The Hustle: Detroit Streets", + "I-Ninja", + "Ice Age 2: The Meltdown", + "IHRA Drag Racing 2004", + "IHRA Drag Racing: Sportsman Edition", + "IHRA Professional Drag Racing 2005", + "Innocent Tears", + "The Incredible Hulk: Ultimate Destruction", + "The Incredibles - Mr. Incredible (JP)", + "The Incredibles: Rise of the Underminer", + "Indiana Jones and the Emperor's Tomb", + "Indigo Prophecy - Fahrenheit (PAL)", + "IndyCar Series", + "IndyCar Series 2005", + "Inside Pitch 2003", + "The Italian Job", + "Intellivision Lives!", + "International Superstar Soccer 2", + "Iron Phoenix", + "Jacked", + "Jade Empire", + "James Cameron's Dark Angel", + "Jaws Unleashed", + "Jet Set Radio Future", + "Jikkyou World Soccer 2002", + "Jockey's Road", + "Judge Dredd: Dredd Vs. Death", + "Juiced", + "Jurassic Park: Operation Genesis", + "Just Cause", + "Justice League Heroes", + "Kabuki Warriors", + "Kakuto Chojin", + "Kao the Kangaroo: Round 2", + "Karaoke Revolution", + "Karaoke Revolution Party", + "Kelly Slater's Pro Surfer", + "Kikou Heidan J-Phoenix +", + "Kill Switch", + "King Arthur", + "Kingdom Under Fire: Heroes", + "Kingdom Under Fire: The Crusaders", + "The King of Fighters 2002", + "The King of Fighters 2003", + "The King of Fighters Neowave", + "The King of Fighters: Maximum Impact", + "Knight's Apprentice: Memorick's Adventures", + "Knights of the Temple: Infernal Crusade", + "Knights of the Temple II", + "Knockout Kings 2002", + "Kung Fu Chaos", + "L.A. Rush", + "Land of the Dead: Road to Fiddler's Green", + "Largo Winch: Empire Under Threat", + "Legacy of Kain: Defiance", + "The Legend of Spyro: A New Beginning", + "Legends of Wrestling", + "Legends of Wrestling II", + "Lego Star Wars: The Video Game", + "Lego Star Wars II: The Original Trilogy", + "Leisure Suit Larry: Magna Cum Laude", + "Lemony Snicket's A Series of Unfortunate Events", + "Links 2004", + "LMA Manager 2003", + "LMA Manager 2004", + "LMA Manager 2005", + "LMA Manager 2006", + "Loons: The Fight for Fame", + "The Lord of the Rings: The Fellowship of the Ring", + "The Lord of the Rings: The Return of the King", + "The Lord of the Rings: The Third Age", + "The Lord of the Rings: The Two Towers", + "Lotus Challenge", + "Mace Griffin: Bounty Hunter", + "Mad Dash Racing", + "Madagascar", + "Madden NFL 06", + "Madden NFL 07", + "Madden NFL 08", + "Madden NFL 09", + "Madden NFL 2002", + "Madden NFL 2003", + "Madden NFL 2004", + "Madden NFL 2005", + "Mafia: The City of Lost Heaven", + "Magatama", + "Magic the Gathering: Battlegrounds", + "Magi Death Fight: Mahou Gakuen", + "Major League Baseball 2K5", + "Major League Baseball 2K5: World Series Edition", + "Major League Baseball 2K6", + "Major League Baseball 2K7", + "Malice", + "Manchester United Manager 2005", + "Manhunt", + "Marc Ecko's Getting Up: Contents Under Pressure", + "Marvel: Ultimate Alliance", + "Marvel Nemesis: Rise of the Imperfects", + "Marvel vs. Capcom 2", + "Mashed: Fully Loaded", + "Mat Hoffman's Pro BMX 2", + "The Matrix: Path of Neo", + "Max Payne", + "Max Payne 2: The Fall of Max Payne", + "Maximum Chase", + "MechAssault", + "MechAssault 2: Lone Wolf", + "Medal of Honor: European Assault", + "Medal of Honor: Frontline", + "Medal of Honor: Rising Sun", + "Mega Man Anniversary Collection", + "Melbourne Cup Challenge - Frankie Dettori Racing (EUR)", + "Men of Valor", + "Mercenaries: Playground of Destruction", + "Metal Arms: Glitch in the System", + "Metal Dungeon", + "Metal Gear Solid 2: Substance", + "Metal Slug 3", + "Metal Slug 4", + "Metal Slug 5", + "Metal Wolf Chaos", + "Miami Vice", + "Micro Machines", + "Midnight Club II", + "Midnight Club 3: DUB Edition", + "Midnight Club 3: DUB Edition Remix", + "Midtown Madness 3", + "Midway Arcade Treasures", + "Midway Arcade Treasures 2", + "Midway Arcade Treasures 3", + "Mike Tyson Heavyweight Boxing", + "Minority Report: Everybody Runs", + "Mission Impossible: Operation Surma", + "MLB Slugfest 2003", + "MLB Slugfest 2004", + "MLB Slugfest 2006", + "MLB Slugfest: Loaded", + "Mojo!", + "Monopoly Party", + "Monster 4x4: World Circuit", + "Monster Garage", + "Mortal Kombat: Armageddon", + "Mortal Kombat: Deadly Alliance", + "Mortal Kombat: Deception", + "Mortal Kombat: Shaolin Monks", + "Motocross Mania 3", + "MotoGP", + "MotoGP 2", + "MotoGP 3", + "MTV Music Generator 3: This is the Remix", + "MTX: Mototrax", + "Murakumo: Renegade Mech Pursuit", + "Muzzle Flash", + "MVP 06: NCAA Baseball", + "MVP Baseball 2003", + "MVP Baseball 2004", + "MVP Baseball 2005", + "MX 2002", + "MX Superfly", + "MX Unleashed", + "MX vs. ATV Unleashed", + "MX World Tour Featuring Jamie Little", + "Myst III: Exile", + "Myst IV: Revelation", + "N.U.D.E.@ Natural Ultimate Digital Experiment", + "Nakashima Tetsuya no Othello Seminar", + "Namco Museum", + "Namco Museum 50th Anniversary", + "Narc", + "NASCAR 06: Total Team Control", + "NASCAR 07", + "NASCAR 2005: Chase for the Cup", + "NASCAR Heat 2002", + "NASCAR Thunder 2002", + "NASCAR Thunder 2003", + "NASCAR Thunder 2004", + "NBA 2K2", + "NBA 2K3", + "NBA 2K6", + "NBA 2K7", + "NBA Ballers", + "NBA Ballers: Phenom", + "NBA Inside Drive 2002", + "NBA Inside Drive 2003", + "NBA Inside Drive 2004", + "NBA Jam", + "NBA Live 06", + "NBA Live 07", + "NBA Live 2002", + "NBA Live 2003", + "NBA Live 2004", + "NBA Live 2005", + "NBA Starting Five", + "NBA Street V3", + "NBA Street Vol. 2", + "NCAA College Basketball 2K3", + "NCAA College Football 2K3", + "NCAA Football 06", + "NCAA Football 07", + "NCAA Football 08", + "NCAA Football 2003", + "NCAA Football 2004", + "NCAA Football 2005", + "NCAA March Madness 06", + "NCAA March Madness 2004", + "NCAA March Madness 2005", + "Need for Speed: Carbon", + "Need for Speed: Hot Pursuit 2", + "Need for Speed: Most Wanted", + "Need for Speed: Underground", + "Need for Speed: Underground 2", + "Neighbours from Hell", + "New Legends", + "NFL 2K2", + "NFL 2K3", + "NFL Blitz 2002", + "NFL Blitz 2003", + "NFL Blitz Pro", + "NFL Fever 2002", + "NFL Fever 2003", + "NFL Fever 2004", + "NFL Head Coach", + "NFL Street", + "NFL Street 2", + "NHL 06", + "NHL 07", + "NHL 2002", + "NHL 2003", + "NHL 2004", + "NHL 2005", + "NHL 2K3", + "NHL 2K6", + "NHL 2K7", + "NHL Hitz 20-02", + "NHL Hitz 20-03", + "NHL Hitz Pro", + "NHL Rivals 2004", + "Nickelodeon Party Blast", + "NightCaster", + "NightCaster II: Equinox", + "Ninja Gaiden", + "Ninja Gaiden Black", + "Nobunaga no Yabou: Ranseiki", + "ObsCure", + "Oddworld: Munch's Oddysee", + "Oddworld: Stranger's Wrath", + "Open Season", + "Operation Flashpoint: Elite", + "Otogi: Myth of Demons", + "Otogi 2: Immortal Warriors", + "Outlaw Golf", + "Outlaw Golf 2", + "Outlaw Golf: 9 More Holes of X-Mas", + "Outlaw Golf: Holiday Golf (9 Holes of X-Mas)", + "Outlaw Tennis", + "Outlaw Volleyball", + "Outlaw Volleyball: Red Hot", + "OutRun 2", + "OutRun 2006: Coast 2 Coast", + "Over the Hedge", + "Pac-Man World 2", + "Pac-Man World 3", + "Painkiller: Hell Wars", + "Panzer Dragoon Orta", + "Panzer Elite Action: Fields of Glory", + "Pariah", + "Peter Jackson's King Kong", + "Petit Copter", + "Phantasy Star Online Episode I & II", + "Phantom Crash", + "Phantom Dust", + "Pilot Down: Behind Enemy Lines", + "Pinball Hall of Fame", + "Pirates of the Caribbean", + "Pirates: Legend of the Black Buccaneer", + "Pirates: The Legend of Black Kat", + "Pitfall: The Lost Expedition", + "Playboy: The Mansion", + "Plus Plum 2", + "PocketBike Racer", + "Pool Shark 2", + "Powerdrome", + "Predator: Concrete Jungle", + "Prince of Persia: The Sands of Time", + "Prince of Persia: The Two Thrones", + "Prince of Persia: Warrior Within", + "Prisoner of War", + "Pro Cast Sports Fishing - Lakemasters: Bass Fishing Game (JP)", + "Pro Fishing Challenge", + "Pro Race Driver", + "Project Gotham Racing", + "Project Gotham Racing 2", + "Project Snowblind", + "ProStroke Golf: World Tour 2007", + "Psi-Ops: The Mindgate Conspiracy", + "Psychonauts", + "Psyvariar 2", + "Pulse Racer", + "Pump It Up: Exceed", + "The Punisher", + "Pure Pinball", + "Puyo Pop: Fever", + "Quantum Redshift", + "R: Racing Evolution", + "Rallisport Challenge", + "RalliSport Challenge 2", + "Rally Fusion: Race of Champions", + "Rapala Pro Fishing", + "Ratatouille", + "Rayman 3: Hoodlum Havoc", + "Rayman Arena", + "Raze's Hell", + "Real World Golf", + "Red Dead Revolver", + "Red Faction II", + "Red Ninja: End of Honor", + "RedCard 20-03", + "Reign of Fire", + "Rent-A-Hero No. 1", + "Reservoir Dogs", + "Return to Castle Wolfenstein: Tides of War", + "Richard Burns Rally", + "RLH: Run Like Hell", + "RoadKill", + "Robin Hood: Defender of the Crown", + "RoboCop", + "Robot Wars: Extreme Destruction", + "Robotech: Battlecry", + "Robotech: Invasion", + "Robots", + "Rocky", + "Rocky: Legends", + "Rogue Ops", + "Rogue Trooper", + "RollerCoaster Tycoon", + "Rolling", + "Room Zoom", + "Rugby 06", + "Rugby 2005", + "Rugby Challenge 2006", + "Rugby League", + "Rugby League 2", + "Samurai Shodown V", + "Samurai Warriors", + "Scaler", + "Scarface: The World Is Yours", + "Scooby-Doo! Mystery Mayhem", + "Scooby-Doo! Night of 100 Frights", + "Scooby-Doo! Unmasked", + "American McGee Presents: Scrapland", + "SeaBlade", + "SeaWorld: Shamu's Deep Sea Adventures", + "Second Sight", + "Secret Weapons Over Normandy", + "Sega GT 2002", + "Sega GT Online", + "Sega Soccer Slam", + "Sensible Soccer 2006", + "Sentou Yousei Yukikaze: Yousei no Mau Sora", + "Serious Sam", + "Serious Sam II", + "Shadow of Memories", + "Shadow Ops: Red Mercury", + "Shadow the Hedgehog", + "Shark Tale", + "Shattered Union", + "Shellshock: Nam '67", + "Shenmue II", + "Shikigami no Shiro", + "Shikigami no Shiro Evolution Blue", + "Shikigami no Shiro Evolution Red", + "Shikigami no Shiro II", + "Shinchou Mahjong (Nobunaga Mahjong)", + "Shin Megami Tensei: Nine", + "Showdown: Legends of Wrestling", + "Shrek", + "Shrek 2", + "Shrek Super Party", + "Shrek SuperSlam", + "Sid Meier's Pirates!", + "Silent Hill 2", + "Silent Hill 4: The Room", + "Silent Scope Complete", + "The Simpsons: Hit & Run", + "The Simpsons: Road Rage", + "The Sims", + "The Sims 2", + "The Sims Bustin' Out", + "Ski Racing 2005", + "Ski Racing 2006", + "Slam Tennis", + "Smashing Drive", + "Sneak King", + "Sneakers", + "Sniper Elite", + "Soldier of Fortune II: Double Helix", + "Sonic Heroes", + "Sonic Mega Collection Plus", + "Sonic Riders", + "Soul Calibur II", + "Spartan: Total Warrior", + "Spawn: Armageddon", + "Special Forces: Nemesis Strike - Counter Terrorist Special Forces: Fire for Effect (EUR)", + "Speed Kings", + "Sphinx and the Cursed Mummy", + "Spider-Man", + "Spider-Man 2", + "Spikeout: Battle Street", + "Splashdown", + "Splat Magazine Renegade Paintball", + "SpongeBob SquarePants: Battle for Bikini Bottom", + "SpongeBob SquarePants: Lights, Camera, Pants!", + "The SpongeBob SquarePants Movie Game", + "Spy Hunter", + "Spy Hunter 2", + "Spy Hunter: Nowhere to Run", + "Spy vs. Spy", + "Spyro: A Hero's Tail", + "SSX 3", + "SSX On Tour", + "SSX Tricky", + "Stacked with Daniel Negreanu", + "Stake: Fortune Fighters", + "Star Trek: Shattered Universe", + "Star Wars: Jedi Knight: Jedi Academy", + "Star Wars: Jedi Knight II: Jedi Outcast", + "Star Wars: Battlefront", + "Star Wars: Battlefront II", + "Star Wars: Episode III: Revenge of the Sith", + "Star Wars: Jedi Starfighter", + "Star Wars: Knights of the Old Republic", + "Star Wars: Knights of the Old Republic II: The Sith Lords", + "Star Wars: Obi-Wan", + "Star Wars: Republic Commando", + "Star Wars: Starfighter", + "Star Wars: The Clone Wars", + "Starsky & Hutch", + "State of Emergency", + "Steel Battalion", + "Steel Battalion: Line of Contact", + "Still Life", + "Stolen", + "Street Fighter Anniversary Collection", + "Street Hoops", + "Street Racing Syndicate", + "Strike Force Bowling", + "Stubbs the Zombie in Rebel Without a Pulse", + "Sudeki", + "The Suffering", + "The Suffering: Ties That Bind", + "Super Bubble Pop", + "Super Monkey Ball Deluxe", + "Superman Returns", + "Superman: The Man of Steel", + "SVC Chaos: SNK vs. Capcom", + "SWAT: Global Strike Team", + "SX Superstar", + "Syberia", + "Syberia II", + "Taito Legends", + "Taito Legends 2", + "Tak: The Great Juju Challenge", + "Tak 2: The Staff of Dreams", + "Takahashi Akiko no Mahjong Seminar", + "Tao Feng: Fist of the Lotus", + "Taz: Wanted", + "Tecmo Classic Arcade", + "Teen Titans", + "Teenage Mutant Ninja Turtles", + "Teenage Mutant Ninja Turtles: Mutant Melee", + "Teenage Mutant Ninja Turtles 2: Battle Nexus", + "Teenage Mutant Ninja Turtles 3: Mutant Nightmare", + "Tenchu: Return from Darkness", + "Tenerezza", + "Tennis Masters Series 2003", + "The Terminator: Dawn of Fate", + "Terminator 3: Rise of the Machines", + "Terminator 3: The Redemption", + "Test Drive", + "Test Drive: Eve of Destruction", + "Test Drive Off-Road Wide Open", + "Tetris Worlds", + "Tetris Worlds (Online Edition)", + "Thief: Deadly Shadows", + "The Thing", + "Thousand Land", + "Thrillville", + "Tiger Woods PGA Tour 2003", + "Tiger Woods PGA Tour 2004", + "Tiger Woods PGA Tour 2005", + "Tiger Woods PGA Tour 06", + "Tiger Woods PGA Tour 07", + "Tim Burton's The Nightmare Before Christmas: Oogie's Revenge", + "TimeSplitters 2", + "TimeSplitters: Future Perfect", + "TOCA Race Driver 2: The Ultimate Racing Simulator", + "TOCA Race Driver 3", + "ToeJam & Earl III: Mission to Earth", + "Tom and Jerry in War of the Whiskers", + "Tom Clancy's Ghost Recon", + "Tom Clancy's Ghost Recon 2", + "Tom Clancy's Ghost Recon 2: Summit Strike", + "Tom Clancy's Ghost Recon: Advanced Warfighter", + "Tom Clancy's Ghost Recon: Island Thunder", + "Tom Clancy's Rainbow Six 3", + "Tom Clancy's Rainbow Six 3: Black Arrow", + "Tom Clancy's Rainbow Six: Critical Hour", + "Tom Clancy's Rainbow Six: Lockdown", + "Tom Clancy's Splinter Cell", + "Tom Clancy's Splinter Cell: Chaos Theory", + "Tom Clancy's Splinter Cell: Double Agent", + "Tom Clancy's Splinter Cell: Pandora Tomorrow", + "Tomb Raider: Legend", + "Tony Hawk's American Wasteland", + "Tony Hawk's Pro Skater 2x", + "Tony Hawk's Pro Skater 3", + "Tony Hawk's Pro Skater 4", + "Tony Hawk's Project 8", + "Tony Hawk's Underground", + "Tony Hawk's Underground 2", + "Top Gear RPM Tuning - RPM Tuning (EUR)", + "Top Spin Tennis", + "Torino 2006", + "Tork: Prehistoric Punk", + "Total Club Manager 2004", + "Total Club Manager 2005", + "Total Immersion Racing", + "Total Overdose: A Gunslinger's Tale in Mexico", + "Totaled!", + "Touge R", + "Tour de France", + "Toxic Grind", + "TransWorld Snowboarding", + "TransWorld Surf", + "Triangle Again", + "Triangle Again 2", + "Trigger Man", + "Triple Play 2002", + "Trivial Pursuit Unhinged", + "Tron 2.0 Killer App", + "True Crime: New York City", + "True Crime: Streets of LA", + "Turok: Evolution", + "Ty the Tasmanian Tiger", + "Ty the Tasmanian Tiger 2: Bush Rescue", + "Ty the Tasmanian Tiger 3: Night of the Quinkan", + "UEFA Champions League 2004-2005", + "UEFA Euro 2004", + "UFC: Tapout", + "UFC: Tapout 2", + "Ultimate Beach Soccer", + "Ultimate Pro Pinball", + "Ultimate Spider-Man", + "Ultra Bust-a-Move - Ultra Puzzle Bobble (JP)", + "Umezawa Yukari no Igo Seminar", + "Unreal Championship", + "Unreal Championship 2: The Liandri Conflict", + "Unreal II: The Awakening", + "Urban Chaos: Riot Response", + "The Urbz: Sims in the City", + "V-Rally 3", + "Van Helsing", + "Vexx", + "Vietcong: Purple Haze", + "Virtual Pool: Tournament Edition", + "Volvo: Drive For Life", + "Voodoo Vince", + "Wakeboarding Unleashed", + "Wallace & Gromit in Project Zoo", + "Wallace & Gromit: The Curse of the Were-Rabbit", + "Warpath", + "The Warriors", + "Whacked!", + "Whiplash", + "Whiteout", + "The Wild Rings", + "WinBack 2: Project Poseidon", + "Wings of War", + "Without Warning", + "World Championship Poker", + "World Championship Poker 2: Featuring Howard Lederer", + "World Championship Pool 2004", + "World Championship Rugby", + "World Championship Snooker 2003", + "World Championship Snooker 2004", + "World Poker Tour", + "World Racing", + "World Racing 2", + "World Series Baseball 2K2", + "World Series Baseball 2K3", + "World Series of Poker", + "World Snooker Championship 2005", + "World Soccer Winning Eleven 8 International - Pro Evolution Soccer 4 (PAL) - Winning Eleven 8 (JP)", + "World Soccer Winning Eleven 9 - Pro Evolution Soccer 5 (PAL) - Winning Eleven 9 (JP)", + "World War II Combat: Iwo Jima", + "World War II Combat: Road to Berlin", + "Worms 3D", + "Worms 4: Mayhem", + "Worms Forts: Under Siege", + "Wrath Unleashed", + "Wreckless: The Yakuza Missions - Double-S.T.E.A.L. (JP)", + "WTA Tour Tennis", + "WWE Raw 2", + "WWE WrestleMania 21", + "WWF RAW", + "X-Men Legends", + "X-Men Legends II: Rise of Apocalypse", + "X-Men: Next Dimension", + "X-Men: The Official Game", + "X2: Wolverine's Revenge", + "XGRA: Extreme-G Racing Association", + "Xiaolin Showdown", + "XIII", + "Xyanide", + "Yager", + "Yetisports Arctic Adventures", + "Yonenaga Kunio no Shougi Seminar", + "Yourself!Fitness", + "Yu-Gi-Oh! The Dawn of Destiny", + "Zapper: One Wicked Cricket", + "Zathura", + "ZillerNet" + "#Funtime", + "#killallzombies", + "10 Second Ninja X", + "100ft Robot Golf", + "101 Ways to Die", + "11-11: Memories Retold", + "13 Sentinels: Aegis Rim", + "140", + "198X", + "1001 Spikes", + "1979 Revolution: Black Friday", + "2064: Read Only Memories", + "20XX", + "The 25th Ward: The Silver Case", + "2Dark", + "39 Days to Mars", + "3D Billiards", + "3D MiniGolf", + "3 Minutes to Midnight", + "428: Shibuya Scramble", + "5 Star Wrestling: ReGenesis", + "60 Parsecs!", + "60 Seconds!", + "7 Days to Die", + "7th Sector", + "8-bit Adventure Anthology: Volume I", + "8-Bit Armies", + "8-Bit Hordes", + "8-Bit Invaders", + "88 Heroes", + "8 to Glory", + "9 Monkeys of Shaolin", + "911 Operator", + "99Vidas", + "9th Dawn III", + "Aaero", + "Aaru's Awakening", + "A Boy and His Blob", + "Absolute Drift: Zen Edition", + "Absolver", + "Abyss Odyssey", + "Abyss: The Wraiths of Eden", + "Abzû", + "Accel World vs. Sword Art Online: Millennium Twilight", + "Ace Combat 7: Skies Unknown", + "Ace of Seafood", + "A Certain Magical Virtual-On", + "Aces of the Luftwaffe", + "Achtung! Cthulhu Tactics", + "Act It Out! A Game of Charades", + "Action Henk", + "Active Neurons", + "Adrift", + "The Adventure Pals", + "Adventures of Pip", + "Adventures of Scarlet Curiosity", + "Adventure Time: Finn & Jake Investigations", + "Aegis Defenders", + "Aegis of Earth: Protonovus Assault", + "Aeon Must Die!", + "AER: Memories of Old", + "AeternoBlade", + "AeternoBlade II", + "AFL Evolution", + "AFL Evolution 2", + "A Fold Apart", + "Afterparty", + "Agatha Christie: The ABC Murders", + "Agent A: A Puzzle in Disguise", + "Agents of Mayhem", + "Age of Wonders: Planetfall", + "Aggelos", + "Agony", + "A Hat in Time", + "A Healer Only Lives Twice", + "A Hole New World", + "AI-Limit", + "AI: The Somnium Files", + "Aikano: Yukizora no Triangle", + "AIPD", + "Air Conflicts: Pacific Carriers", + "Air Conflicts: Vietnam", + "Aircraft Evolution", + "Airport Simulator 2019", + "Airship Q", + "A Juggler's Tale", + "Akiba's Beat", + "Akiba's Trip: Hellbound & Debriefed", + "Akiba's Trip: Undead & Undressed", + "Akita Oga Mystery Guide: The Frozen Silverbell Flower", + "Alaloth: Champions of The Four Kingdoms", + "Alba: A Wildlife Adventure", + "Alekhine's Gun", + "Aleste Collection", + "Alex Kidd in Miracle World DX", + "Alienation", + "Alien: Isolation", + "The Alliance Alive HD Remastered", + "All-Star Fruit Racing", + "Alone with You", + "The Alto Collection", + "Alwa's Awakening", + "Alwa's Legacy", + "Always Sometimes Monsters", + "The Amazing American Circus", + "Amazing Discoveries in Outer Space", + "The Amazing Spider-Man 2", + "American Fugitive", + "Amnesia Collection", + "Amnesia: Rebirth", + "Amoeba Battle: Microscopic RTS Action", + "Among the Sleep", + "Amplitude", + "Anarcute", + "Ancestors Legacy", + "Ancestors: The Humankind Odyssey", + "Anew: The Distant Light", + "AngerForce: Reloaded", + "Angry Birds Star Wars", + "The Angry Video Game Nerd I & II Deluxe", + "Anima: Gate of Memories", + "Anime Studio Story", + "Anno: Mutationem", + "Anodyne", + "Anodyne 2: Return to Dust", + "Anoko wa Ore kara Hanarenai", + "Anomaly 2", + "Anonymous;Code", + "Another World: 20th Anniversary Edition", + "Anthem", + "Antiquia Lost", + "Aokana: Four Rhythm Across the Blue", + "AO Tennis", + "AO Tennis 2", + "A Pixel Story", + "A Plague Tale: Innocence", + "Apocalypse", + "Apotheon", + "Aqua Moto Racing Utopia", + "The Aquatic Adventure of the Last Human", + "Ara Fell: Enhanced Edition", + "Aragami", + "Aragami 2", + "Arcade Classics Anniversary Collection", + "Arcade Spirits", + "Arcania: The Complete Tale", + "Archaica: The Path of Light", + "Arc of Alchemist", + "Arise: A Simple Story", + "Ark: Survival Evolved", + "Armello", + "Ar Nosurge DX", + "Arslan: The Warriors of Legend", + "Art of Balance", + "Ary and the Secret of Seasons", + "Asdivine Dios", + "Asdivine Hearts", + "Asdivine Hearts II", + "Asdivine Kamura", + "Asdivine Menace", + "Asemblance", + "Asemblance: Oversight", + "Ashen", + "Ashes Cricket", + "A Space for the Unbound", + "Assassin's Creed III Remastered", + "Assassin's Creed IV: Black Flag", + "Assassin's Creed Chronicles: China", + "Assassin's Creed Chronicles: India", + "Assassin's Creed Chronicles: Russia", + "Assassin's Creed: The Ezio Collection", + "Assassin's Creed Odyssey", + "Assassin's Creed: Origins", + "Assassin's Creed Rogue Remastered", + "Assassin's Creed Syndicate", + "Assassin's Creed Unity", + "Assassin's Creed Valhalla", + "Assault Android Cactus", + "Assault Suit Leynos", + "The Assembly", + "Assetto Corsa", + "Assetto Corsa Competizione", + "Astebreed", + "Asterix & Obelix: Slap Them All!", + "Asterix & Obelix XXL: Romastered", + "Asterix & Obelix XXL 2: Mission: Las Vegum", + "Asterix & Obelix XXL 3: The Crystal Menhir", + "Astroneer", + "A Tale of Paper", + "Atari Flashback Classics: Volume 1", + "Atari Flashback Classics: Volume 2", + "Atari Flashback Classics: Volume 3", + "Atelier Ayesha: The Alchemist of Dusk DX", + "Atelier Escha & Logy: Alchemists of the Dusk Sky DX", + "Atelier Firis: The Alchemist and the Mysterious Journey", + "Atelier Lulua: The Scion of Arland", + "Atelier Lydie & Suelle: Alchemists of the Mysterious Painting", + "Atelier Meruru: The Apprentice of Arland", + "Atelier Rorona: The Alchemist of Arland", + "Atelier Ryza: Ever Darkness & the Secret Hideout", + "Atelier Ryza 2: Lost Legends & the Secret Fairy", + "Atelier Shallie: Alchemists of the Dusk Sea DX", + "Atelier Sophie: The Alchemist of the Mysterious Book", + "Atelier Totori: The Adventurer of Arland", + "Atomic Heart", + "Atomicrops", + "A-Train Express", + "Attack on Titan", + "Attack on Titan 2", + "Attractio", + "ATV Drift and Tricks", + "Auto Chess", + "Autumn's Journey", + "Aven Colony", + "AVICII Invector", + "Away: Journey to the Unexpected", + "AWAY: The Survival Series", + "A Way Out", + "Awesomenauts Assemble", + "Axiom Verge", + "Azkend 2: The World Beneath", + "Azur Lane: Crosswave", + "Azure Reflections", + "Azure Striker Gunvolt: Striker Pack", + "Aztech: Forgotten Gods", + "Babylon's Fall", + "Backbone", + "Backgammon Blitz", + "Back to Bed", + "Back to the Future: The Game – 30th Anniversary Edition", + "Badland: Game of the Year Edition", + "Bad North", + "Baja: Edge of Control HD", + "Bake 'n Switch", + "Balan Wonderworld", + "Baldur's Gate: Enhanced Edition", + "Baldur's Gate II: Enhanced Edition", + "Baldur's Gate: Siege of Dragonspear", + "Banner of the Maid", + "The Banner Saga", + "The Banner Saga 2", + "The Banner Saga 3", + "The Bard's Tale: Remastered and Resnarkled", + "The Bard's Tale IV: Director's Cut", + "A Bastard's Tale", + "Bastion", + "Basement Crawl", + "Batman: Arkham Knight", + "Batman: Return to Arkham", + "Batman: The Enemy Within", + "Batman: The Telltale Series", + "Battalion 1944", + "Battle Chasers: Nightwar", + "Battlefield 1", + "Battlefield 4", + "Battlefield V", + "Battlefield Hardline", + "Battle Garegga Rev.2016", + "Battle of the Bulge", + "Battle Princess Madelyn", + "Battleship", + "Battlestar Galactica: Deadlock", + "Battle Worlds: Kronos", + "Battlezone", + "Batu Ta Batu", + "Bayonetta", + "Bears Can't Drift!?", + "Bear With Me: The Lost Robots", + "Beast Quest", + "Beautiful Desolation", + "Bedlam", + "Bee Simulator", + "Beholder: Complete Edition", + "Beholder 2", + "Below", + "Ben 10", + "Ben 10: Power Trip", + "Bendy and the Ink Machine", + "Berserk and the Band of the Hawk", + "Beyond a Steel Sky", + "Beyond Blue", + "Beyond Eyes", + "Beyond: Two Souls", + "Big Bash Boom", + "Big Pharma", + "Binaries", + "The Binding of Isaac: Rebirth", + "The Binding of Isaac: Repentance", + "Biomutant", + "BioShock: The Collection", + "Biped", + "Birthday of Midnight", + "Birthdays the Beginning", + "Bit.Trip", + "Black & White Bushido", + "Black Desert", + "Blackguards 2", + "Blackhole: Complete Edition", + "The Blackout Club", + "Black Legend", + "Black Paradox", + "Blacksad: Under the Skin", + "Blacksea Odyssey", + "Black the Fall", + "Blackwood Crossing", + "Blade Arcus from Shining EX", + "Blade Assault", + "Blade Ballet", + "Bladed Fury", + "Blade Runner: Enhanced Edition", + "Blade Strangers", + "Bladestorm: Nightmare", + "Blair Witch", + "Blasphemous", + "Blast 'Em Bunnies", + "Blaster Master Zero", + "Blaster Master Zero 2", + "Blaster Master Zero 3", + "Blaster Master Zero Trilogy: MetaFight Chronicle", + "Blast Zone! Tournament", + "BlazBlue: Central Fiction", + "BlazBlue: Chrono Phantasma Extend", + "BlazBlue: Cross Tag Battle", + "Blazerush", + "Blazing Beaks", + "Blazing Chrome", + "Bleed", + "Bleed 2", + "Blind Fate: Edo no Yami", + "Block-a-Pix Deluxe", + "Bloodborne", + "Blood Bowl 2", + "Blood Bowl 3", + "Bloodroots", + "Bloodstained: Curse of the Moon", + "Bloodstained: Curse of the Moon 2", + "Bloodstained: Ritual of the Night", + "Bloody Zombies", + "Bloons TD 5", + "Blue Estate", + "Blue Fire", + "Blue Reflection", + "Blue Rider", + "Blues and Bullets", + "Boiling Bolt", + "Bokosuka Wars II", + "Bokuhime Project", + "Bomber Crew", + "Book of Demons", + "The Book of Unwritten Tales 2", + "Borderlands 3", + "Borderlands: Game of the Year Edition", + "Borderlands: The Handsome Collection", + "Bound", + "Boundary", + "Bound by Flame", + "Boundless", + "Bounty Battle", + "Bow to Blood: Last Captain Standing", + "BPM: Bullets Per Minute", + "BQM: BlockQuest Maker", + "Braid Anniversary Edition", + "Braveland Trilogy", + "Brawl", + "Brawlout", + "Breakers Collection", + "The Bridge", + "Bridge Constructor", + "Bridge Constructor Portal", + "Bridge Constructor Stunts", + "Bridge Constructor: The Walking Dead", + "Brief Battles", + "Brigandine: The Legend of Runersia", + "Bright Memory: Infinite", + "Broforce", + "Broken Age: The Complete Adventure", + "Broken Delusion", + "Broken Sword 5: The Serpent's Curse", + "Brothers: A Tale of Two Sons", + "Brutal", + "Bubble Bobble 4 Friends: The Baron is Back", + "Bubsy: Paws on Fire!", + "Bubsy: The Woolies Strike Back", + "Bucket Knight", + "Bud Spencer & Terence Hill: Slaps and Beans", + "The Bug Butcher", + "Bug Fables: The Everlasting Sapling", + "BugsBox", + "Bugsnax", + "Buildings Have Feelings Too!", + "Bulb Boy", + "Bulletstorm: Full Clip Edition", + "Buried Stars", + "Burnout Paradise Remastered", + "Bus Driver Simulator", + "Bus Simulator 18", + "Bus Simulator 21", + "Bush Hockey League", + "Butcher", + "Cafeteria Nipponica", + "Cake Bash", + "Caladrius Blaze", + "The Caligula Effect 2", + "The Caligula Effect: Overdose", + "Call of Cthulhu: The Official Video Game", + "Call of Duty: Advanced Warfare", + "Call of Duty: Black Ops III", + "Call of Duty: Black Ops IIII", + "Call of Duty: Black Ops Cold War", + "Call of Duty: Ghosts", + "Call of Duty: Infinite Warfare", + "Call of Duty: Modern Warfare", + "Call of Duty: Modern Warfare Remastered", + "Call of Duty: Modern Warfare 2 Campaign Remastered", + "Call of Duty: Warzone", + "Call of Duty: WWII", + "Calvino Noir", + "Candlelight", + "Candleman: The Complete Journey", + "Candle: The Power of the Flame", + "Cannon Brawl", + "Can't Drive This", + "Capcom Arcade Stadium", + "Capcom Beat 'Em Up Bundle", + "Capsule Force", + "Captain Tsubasa: Rise of New Champions", + "Cardpocalypse", + "Carmageddon: Max Damage", + "Car Mechanic Simulator 2018", + "Cars 3: Driven to Win", + "Carto", + "Cartoon Network: Battle Crashers", + "CarX Drift Racing Online", + "Casey Powell Lacrosse 16", + "Castle Crashers Remastered", + "The Castle Game", + "Castles", + "CastleStorm: Definitive Edition", + "CastleStorm II", + "Castlevania Requiem", + "Castlevania Anniversary Collection", + "Catherine: Full Body", + "Catlateral Damage", + "Cat Quest", + "Cat Quest II", + "Cel Damage HD", + "Celeste", + "Chained Echoes", + "Chambara", + "Chaos;Child", + "Chaos Code: New Sign of Catastrophe", + "Chaos on Deponia", + "Chariot", + "Chasm", + "Checkers", + "Chernobylite", + "Chess Ultra", + "Chicken Police: Paint it Red!", + "Child of Light", + "Children of Morta", + "Children of Zodiarcs", + "Chimparty", + "Chime Sharp", + "Chivalry: Medieval Warfare", + "Chivalry 2", + "Chocobo's Mystery Dungeon Every Buddy!", + "Chop is Dish", + "Chorus: Rise As One", + "ChromaGun", + "Chroma Squad", + "Chronicles of Teddy: Harmony of Exidus", + "Chronos: Before the Ashes", + "The Church in the Darkness", + "Ciel Nosurge DX", + "Cinders", + "Circuit Superstars", + "Circuits", + "Citadel: Forged with Fire", + "Cities: Skylines", + "Citizens of Earth", + "Citizens of Space", + "City Shrouded in Shadow", + "Civilization VI", + "Cladun Returns: This is Sengoku!", + "Claire: Extended Cut", + "Clannad", + "Claybook", + "Clockwork Aquario", + "Clockwork Tales: Of Glass and Ink", + "Close to the Sun", + "Cloudpunk", + "Clustertruck", + "Cobra Kai: The Karate Kid Saga Continues", + "Code Vein", + "Coffee Talk", + "Coffin Dodgers", + "Cogen: Sword of Rewind", + "Colt Canyon", + "The Coma: Recut", + "The Coma 2: Vicious Sisters", + "Comet Crash 2", + "Commander Cherry's Puzzled Journey", + "Commandos 2 - HD Remaster", + "Conan Chop Chop", + "Conan Exiles", + "Conarium", + "Concept Destruction", + "Conception Plus: Maidens of the Twelve Stars", + "Concrete Genie", + "Conga Master", + "Construction Simulator 2: Console Edition", + "Construction Simulator 3: Console Edition", + "Constructor HD", + "Constructor Plus", + "Contra Anniversary Collection", + "Contra: Rogue Corps", + "Contrast", + "Control", + "Convallaria", + "Convoy: A Tactical Roguelike", + "Cook, Serve, Delicious! 2", + "Cook, Serve, Delicious! 3", + "Corpse Party: Blood Covered Repeated Fear", + "Cosmic Star Heroine", + "Costume Quest 2", + "Cotton Reboot!", + "The Count Lucanor", + "CounterSpy", + "Cozy Groove", + "Crash Bandicoot 4: It's About Time", + "Crash Bandicoot N. Sane Trilogy", + "Crash Team Racing Nitro-Fueled", + "Crawl", + "Crayola Scoot", + "Crazy Strike Bowling EX", + "Creaks", + "Creature in the Well", + "The Crew", + "The Crew 2", + "Cricket 19", + "Cris Tales", + "CrossCode", + "Crossing Souls", + "CrossKrush", + "Crown Trick", + "Crows: Burning Edge", + "Crypt of the NecroDancer", + "Cryptark", + "Crysis Remastered", + "Crystal Crisis", + "Crystar", + "Cube Life: Island Survival HD", + "Cubers: Arena", + "Cuphead", + "Curious Expedition", + "Curses 'N Chaos", + "Curse of the Dead Gods", + "Cyberdimension Neptunia: 4 Goddesses Online", + "Cyberpunk 2077", + "Cyber Troopers Virtual-On Masterpiece 1995–2001", + "Daggerhood", + "Daisenryaku: Dai Toua Kouboushi 3", + "Dakar 18", + "Damsel", + "Dandara", + "Danganronpa 1-2 Reload", + "Danganronpa V3: Killing Harmony", + "Danganronpa Another Episode: Ultra Despair Girls", + "Danganronpa Trilogy", + "Dangerous Golf", + "Danger Zone", + "Dangun Feveron", + "Dariusburst Chronicle Saviours", + "Darius Cozmic Collection", + "Darius Cozmic Revelation", + "Dark Arcana: The Carnival", + "Dark Devotion", + "Dark Envoy", + "The Dark Pictures Anthology: House of Ashes", + "The Dark Pictures Anthology: Little Hope", + "The Dark Pictures Anthology: Man of Medan", + "Dark Rose Valkyrie", + "Dark Souls Remastered", + "Dark Souls II", + "Dark Souls III", + "Darkest Dungeon", + "Darkestville Castle", + "Darksiders Genesis", + "Darksiders: Warmastered Edition", + "Darksiders II: Deathinitive Edition", + "Darksiders III", + "Darkwood", + "DARQ: Complete Edition", + "Dawn of the Monsters", + "Daylight", + "Daymare: 1998", + "Day of the Tentacle: Remastered Edition", + "Days Gone", + "DayZ", + "Dead Alliance", + "Dead by Daylight", + "Dead Cells", + "Deadcore", + "Dead Island Definitive Edition", + "Dead Island 2", + "Deadlight: Director's Cut", + "The Deadly Tower of Monsters", + "Dead Nation: Apocalypse Edition", + "Dead or Alive 5 Last Round", + "Dead or Alive 6", + "Dead or Alive Xtreme 3", + "Dead or School", + "Deadpool", + "Dead Rising", + "Dead Rising 2", + "Dead Rising 2: Off the Record", + "Dead Rising 4", + "Dead Star", + "Dead Synchronicity: Tomorrow Comes Today", + "Dear Esther", + "Death Come True", + "Death Coming", + "Death Crown", + "Death end re;Quest", + "Death end re;Quest 2", + "Death Stranding", + "Death Squared", + "Death's Gambit", + "Deathsmiles I & II", + "De Blob", + "De Blob 2", + "Decay of Logos", + "Deception IV: The Nightmare Princess", + "Deemo: Reborn", + "Deep Sky Derelicts: Definitive Edition", + "Defenders of Ekron", + "Defense Grid 2", + "Deformers", + "Deiland", + "Deleveled", + "Deliver Us the Moon", + "Deltarune", + "Demetrios: The Big Cynical Adventure", + "Demon Gaze II", + "Demons Age", + "Demon's Tier+", + "Demon's Tilt", + "Dengeki Bunko: Fighting Climax Ignition", + "Densha de Go!! Hashirou Yamanote Sen", + "Deponia", + "Deponia Doomsday", + "Descenders", + "Desperados III", + "Destiny", + "Destiny Connect: Tick-Tock Travelers", + "Destroy All Humans!", + "Detention", + "Detroit: Become Human", + "Deus Ex: Mankind Divided", + "Devil Engine", + "Devil May Cry HD Collection", + "Devil May Cry 4: Special Edition", + "Devil May Cry 5", + "Devious Dungeon", + "Devious Dungeon 2", + "Dex", + "Diablo II: Resurrected", + "Diablo III", + "Diablo IV", + "Die for Valhalla!", + "Digimon Story: Cyber Sleuth", + "Digimon Story: Cyber Sleuth – Hacker's Memory", + "Digimon Survive", + "Digimon World: Next Order", + "Dirt 4", + "Dirt 5", + "Dirt Rally", + "Dirt Rally 2.0", + "Disaster Report 4 Plus: Summer Memories", + "Disc Jam", + "Disco Elysium: The Final Cut", + "Disgaea 1 Complete", + "Disgaea 4 Complete+", + "Disgaea 5 Complete", + "Disgaea 6: Defiance of Destiny", + "Dishonored: Definitive Edition", + "Dishonored 2", + "Dishonored: Death of the Outsider", + "Disintegration", + "The Disney Afternoon Collection", + "Disney Classic Games: Aladdin and The Lion King", + "Disney Infinity: Marvel Super Heroes", + "Disney Infinity 3.0", + "Dissidia Final Fantasy NT", + "Distance", + "Distraint", + "Distraint 2", + "Divekick", + "Divide", + "Divinity: Original Sin", + "Divinity: Original Sin II", + "DJMax Respect", + "DmC: Devil May Cry Definitive Edition", + "Doctor Who: The Edge of Reality", + "Dogos", + "Dokapon UP! Mugen no Roulette", + "Doki-Doki Universe", + "Do Not Feed the Monkeys", + "Don Bradman Cricket 17", + "Don't Die, Mr. Robot!", + "Don't Starve", + "Don't Starve Together", + "Donut County", + "Doodle Devil", + "Doodle God", + "Doodle God Evolution", + "Doom", + "Doom", + "Doom II", + "Doom 3", + "Doom 64", + "Doom Eternal", + "Door Kickers: Action Squad", + "Doraemon Story of Seasons", + "Doughlings: Arcade", + "Downwell", + "Dragon Age: Inquisition", + "Dragon Ball FighterZ", + "Dragon Ball Xenoverse", + "Dragon Ball Xenoverse 2", + "Dragon Ball Z: Kakarot", + "DragonFangZ: The Rose & Dungeon of Time", + "Dragon Fantasy: The Black Tome of Ice", + "Dragon Fin Soup", + "Dragon's Crown Pro", + "Dragon Marked For Death", + "Dragon Quest Builders", + "Dragon Quest Builders 2", + "Dragon Quest Heroes", + "Dragon Quest Heroes II", + "Dragon Quest X", + "Dragon Quest XI", + "Dragon Quest XI S: Echoes of an Elusive Age - Definitive Edition", + "Dragon's Dogma: Dark Arisen", + "Dragon Star Varnir", + "Draugen", + "Draw a Stickman: Epic 2", + "Drawful 2", + "Drawn to Death", + "Dread Nautical", + "Dreamfall Chapters: The Longest Journey", + "Dreams", + "Dreamwalker: Never Fall Asleep", + "Dreii", + "Driveclub", + "Driveclub Bikes", + "Dual Gear", + "Duck Game", + "Duke Nukem 3D: 20th Anniversary World Tour", + "Dungeon Defenders: Awakened", + "Dungeon of the Endless", + "Dungeon Punks", + "Dungeon Village", + "Dungeons 2", + "Dungeons 3", + "DungeonTop", + "Dungreed", + "Dusk Diver", + "Dust: An Elysian Tail", + "Dustoff Heli Rescue 2", + "Dustoff Z", + "The Dwarves", + "Dying Light", + "Dying Light 2", + "Dynasty Warriors 8: Empires", + "Dynasty Warriors 8: Xtreme Legends Complete Edition", + "Dynasty Warriors 9", + "Dynasty Warriors 9: Empires", + "Dynasty Warriors: Godseekers", + "Earth Atlantis", + "Earth Defense Force 4.1", + "Earth Defense Force 5", + "Earth Defense Force 6", + "Earth Defense Force: Iron Rain", + "Earth Defense Force: World Brothers", + "Earth Wars", + "Earthfall", + "Earthlock: Festival of Magic", + "EarthNight", + "EA Sports UFC", + "EA Sports UFC 2", + "EA Sports UFC 3", + "EA Sports UFC 4", + "Eastshade", + "eBaseball Powerful Pro Yakyuu 2020", + "Echo", + "Edge of Eternity", + "Edna & Harvey: Harvey's New Eyes", + "Edna & Harvey: The Breakout", + "Effie", + "eFootball Pro Evolution Soccer 2020", + "eFootball PES 2021 Season Update", + "Eitr", + "Eiyuden Chronicle: Hundred Heroes", + "Elden Ring", + "The Elder Scrolls Online", + "The Elder Scrolls V: Skyrim – Special Edition", + "Electronic Super Joy", + "Electronic Super Joy 2", + "ELEX", + "Elliot Quest", + "Elite: Dangerous", + "Embers of Mirrim", + "Emily Wants to Play", + "Empire of Angels IV", + "Empire of Sin", + "Enchanted Portals", + "Ender Lilies: Quietus of the Knights", + "The End Is Nigh", + "Endless Dungeon", + "Endless Fables: Dark Moor", + "Energy Hook", + "Enigmatis: The Ghosts of Maple Creek", + "Enigmatis 2: The Mists of Ravenwood", + "Enigmatis 3: The Shadow of Karkhala", + "Enter the Gungeon", + "Entwined", + "Epic Astro Story", + "Erica", + "Escape Plan", + "Escape Goat 2", + "The Escapists", + "The Escapists 2", + "The Escapists: The Walking Dead", + "ESP Ra.De. Psy", + "ESports Life Tycoon", + "Ether One", + "Etherborn", + "Euro Fishing", + "Evan's Remains", + "Eve: Valkyrie - Warzone", + "Even the Ocean", + "Eventide: Slavic Fable", + "Eventide 2: Sorcerer's Mirror", + "Eventide 3: Legacy of Legends", + "Everspace", + "Everspace 2", + "Everybody's Golf", + "Everybody's Gone to the Rapture", + "Everything", + "Evil Dead: The Game", + "Evil West", + "The Evil Within", + "The Evil Within 2", + "Evolve", + "Evotinction", + "Exception", + "Exile's End", + "Exist Archive", + "Exit the Gungeon", + "Extinction", + "Exophobia", + "F1 2015", + "F1 2016", + "F1 2017", + "F1 2018", + "F1 2019", + "F1 2020", + "F1 2021", + "Faeria", + "Fairy Fencer F: Advent Dark Force", + "Fairy Tail", + "The Fall", + "The Fall Part 2: Unbound", + "Fall Guys: Ultimate Knockout", + "Fallen Legion: Revenants", + "Fallen Legion: Sins of an Empire", + "Fallout 4", + "Fallout 76", + "Family Feud", + "Family Mysteries: Poisonous Promises", + "Family Mysteries 2: Echoes of Tomorrow", + "Fantasy General II", + "Far Cry 3 Classic", + "Far Cry 4", + "Far Cry 5", + "Far Cry 6", + "Far Cry Primal", + "Far: Lone Sails", + "Farming Simulator 15", + "Farming Simulator 17", + "Farming Simulator 19", + "Farm Together", + "Fast & Furious Crossroads", + "Fast Striker", + "Fate/Extella Link", + "Fate/Extella: The Umbral Star", + "Fat Princess Adventures", + "Fault Milestone One", + "Fault Milestone Two Side: Above", + "Fault Milestone Two Side: Below", + "Fe", + "Feist", + "Felix the Reaper", + "Fell Seal: Arbiter's Mark", + "Fenix Furia", + "Feudal Alloy", + "Fez", + "FIA European Truck Racing Championship", + "Fibbage", + "FIFA 14", + "FIFA 15", + "FIFA 16", + "FIFA 17", + "FIFA 18", + "FIFA 19", + "FIFA 20", + "FIFA 21", + "Fighting EX Layer", + "Fight'N Rage", + "Figment", + "Filthy Lucre", + "Final Fantasy VII", + "Final Fantasy VII Remake", + "Final Fantasy VIII Remastered", + "Final Fantasy IX", + "Final Fantasy X/X-2 HD Remaster", + "Final Fantasy XII: The Zodiac Age", + "Final Fantasy XIV: A Realm Reborn", + "Final Fantasy XIV: Heavensward", + "Final Fantasy XIV: Stormblood", + "Final Fantasy XIV: Shadowbringers", + "Final Fantasy XV", + "Final Fantasy: Crystal Chronicles Remastered", + "Final Fantasy Type-0 HD", + "Final Horizon", + "The Final Station", + "Fire Pro Wrestling World", + "Firewatch", + "Fishing: Barents Sea", + "Fishing Sim World: Pro Tour", + "F.I.S.T.: Forged in Shadow Torch", + "Fist of the North Star: Lost Paradise", + "Five Dates", + "Five Nights at Freddy's", + "Five Nights at Freddy's 2", + "Five Nights at Freddy's 3", + "Five Nights at Freddy's 4", + "Five Nights at Freddy's: Help Wanted", + "Five Nights at Freddy's: Security Breach", + "Five Nights at Freddy's: Sister Location", + "The Flame in the Flood", + "Flame Over", + "Flashback", + "Flat Heroes", + "FlatOut 4: Total Insanity", + "Flinthook", + "Flipper Mechanic", + "Flipping Death", + "Flockers", + "Flow", + "Flower", + "Fluster Cluck", + "Football, Tactics & Glory", + "Forager", + "Forced", + "Foreclosed", + "Foregone", + "For Honor", + "The Forest", + "Forgotton Anne", + "Forma.8", + "For the King", + "Foul Play", + "Four Sided Fantasy", + "Fragments of Him", + "Frane: Dragons' Odyssey", + "Frantics", + "FreakOut: Calamity TV Show", + "Freddy Spaghetti", + "Freedom Finger", + "Freedom Planet", + "Friday the 13th: The Game", + "Frostpunk", + "Full Metal Panic! Fight! Who Dares Wins", + "Full Mojo Rampage", + "Full Throttle Remastered", + "Furi", + "Fury Unleashed", + "Fuser", + "Fushigi no Gensōkyō 3", + "Future Unfolding", + "FutureGrind", + "Futuridium EP Deluxe", + "Fuuraiki 4", + "Gakuen", + "Gal Gun: Double Peace", + "Gal Gun 2", + "Gal Gunvolt", + "Gal Gunvolt Burst", + "Galacide", + "Galak-Z: The Dimensional", + "Galaxy of Pen & Paper +1 Edition", + "Game Dev Story", + "Game of Thrones", + "Game Tengoku CruisnMix", + "Ganbare! Super Strikers", + "Gang Beasts", + "The Gardens Between", + "Garfield Kart: Furious Racing", + "Garou: Mark of the Wolves", + "Gas Guzzlers Extreme", + "Gauntlet: Slayer Edition", + "Gekido: Kintaro's Revenge", + "Gemini: Heroes Reborn", + "Gem Smashers", + "Generation Zero", + "Gensō No Rondo", + "Gensō Rōgoku no Kaleidoscope", + "Geometry Wars 3: Dimensions", + "Get Even", + "Ghost 1.0", + "Ghost Blade HD", + "Ghostbusters: The Video Game Remastered", + "Ghost of a Tale", + "Ghost of Tsushima", + "Ghosts 'n Goblins Resurrection", + "Ghostrunner", + "Ghoulboy: Dark Sword of Goblin", + "G.I. Joe: Operation Blackout", + "Giana Sisters: Twisted Dreams - Director's Cut", + "Giga Wrecker Alt.", + "Ginga Force", + "Giraffe and Annika", + "Girls und Panzer: Dream Tank Match", + "Glass Masquerade", + "Glass Masquerade 2", + "Glitched", + "Gnog", + "Goat Simulator", + "God Eater Resurrection", + "God Eater 2: Rage Burst", + "God Eater 3", + "God of War III Remastered", + "God of War", + "God Wars: Future Past", + "God's Trigger", + "Gods Will Fall", + "Godzilla: The Game", + "Going Under", + "Golden Force", + "Golf Zero", + "The Golf Club", + "The Golf Club 2", + "The Golf Club 2019 featuring PGA Tour", + "Golf with Your Friends", + "Gone Home", + "Gonner", + "Gonner 2", + "Goodbye Deponia", + "Goodbye Volcano High", + "The Good Life", + "Goosebumps: The Game", + "Gotham Knights", + "Gothic Murder: Adventure That Changes Destiny", + "Grab the Bottle", + "Graceful Explosion Machine", + "Granblue Fantasy: Relink", + "Granblue Fantasy Versus", + "Grand Ages: Medieval", + "Grand Kingdom", + "Grand Prix Rock N Racing", + "Grand Prix Story", + "Grand Theft Auto V", + "Gran Turismo Sport", + "Gravel", + "Graven", + "Graveyard Keeper", + "Gravity Heroes", + "Gravity Ghost: Deluxe Edition", + "Gravity Rush Remastered", + "Gravity Rush 2", + "The Great Ace Attorney Chronicles", + "GreedFall", + "Green Hell", + "Grid", + "Grey Skies: A War of the Worlds Story", + "Gridd: Retroenhanced", + "Grim Fandango Remastered", + "Grim Legends: The Forsaken Bride", + "Grim Legends 2: Song of the Dark Swan", + "Grim Legends 3: The Dark City", + "Grip: Combat Racing", + "Gris", + "Grood", + "Grow Home", + "Grow Up", + "Guacamelee! Super Turbo Championship Edition", + "Guacamelee! 2", + "Guard Duty", + "Guardians of the Galaxy: The Telltale Series", + "Guild of Darksteel", + "Guilty Gear", + "Guilty Gear Strive", + "Guilty Gear Xrd: Revelator", + "Guilty Gear Xrd: Sign", + "Guitar Hero Live", + "Gundam Breaker 3", + "Gundam Versus", + "Gungrave G.O.R.E.", + "Gunhead", + "Gunlord X", + "Gunman Clive HD Collection", + "Guns, Gore and Cannoli", + "Guns, Gore and Cannoli 2", + "Gunscape", + "Guns of Icarus Alliance", + "Gunvolt Chronicles: Luminous Avenger iX", + ".hack//G.U. Last Recode", + "Hakoniwa Company Works", + "Hamidashi Creative", + "Hammerwatch", + "Hand of Fate", + "Hand of Fate 2", + "Hard Reset Redux", + "Hard West: Ultimate Edition", + "Hardcore Mecha", + "Hardspace: Shipbreaker", + "Hardware: Rivals", + "Harvest Moon: Light of Hope", + "Harvest Moon: Mad Dash", + "Harvest Moon: One World", + "Has-Been Heroes", + "Hatoful Boyfriend", + "Hatsune Miku: Project Diva Future Tone", + "Hatsune Miku: Project Diva X", + "Haven", + "Headlander", + "Headliner: NoviNews", + "Headsnatchers", + "Heart&Slash", + "Heavenly Bodies", + "Heaven's Vault", + "Heavy Rain", + "Hellblade: Senua's Sacrifice", + "Helldivers", + "Hellfront: Honeymoon", + "Hellmut: The Badass from Hell", + "Hellpoint", + "Here They Lie", + "Her Majesty's Spiffing", + "Hero Defense", + "Hero Must Die. Again", + "Hero Siege", + "Heroland", + "H-Hour: World's Elite", + "Hidden Agenda", + "Hidden Through Time", + "Hide & Dance!", + "Hindsight 20/20", + "Hitman", + "Hitman 2", + "Hitman III", + "Hitman Go", + "Hob", + "Hogwarts Legacy", + "Hohokum", + "Hollow Knight", + "Holy Potatoes! A Weapon Shop?!", + "Holy Potatoes! We're in Space?!", + "Holy Potatoes! What the Hell?!", + "Home - A Unique Horror Adventure", + "Home Free", + "Homefront: The Revolution", + "The Hong Kong Massacre", + "Hood: Outlaws & Legends", + "HoPiKo", + "Horizon Chase Turbo", + "Horizon Forbidden West", + "Horizon Zero Dawn", + "Horned Knight", + "Hotel Life: A Resort Simulator", + "Hotline Miami", + "Hotline Miami 2: Wrong Number", + "Hot Springs Story", + "Hotshot Racing", + "Hot Wheels Unleashed", + "House Flipper", + "The House in Fata Morgana: Dream of the Revenants Edition", + "How to Survive: Storm Warning Edition", + "How to Survive 2", + "How To Take Off Your Mask Remastered", + "Hue", + "Human: Fall Flat", + "Humanity", + "Huntdown", + "Hunt: Showdown", + "The Huntsman: Winter's Curse", + "Hyper Jam", + "Hyper Light Drifter", + "Hyper Void", + "HyperParasite", + "Hypnospace Outlaw", + "I, AI", + "I Am Bread", + "I Am Setsuna", + "Ice Age: Scrat’s Nutty Adventure", + "Icewind Dale: Enhanced Edition", + "Icey", + "Iconoclasts", + "The Idolmaster Platinum Stars", + "The Idolmaster: Starlit Season", + "The Idolmaster: Stella Stage", + "Ikaruga", + "Ikenfell", + "Illusion of L'Phalcia", + "Immortal Planet", + "Immortal Realms: Vampire Wars", + "Immortal Redneck", + "Immortal: Unchained", + "Immortals Fenyx Rising", + "Impact Winter", + "In Between", + "Inazuma Eleven: Great Road of Heroes", + "Infliction: Extended Cut", + "In Celebration of Violence", + "The Incredible Adventures of Van Helsing", + "The Incredible Adventures of Van Helsing II", + "The Incredible Adventures of Van Helsing III", + "Industry Giant II", + "Indivisible", + "Inertial Drift", + "Infamous First Light", + "Infamous Second Son", + "Inferno 2", + "Inferno Climber: Reborn", + "Infinifactory", + "Infinite Minigolf", + "Injustice: Gods Among Us Ultimate Edition", + "Injustice 2", + "The Inner Friend", + "The Inner World", + "In Nightmare", + "The Inpatient", + "In Rays of the Light", + "Insane Robots", + "Inside", + "Inside My Radio", + "Insurgency: Sandstorm", + "In the Shadows", + "Inuwashi: Urabure Tantei to Ojou-sama Keiji no Ikebukuro Jiken File", + "Invector", + "Inversus", + "Invisible, Inc.", + "The Invisible Hours", + "Invisigun Reloaded", + "iO", + "Ion Fury", + "Iris.Fall", + "Ironcast", + "Ironclad Tactics", + "Iron Crypticle", + "Iron Harvest", + "Iron Sea Defenders", + "Irony Curtain: From Matryoshka with Love", + "Is It Wrong to Try to Pick Up Girls in a Dungeon? Infinite Combat", + "Island", + "It's Quiz Time", + "It Takes Two", + "Ittle Dew 2", + "J-Stars Victory Vs+", + "The Jackbox Party Pack", + "The Jackbox Party Pack 2", + "Jamestown+", + "Japanese Rail Sim: Journey to Kyoto", + "Jazzpunk: Director's Cut", + "Jay and Silent Bob: Mall Brawl", + "Jenny LeClue: Detectivú", + "Jeopardy!", + "Jet Car Stunts", + "Jetpack Joyride", + "Jet Set Knights", + "Jett: The Far Shore", + "Jikkyou Powerful Pro Baseball 2016", + "Jinki Resurrection", + "Jisei: The First Case HD", + "Joe Dever's Lone Wolf", + "John Wick Hex", + "JoJo's Bizarre Adventure: Eyes of Heaven", + "Jotun: Valhalla Edition", + "Journey", + "Journey to the Savage Planet", + "Joysound Dive 2", + "Judgment", + "Jumanji: The Video Game", + "Jump Force", + "Jump King", + "Jump Stars", + "Jurassic World Evolution", + "Just Cause 3", + "Just Cause 4", + "Just Dance 2021", + "Just Deal With It!", + "Just Die Already", + "Just Sing", + "Jydge", + "Kandagawa Jet Girls", + "Kamen Rider: Battride War Genesis", + "Kamen Rider: Memory of Heroez", + "Kamiko", + "Karumaruka Circle", + "Katamari Damacy Reroll", + "Katana Kami: A Way of the Samurai Story", + "Kaze and the Wild Masks", + "Keep Talking and Nobody Explodes", + "Ken Follett's The Pillars of the Earth", + "Kena: Bridge of Spirits", + "Kentucky Route Zero: TV Edition", + "Kerbal Space Program", + "Kerbal Space Program 2", + "Kero Blaster", + "Ketsui Deathtiny: Kizuna Jigoku Tachi", + "Kholat", + "Kick Off Revival", + "KickBeat: Special Edition", + "Killing Floor 2", + "Killing Floor: Double Feature", + "Kill It With Fire", + "Kill la Kill: If", + "Killzone Shadow Fall", + "Kingdom Come: Deliverance", + "Kingdom Hearts: Melody of Memory", + "Kingdom Hearts: The Story So Far", + "Kingdom Hearts III", + "Kingdom of Night", + "Kingdom: New Lands", + "Kingdom: Two Crowns", + "Kingdoms of Amalur: Re-Reckoning", + "Kingmaker: Rise to the Throne", + "King Oddball", + "The King of Fighters 2002: Unlimited Match", + "The King of Fighters '97 Global Match", + "The King of Fighters XIV", + "King of Seas", + "Kingpin: Reloaded", + "King's Bounty II", + "Kings of Lorn: The Fall of Ebris", + "King's Quest", + "Kin'iro Loveriche", + "Kin'iro Loveriche: Golden Time", + "Kitaria Fables", + "Kitty Powers' Matchmaker", + "Klaus", + "Knack", + "Knack 2", + "Knightin'+", + "Knights and Bikes", + "A Knight's Quest", + "Knock-Knock", + "Knockout City", + "Knot", + "Knowledge is Power", + "Knowledge is Power: Decades", + "Koi", + "Koihime Enbu", + "Koihime Enbu RyoRaiRai", + "Kona", + "Kotodama: The 7 Mysteries of Fujisawa", + "Kowloon's Rhizome: A Day of the Fire", + "Kromaia Omega", + "Kunio-kun: The World Classics Collection", + "Kwaidan: Azuma Manor Story", + "Labyrinth Life", + "Labyrinth of Galleria: Coven of Dusk", + "Labyrinth of Refrain: Coven of Dusk", + "Labyrinth of Zangetsu", + "LA Cops", + "Laid-Back Camp: Have a Nice Day!", + "Laid-Back Camp -Virtual- Fumoto Campsite", + "Laid-Back Camp -Virtual- Lake Motosu", + "Lair of the Clockwork God", + "L.A. Noire", + "La-Mulana", + "La-Mulana 2", + "Langrisser I & II HD Remastered", + "The Language of Love", + "Lapis x Labyrinth", + "Lara Croft and the Temple of Osiris", + "Lara Croft Go", + "Laser League", + "Laserlife", + "The Last Blade 2", + "The Last Campfire", + "Last Day of June", + "The Last Door", + "The Last Guardian", + "The Last Kids on Earth and the Staff of Doom", + "The Last Remnant Remastered", + "The Last of Us Remastered", + "The Last of Us: Left Behind", + "The Last of Us Part II", + "Last Stop", + "The Last Tinker: City of Colors", + "Late Shift", + "LawBreakers", + "Laws of Machine", + "Layers of Fear", + "Layers of Fear 2", + "League of Legends: Wild Rift", + "Leap of Fate", + "Leaving Lyndow", + "Left Alive", + "The Legend of Heroes: Ao no Kiseki", + "The Legend of Heroes: Hajimari no Kiseki", + "The Legend of Heroes: Trails of Cold Steel", + "The Legend of Heroes: Trails of Cold Steel II", + "The Legend of Heroes: Trails of Cold Steel III", + "The Legend of Heroes: Trails of Cold Steel IV", + "The Legend of Heroes: Zero no Kiseki", + "Legend of Kay Anniversary", + "The Legend of Korra", + "Legend of Mana", + "Lego Batman 3: Beyond Gotham", + "Lego City Undercover", + "Lego DC Super-Villains", + "Lego Dimensions", + "Lego Harry Potter Collection", + "Lego The Hobbit", + "Lego Jurassic World", + "Lego Marvel Super Heroes", + "Lego Marvel Super Heroes 2", + "Lego Marvel's Avengers", + "Lego Movie Videogame", + "Lego Movie Videogame 2", + "Lego Ninjago Movie Video Game", + "Lego Star Wars: The Force Awakens", + "Lego Star Wars: The Skywalker Saga", + "Lego Worlds", + "Legrand Legacy: Tale of the Fatebounds", + "Leo's Fortune: HD Edition", + "Leisure Suit Larry: Wet Dreams Don't Dry", + "Leisure Suit Larry: Wet Dreams Dry Twice", + "Lemnis Gate", + "Lethal League", + "Lethal League Blaze", + "Let's Sing 2020", + "Let's Sing 2021", + "Let's Sing Country", + "Let's Sing Queen", + "Letter Quest Remastered", + "Let Them Come", + "Lichdom: Battlemage", + "Lichtspeer: Double Speer Edition", + "Life Goes On: Done to Death", + "Life Is Strange", + "Life Is Strange 2", + "Link-a-Pix Deluxe", + "Lithium: Inmate 39", + "The Little Acre", + "Little Big Workshop", + "LittleBigPlanet 3", + "Little Devil Inside", + "Little Misfortune", + "Little Nightmares", + "Little Nightmares II", + "Little Town Hero", + "Little Witch Academia: Chamber of Time", + "Livelock", + "Lock's Quest", + "LocoRoco Remastered", + "LocoRoco 2 Remastered", + "Lode Runner Legacy", + "Lonely Mountains: Downhill", + "Lone Survivor: The Director's Cut", + "The Long Dark", + "Lornsword Winter Chronicle", + "Loot Rascals", + "The Lord of the Rings: Adventure Card Game", + "Lords of the Fallen", + "Lost Castle", + "The Lost Child", + "Lost Ember", + "Lost Grimoires: Stolen Kingdom", + "Lost Grimoires 2: Shard of Mystery", + "Lost Ruins", + "Lost Orbit: Terminal Velocity", + "Lost Sea", + "Lost Soul Aside", + "Lost Sphear", + "Lost Wing", + "Lost Words: Beyond the Page", + "Lovecraft's Untold Stories", + "Lovers in a Dangerous Spacetime"}; +} diff --git a/src/modules/videoGame/data/Genres.h b/src/modules/videoGame/data/Genres.h new file mode 100644 index 00000000..555ae195 --- /dev/null +++ b/src/modules/videoGame/data/Genres.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector genres = {"Action", + "Adventure", + "Battle royale", + "Dating sim", + "Endless runner", + "Fighting", + "First-person shooter", + "Hack and slash", + "Horror", + "Massively multiplayer online", + "Music", + "Platformer", + "Puzzle", + "Racing", + "Real-time strategy", + "Roguelike", + "Role-playing game", + "Sandbox", + "Science fiction game", + "Shooter", + "Sim racing", + "Soulslike", + "Sports", + "Stealth", + "Strategy", + "Survival", + "Third-person shooter", + "Tower defense"}; +} diff --git a/src/modules/videoGame/data/Platforms.h b/src/modules/videoGame/data/Platforms.h new file mode 100644 index 00000000..36e35cd3 --- /dev/null +++ b/src/modules/videoGame/data/Platforms.h @@ -0,0 +1,18 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector platforms = {"PC", + "Playstation 5", + "Xbox Series X", + "Nintendo Switch", + "iOS", + "Android", + "Linux", + "Stadia", + "Oculus Quest", + }; +} diff --git a/src/modules/videoGame/data/StudioNames.h b/src/modules/videoGame/data/StudioNames.h new file mode 100644 index 00000000..1dcce837 --- /dev/null +++ b/src/modules/videoGame/data/StudioNames.h @@ -0,0 +1,400 @@ +#pragma once + +#include +#include + +namespace faker +{ + const std::vector studioNames = {"0verflow", + "1st Playable Productions", + "2K Czech", + "989 Studios", + "Acclaim Entertainment", + "Accolade", + "Access Games", + "ACE Team", + "Acheron Design", + "Acquire", + "Active Gaming Media", + "Activision Blizzard", + "Adventure Soft", + "Akella", + "Aki Corporation", + "Alfa System", + "Ancient", + "Anino Games", + "AQ Interactive", + "Arc System Works", + "Arkane Studios", + "Arkedo Studio", + "ArenaNet", + "Arika", + "Artdink", + "ArtePiazza", + "Artificial Studios", + "Artoon", + "Asobo Studio", + "Ascaron", + "Aspect", + "Aspyr Media", + "Atari", + "Atlus", + "Atomic Planet Entertainment", + "Attic Entertainment Software", + "Avalanche Studios", + "Avalanche Software", + "Aventurine SA", + "Babaroga", + "Backbone Entertainment", + "BattleGoat Studios", + "Banpresto", + "Beenox", + "Behemoth", + "Bethesda Softworks", + "Big Blue Bubble", + "Big Huge Games", + "Binary Hammer", + "BioWare", + "The Bitmap Brothers", + "Bizarre Creations", + "Black Rock Studio", + "Blitz Games Studios", + "Blizzard Entertainment", + "Blue Byte Software", + "Blue Fang Games", + "Bohemia Interactive", + "BreakAway Games", + "Brøderbund", + "Brownie Brown", + "BSure Interactive", + "Bullfrog Productions", + "Buka Entertainment", + "Bugbear Entertainment", + "Bungie Studios", + "Capcom", + "Cave", + "Cavia", + "CCP Games", + "CD Projekt RED", + "Centuri", + "Chunsoft", + "Cinemaware", + "Cing", + "Clap Hanz", + "Climax Entertainment", + "Climax Studios", + "Coded Illusions", + "Codemasters", + "Coktel Vision", + "ColdWood Interactive", + "Compile Heart", + "Core Design", + "Crafts & Meister", + "Creat Studios", + "Creative Assembly", + "Criterion Games", + "Cryptic Studios", + "Crystal Dynamics", + "Crytek", + "Cyberlore Studios", + "Cyanide", + "CyberConnect2", + "Day 1 Studios", + "Deadline Games", + "Deck13", + "Deep Silver", + "Demiurge Studios", + "Digital Illusions CE", + "Dimps", + "Disney Interactive Studios", + "Double Fine Productions", + "Double Helix Games", + "Dynamite Idea", + "EDGE Games", + "Egosoft", + "Eidos Interactive", + "Electronic Arts/EA Games", + "Engine Software", + "Epic Games", + "Epicenter Studios", + "Epyx", + "Etranges Libellules", + "Eugen Systems", + "Eurocom", + "Evolution Studios", + "FarSight Studios", + "Fatshark", + "Firaxis Games", + "Firefly Studios", + "First Star Software", + "Flagship Games", + "Flying Lab Software", + "Foundation 9 Entertainment", + "Free Radical Design", + "Frictional Games", + "From Software", + "Frozenbyte", + "Frontier Developments", + "FUN Labs", + "Funcom", + "Futuremark", + "Game Arts", + "GameHouse", + "Gameloft", + "Games2win", + "Game Freak", + "Gearbox Software", + "Genki", + "Giants Software", + "Gogii Games", + "Good-Feel", + "Grasshopper Manufacture", + "Gravity", + "Griptonite Games", + "GSC Game World", + "Guerrilla Games", + "GungHo Online Entertainment", + "Gust Corporation", + "Haemimont Games", + "HAL Laboratory", + "Hanaho", + "Harmonix Music Systems", + "Hasbro Interactive", + "HB Studios", + "HeroCraft", + "High Moon Studios", + "High Voltage Software", + "Hoplon Infotainment", + "Hothead Games", + "Housemarque", + "Hudson Soft", + "Human Head Studios", + "Humongous Entertainment", + "Hyperion Entertainment", + "id Software", + "Idea Factory", + "Ignition Entertainment", + "IguanaBee", + "Imageepoch", + "Infinity Ward", + "Introversion Software", + "Incredible Technologies", + "indieszero", + "Infogrames", + "Insomniac Games", + "Intelligent Systems", + "Interplay Entertainment", + "IO Interactive", + "Irem", + "Irrational Games", + "Transmission Games", + "Jadestone Group", + "Jagex", + "Jaleco (New)", + "Javaground", + "Juice Games", + "Jupiter", + "JV Games", + "Klei Entertainment", + "Koei", + "Konami", + "Krome Studios", + "Krome Studios Melbourne", + "Kuju Entertainment", + "Kush Games", + "Kuma Reality Games", + "Ludia", + "Larian Studios", + "Legacy Interactive", + "Legendo Entertainment", + "Level-5", + "Lionhead Studios", + "Llamasoft", + "Looking Glass Studios", + "LucasArts", + "Luma Arcade", + "Luxoflux", + "Majesco Entertainment", + "Marvelous Entertainment", + "Massive Entertainment", + "Masthead Studios", + "Mattel", + "Maxis Software", + "Mean Hamster Software", + "Media Molecule", + "Media.Vision", + "Mercury Steam", + "Microsoft Game Studios", + "Milestone", + "Milestone S.r.l.", + "M-Inverse", + "Mistwalker", + "Mitchell Corporation", + "Mojang AB", + "Monolith Productions", + "Monolith Soft", + "Monumental Games", + "Mythic Entertainment", + "Namco Bandai", + "Natsume", + "Naughty Dog", + "NCsoft", + "Ndoors", + "Neowiz", + "Nerve Software", + "NetDevil", + "Neverland", + "Neversoft", + "Nexon", + "Next Level Games", + "NGD Studios", + "Nihon Bussan", + "Nihon Falcom", + "Ninjabee", + "Nintendo", + "Nippon Ichi Software", + "NHN", + "Novalogic", + "Novarama", + "n-Space", + "Oddworld Inhabitants", + "Obsidian Entertainment", + "Oxygen Studios", + "Page 44 Studios", + "Paon", + "Papaya Studio", + "Paradox Interactive", + "Pandemic Studios", + "Pax Softnica", + "Pendulo Studios", + "Penguin Software", + "People Can Fly", + "Phantagram", + "Piranha Bytes", + "Pi Studios", + "Pivotal Games", + "Playdead", + "Playdom", + "Playfish", + "Playlogic Entertainment", + "PlayFirst", + "Platinum Games", + "Polyphony Digital", + "PopCap Games", + "Punch Entertainment", + "Pyro Studios", + "Q Entertainment", + "Q-Games", + "Quantic Dream", + "Radical Entertainment", + "Rainbow Studios", + "Rare Limited", + "Raven Software", + "Reality Pump Studios", + "Realtime Associates", + "Realtime Worlds", + "RedLynx", + "Red Storm Entertainment", + "Redtribe", + "Reflexive Entertainment", + "Relic Entertainment", + "Remedy Entertainment", + "Retro Studios", + "Revolution Software", + "Rising Star Games", + "Rockstar North", + "Rockstar Games", + "Rocksteady Studios", + "Ruffian Games", + "Runic Games", + "Running with Scissors", + "Sarbakan", + "Sega", + "SCE Studio Liverpool", + "Sidhe", + "Silicon Knights", + "Silicon Sisters", + "Silicon Studio", + "SNK Playmore", + "Sobee Studios", + "Snowblind Studios", + "Sonic Team", + "Sony Computer Entertainment", + "Sora Ltd.", + "Spectrum HoloByte", + "Spellborn International", + "Splash Damage", + "Square Enix", + "Starbreeze Studios", + "Stardock", + "Star Vault", + "Strawdog Studios", + "Sting Entertainment", + "Straylight Studios", + "Streamline Studios", + "Sucker Punch Productions", + "Sumo Digital", + "Sunflowers Interactive Entertainment Software", + "SuperVillain Studios", + "Swingin' Ape Studios", + "Taito Corporation", + "Tag Games", + "Take-Two Interactive", + "Tale of Tales", + "TaleWorlds", + "Tamsoft", + "Tantrumedia", + "Tantalus Media", + "Team17", + "Techland", + "Tecmo Koei", + "Telltale Games", + "Terminal Reality", + "THQ", + "Three Rings Design", + "TimeGate Studios", + "Torpex Games", + "Torus Games", + "Tose", + "Trapdoor", + "Traveller's Tales", + "Treyarch", + "Tri-Ace", + "Tripwire Interactive", + "Triumph Studios", + "Turn 10 Studios", + "Two Tribes", + "Tygron", + "Ubisoft", + "Ultimate Play The Game", + "United Front Games", + "Universomo", + "Vivendi Games", + "Valve Corporation", + "Vanillaware", + "Venan Entertainment", + "Vertigo Games", + "Vicarious Visions", + "Viwawa", + "Virtual Heroes", + "Virtual Playground", + "Visceral Games", + "Volition", + "W!Games", + "Wahoo Studios", + "Wanako Games", + "Wangame Studios", + "WB Games", + "Webfoot Technologies", + "Wideload Games", + "Wildfire Studios", + "Wolfire Games", + "World Forge", + "Xseed Games", + "YoYo Games", + "ZapSpot", + "ZeniMax Online Studios", + "Zipper Interactive", + "Zylom", + "Zynga"}; +} From 2b8d28f49acbb8b11d7f655e425b4da8235f7e27 Mon Sep 17 00:00:00 2001 From: sandeshkhadka <84300784+sandeshkhadka@users.noreply.github.com> Date: Sun, 15 Oct 2023 01:43:32 +0545 Subject: [PATCH 28/28] Feature/medicine module (#205) * add Medicine module * fix/missing-pragma-once * add medicine module as source * add test for Medicine module --- CMakeLists.txt | 2 + include/faker-cxx/Medicine.h | 47 ++++++++++++++++ src/modules/medicine/Medicine.cpp | 24 +++++++++ src/modules/medicine/MedicineTest.cpp | 40 ++++++++++++++ src/modules/medicine/data/conditon.h | 69 ++++++++++++++++++++++++ src/modules/medicine/data/medicaltests.h | 45 ++++++++++++++++ src/modules/medicine/data/specialty.h | 65 ++++++++++++++++++++++ 7 files changed, 292 insertions(+) create mode 100644 include/faker-cxx/Medicine.h create mode 100644 src/modules/medicine/Medicine.cpp create mode 100644 src/modules/medicine/MedicineTest.cpp create mode 100644 src/modules/medicine/data/conditon.h create mode 100644 src/modules/medicine/data/medicaltests.h create mode 100644 src/modules/medicine/data/specialty.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 064a7af1..c3f883db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,7 @@ set(FAKER_SOURCES src/modules/hacker/Hacker.cpp src/modules/sport/Sport.cpp src/modules/videoGame/VideoGame.cpp + src/modules/medicine/Medicine.cpp ) set(FAKER_UT_SOURCES @@ -74,6 +75,7 @@ set(FAKER_UT_SOURCES src/modules/hacker/HackerTest.cpp src/modules/sport/SportTest.cpp src/modules/videoGame/VideoGameTest.cpp + src/modules/medicine/MedicineTest.cpp ) add_library(${LIBRARY_NAME} ${FAKER_SOURCES}) diff --git a/include/faker-cxx/Medicine.h b/include/faker-cxx/Medicine.h new file mode 100644 index 00000000..dedb7fe6 --- /dev/null +++ b/include/faker-cxx/Medicine.h @@ -0,0 +1,47 @@ +#pragma once + +#include + +namespace faker +{ +class Medicine +{ + +public: + /** + * @brief Returns a random medical condition. + * + * @returns Medical condition. + * + * @code + * Medicine::condition() // "AIDS" + * @endcode + * + */ + static std::string condition(); + + /** + * @brief Returns a random medical test + * + * @returns Medical test. + * + * @code + * Medicine::medicalTest() // "pulmonary auscultation" + * @endcode + * + */ + static std::string medicalTest(); + + /** + * @brief Returns a random Medical specialty + * + * @returns Medical specialty. + * @code + * Medicine::specialty() // "Cardiology" + * @endcode + * + */ + + static std::string specialty(); +}; +} diff --git a/src/modules/medicine/Medicine.cpp b/src/modules/medicine/Medicine.cpp new file mode 100644 index 00000000..b88081f2 --- /dev/null +++ b/src/modules/medicine/Medicine.cpp @@ -0,0 +1,24 @@ +#include "faker-cxx/Medicine.h" + +#include "data/conditon.h" +#include "data/medicaltests.h" +#include "data/specialty.h" +#include "faker-cxx/Helper.h" + +namespace faker +{ +std::string Medicine::condition() +{ + return Helper::arrayElement(medicalConditions); +} + +std::string Medicine::medicalTest() +{ + return Helper::arrayElement(medicalTests); +} +std::string Medicine::specialty() +{ + return Helper::arrayElement(specialties); +} + +} diff --git a/src/modules/medicine/MedicineTest.cpp b/src/modules/medicine/MedicineTest.cpp new file mode 100644 index 00000000..02c312c4 --- /dev/null +++ b/src/modules/medicine/MedicineTest.cpp @@ -0,0 +1,40 @@ + +#include +#include +#include + +#include "data/conditon.h" +#include "data/medicaltests.h" +#include "data/specialty.h" + +using namespace ::testing; +using namespace faker; + +class MedicineTest : public Test +{ +public: +}; + +TEST_F(MedicineTest, shouldGenerateMedicalCondition) +{ + const auto generatedMedicalCondition = Medicine::condition(); + + ASSERT_TRUE(std::ranges::any_of(medicalConditions, [generatedMedicalCondition](const std::string& medicalCondition) + { return medicalCondition == generatedMedicalCondition; })); +} + +TEST_F(MedicineTest, shouldGenerateMedicalTest) +{ + const auto generatedMedicalTest = Medicine::medicalTest(); + + ASSERT_TRUE(std::ranges::any_of(medicalTests, [generatedMedicalTest](const std::string& medicalTest) + { return medicalTest == generatedMedicalTest; })); +} + +TEST_F(MedicineTest, shouldGenerateSpecialty) +{ + const auto generatedSpecialty = Medicine::specialty(); + + ASSERT_TRUE(std::ranges::any_of(specialties, [generatedSpecialty](const std::string& specialty) + { return specialty == generatedSpecialty; })); +} diff --git a/src/modules/medicine/data/conditon.h b/src/modules/medicine/data/conditon.h new file mode 100644 index 00000000..2d08e4b0 --- /dev/null +++ b/src/modules/medicine/data/conditon.h @@ -0,0 +1,69 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector medicalConditions = { + "AIDS", + "Anorexia Nervosa", + "Arthritis, Juvenile Rheumatoid", + "Asthma, Moderate or Severe Persistent", + "Bronchiolitis", + "Bulimia", + "Cancer", + "Cardiorespiratory Diseases", + "Celiac Disease", + "Cerebral Palsy", + "Cleft Lip or Palate", + "Crohn’s Disease", + "Cystic Fibrosis", + "Depression", + "Developmental, Sensory, or Motor Disabilities", + "Diabetes Mellitus", + "Down syndrome", + "Elevated Blood Lead Level", + "Epilepsy", + "Failure to Thrive", + "Fetal Alcohol Syndrome", + "Gall Bladder Disease", + "Gastro Esophageal Reflux Disease", + "Gastrointestinal Abnormalities", + "HIV Infection", + "Heart Disease", + "Hepatitis", + "Hypertension, Chronic/Prehypertension", + "Hypertension, Pregnancy-induced", + "Hyperthyroidism", + "Hypoglycemia", + "Hypothyroidism", + "Inborn Errors of Metabolism", + "Inflammatory Bowel Disease (IBD)", + "Lactose Intolerance", + "Large for Gestational Age", + "Liver Disease", + "Lupus Erythematosus", + "Major Surgery, Burns, or Trauma", + "Malabsorption Syndromes", + "Meningitis", + "Multiple Sclerosis", + "Muscular Dystrophy", + "Neonatal Abstinence Syndrome", + "Neural Tube Defect (Spina Bifida)", + "Nutrient Deficiency Diseases", + "Pancreatitis", + "Parasitic Infection", + "Parkinson’s disease", + "Pneumonia", + "Prediabetes", + "Renal Disease", + "Sickle Cell Anemia", + "Small Bowel Enterocolitis and syndrome", + "Small for Gestational Age (SGA)", + "Thalassemia Major", + "Tuberculosis", + "Ulcerative Colitis", + "Ulcers, Stomach or Intestinal", +}; +} diff --git a/src/modules/medicine/data/medicaltests.h b/src/modules/medicine/data/medicaltests.h new file mode 100644 index 00000000..8d7ff8ca --- /dev/null +++ b/src/modules/medicine/data/medicaltests.h @@ -0,0 +1,45 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector medicalTests = { + "abdominal palpation", + "cardiac auscultation", + "HEENT examination", + "digital rectal examination", + "neurological examination", + "psychiatric assessment", + "pulmonary auscultation", + "vaginal examination", + "coronary catheterization", + "echocardiography", + "electrocardiogram", + "ballistocardiogram", + "skin biopsy", + "hearing test", + "laryngoscopy", + "capsule endoscopy", + "coloscopy", + "endoscopic retrograde cholangiopancreatography", + "esophagogastroduodenoscopy", + "esophageal motility study", + "esophageal pH monitoring", + "liver biopsy", + "electroencephalogram", + "electromyography", + "neuropsychological tests", + "amniocentesis", + "colposcopy", + "mammography", + "hysteroscopy", + "laparoscopy", + "polysomnography", + "pulmonary plethysmography", + "thoracentesis", + "cystoscopy", + "urodynamic testing", +}; +} diff --git a/src/modules/medicine/data/specialty.h b/src/modules/medicine/data/specialty.h new file mode 100644 index 00000000..3bb0b04a --- /dev/null +++ b/src/modules/medicine/data/specialty.h @@ -0,0 +1,65 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector specialties = { + "Accident and emergency medicine", + "Allergist", + "Anaesthetics", + "Cardiology", + "Child psychiatry", + "Clinical biology", + "Clinical chemistry", + "Clinical microbiology", + "Clinical neurophysiology", + "Craniofacial surgery", + "Dermatology", + "Endocrinology", + "Family and General Medicine", + "Gastroenterologic surgery", + "Gastroenterology", + "General Practice", + "General surgery", + "Geriatrics", + "Hematology", + "Immunology", + "Infectious diseases", + "Internal medicine", + "Laboratory medicine", + "Nephrology", + "Neuropsychiatry", + "Neurology", + "Neurosurgery", + "Nuclear medicine", + "Obstetrics and gynaecology", + "Occupational medicine", + "Oncology", + "Ophthalmology", + "Oral and maxillofacial surgery", + "Orthopaedics", + "Otorhinolaryngology", + "Paediatric surgery", + "Paediatrics", + "Pathology", + "Pharmacology", + "Physical medicine and rehabilitation", + "Plastic surgery", + "Podiatric surgery", + "Preventive medicine", + "Psychiatry", + "Public health", + "Radiation Oncology", + "Radiology", + "Respiratory medicine", + "Rheumatology", + "Stomatology", + "Thoracic surgery", + "Tropical medicine", + "Urology", + "Vascular surgery", + "Venereology", +}; +}