From 87ba580333698951c2360bf22c54c2d64c7f8e08 Mon Sep 17 00:00:00 2001 From: Adam <43224109+AdamJovanovic@users.noreply.github.com> Date: Fri, 3 May 2024 20:10:57 +1000 Subject: [PATCH] Issue:446 Add location address data for Serbia. (#533) --- include/faker-cxx/Location.h | 3 +- src/modules/location/Location.cpp | 5 +- src/modules/location/LocationTest.cpp | 21 +- .../location/data/serbia/SerbiaAddresses.h | 40 ++ .../location/data/serbia/SerbiaCities.h | 37 ++ .../location/data/serbia/SerbiaStates.h | 40 ++ .../location/data/serbia/SerbiaStreetNames.h | 502 ++++++++++++++++++ 7 files changed, 645 insertions(+), 3 deletions(-) create mode 100644 src/modules/location/data/serbia/SerbiaAddresses.h create mode 100644 src/modules/location/data/serbia/SerbiaCities.h create mode 100644 src/modules/location/data/serbia/SerbiaStates.h create mode 100644 src/modules/location/data/serbia/SerbiaStreetNames.h diff --git a/include/faker-cxx/Location.h b/include/faker-cxx/Location.h index 5dc5e155..385f7b46 100644 --- a/include/faker-cxx/Location.h +++ b/include/faker-cxx/Location.h @@ -26,7 +26,8 @@ enum class AddressCountry Romania, Latvia, Nepal, - Belgium + Belgium, + Serbia }; class Location diff --git a/src/modules/location/Location.cpp b/src/modules/location/Location.cpp index 7b43e43c..a2471574 100644 --- a/src/modules/location/Location.cpp +++ b/src/modules/location/Location.cpp @@ -23,6 +23,7 @@ #include "data/poland/PolandAddresses.h" #include "data/romania/RomaniaAddresses.h" #include "data/russia/RussiaAddresses.h" +#include "data/serbia/SerbiaAddresses.h" #include "data/spain/SpainAddresses.h" #include "data/TimeZones.h" #include "data/ukraine/UkraineAddresses.h" @@ -54,7 +55,8 @@ const std::map countryToCountryAddressesMappin {AddressCountry::Latvia, latviaAddresses}, {AddressCountry::Nepal, nepalAddresses}, {AddressCountry::Belgium, belgiumAddresses}, - }; + {AddressCountry::Serbia, serbiaAddresses}, +}; const std::map countryAddressToCountryMapping{ {AddressCountry::Usa, Country::Usa}, @@ -76,6 +78,7 @@ const std::map countryAddressToCountryMapping{ {AddressCountry::Latvia, Country::Latvia}, {AddressCountry::Nepal, Country::Nepal}, {AddressCountry::Belgium, Country::Belgium}, + {AddressCountry::Serbia, Country::Serbia}, }; } diff --git a/src/modules/location/LocationTest.cpp b/src/modules/location/LocationTest.cpp index 9491162b..ac1b96c5 100644 --- a/src/modules/location/LocationTest.cpp +++ b/src/modules/location/LocationTest.cpp @@ -41,6 +41,7 @@ #include "data/poland/PolandAddresses.h" #include "data/romania/RomaniaAddresses.h" #include "data/russia/RussiaAddresses.h" +#include "data/serbia/SerbiaAddresses.h" #include "data/spain/SpainAddresses.h" #include "data/TimeZones.h" #include "data/ukraine/UkraineAddresses.h" @@ -56,7 +57,7 @@ const std::vector addressCountries{ AddressCountry::Ukraine, AddressCountry::Italy, AddressCountry::Germany, AddressCountry::Czech, AddressCountry::India, AddressCountry::Denmark, AddressCountry::Australia, AddressCountry::Spain, AddressCountry::Brazil, AddressCountry::Finland, AddressCountry::Estonia, AddressCountry::Romania, - AddressCountry::Latvia}; + AddressCountry::Latvia, AddressCountry::Serbia }; const std::map countryToCountryAddressesMapping{ {AddressCountry::Usa, usaAddresses}, @@ -78,6 +79,7 @@ const std::map countryToCountryAddressesMappin {AddressCountry::Latvia, latviaAddresses}, {AddressCountry::Nepal, nepalAddresses}, {AddressCountry::Belgium, belgiumAddresses}, + {AddressCountry::Serbia, serbiaAddresses}, }; const std::map generatedTestName{ @@ -100,6 +102,7 @@ const std::map generatedTestName{ {AddressCountry::Latvia, "shouldGenerateLatviaAddress"}, {AddressCountry::Nepal, "shouldGenerateNepalAddress"}, {AddressCountry::Belgium, "shouldGenerateBelgiumAddress"}, + {AddressCountry::Serbia, "shouldGenerateSerbiaAddress"}, }; } @@ -937,3 +940,19 @@ TEST_F(LocationTest, shouldGenerateBelgiumStreetAddress) ASSERT_TRUE(std::ranges::any_of(belgiumStreetSuffixes, [&generatedStreetSuffix](const std::string& streetSuffix) { return streetSuffix == generatedStreetSuffix; })); } + +TEST_F(LocationTest, shouldGenerateSerbiaStreet) +{ + const auto generatedStreet = Location::street(AddressCountry::Serbia); + + ASSERT_TRUE(std::ranges::any_of(serbiaStreetNames, [&generatedStreet](const std::string& streetName) + { return streetName == generatedStreet; })); +} + +TEST_F(LocationTest, shouldGenerateSerbiaStreetAddress) +{ + const auto generatedStreetAddress = Location::streetAddress(AddressCountry::Serbia); + + ASSERT_TRUE(std::ranges::any_of(serbiaStreetNames, [&generatedStreetAddress](const std::string& streetName) + { return generatedStreetAddress.find(streetName) != std::string::npos; })); +} diff --git a/src/modules/location/data/serbia/SerbiaAddresses.h b/src/modules/location/data/serbia/SerbiaAddresses.h new file mode 100644 index 00000000..677d63eb --- /dev/null +++ b/src/modules/location/data/serbia/SerbiaAddresses.h @@ -0,0 +1,40 @@ +#pragma once + +#include "../CountryAddresses.h" +#include "SerbiaCities.h" +#include "SerbiaStates.h" +#include "SerbiaStreetNames.h" + +namespace faker +{ +const std::string serbiaZipCodeFormat{"#####"}; + +const std::vector serbiaAddressFormats{"{buildingNumber} {street}"}; + +const std::vector serbiaSecondaryAddressFormats{"Sprat #", "Stan ##"}; + +const std::vector serbiaBuildingNumberFormats{ + "#", + "##", + "###", +}; + +const std::vector serbiaStreetFormats{"{streetName}"}; + +const std::vector serbiaCityFormats{"{cityName}"}; + +const CountryAddresses serbiaAddresses{serbiaZipCodeFormat, + serbiaAddressFormats, + serbiaSecondaryAddressFormats, + serbiaStreetFormats, + {}, + serbiaStreetNames, + {}, + serbiaBuildingNumberFormats, + serbiaCityFormats, + {}, + serbiaCities, + {}, + serbiaStates, + {}}; +} diff --git a/src/modules/location/data/serbia/SerbiaCities.h b/src/modules/location/data/serbia/SerbiaCities.h new file mode 100644 index 00000000..44c605eb --- /dev/null +++ b/src/modules/location/data/serbia/SerbiaCities.h @@ -0,0 +1,37 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector serbiaCities = { + "Beograd", + "Bor", + "Jagodina", + "Kikinda", + "Kraljevo", + "Kruševac", + "Leskovac", + "Niš", + "Novi Pazar", + "Novi Sad", + "Pančevo", + "Paraćin", + "Pirot", + "Požarevac", + "Prokuplje", + "Smederevo", + "Sombor", + "Sopot", + "Sremska Mitrovica", + "Subotica", + "Užice", + "Vranje", + "Vršac", + "Zaječar", + "Zrenjanjin", + "Čačak", + "Šabac", +}; +} diff --git a/src/modules/location/data/serbia/SerbiaStates.h b/src/modules/location/data/serbia/SerbiaStates.h new file mode 100644 index 00000000..22409d83 --- /dev/null +++ b/src/modules/location/data/serbia/SerbiaStates.h @@ -0,0 +1,40 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector serbiaStates = { + "Borski okrug", + "Braničevski okrug", + "Grad Beograd", + "Zaječarski okrug", + "Zapadnobački okrug", + "Zlatiborski okrug", + "Jablanički okrug", + "Južnobanatski okrug", + "Južnobački okrug", + "Kolubarski okrug", + "Kosovski okrug", + "Kosovskomitrovački okrug", + "Kosovskopomoravski okrug", + "Mačvanski okrug", + "Moravički okrug", + "Nišavski okrug", + "Pećki okrug", + "Pirotski okrug", + "Podunavski okrug", + "Pomoravski okrug", + "Prizrenski okrug", + "Pčinjski okrug", + "Rasinski okrug", + "Raški okrug", + "Severnobanatski okrug", + "Severnobački okrug", + "Srednjobanatski okrug", + "Sremski okrug", + "Toplički okrug", + "Šumadijski okrug", +}; +} diff --git a/src/modules/location/data/serbia/SerbiaStreetNames.h b/src/modules/location/data/serbia/SerbiaStreetNames.h new file mode 100644 index 00000000..899e16a2 --- /dev/null +++ b/src/modules/location/data/serbia/SerbiaStreetNames.h @@ -0,0 +1,502 @@ +#pragma once + +#include +#include + +namespace faker +{ +const std::vector serbiaStreetNames{ + "1. sokače", + "1300 kaplara", + "14. decembra", + "16. oktobra", + "2. sokače", + "20. oktobra", + "21. divizije", + "21. maja", + "22. oktobra", + "23. srpske udarne divizije", + "27. marta", + "29. novembra", + "3. sokače", + "4. sokače", + "5. sokače", + "6. Ličke divizije", + "6. aprila", + "6. sokače", + "7. jula", + "7. sokače", + "8. sokače", + "Abardareva", + "Alaska", + "Albanska", + "Albanske spomenice", + "Aleksandra Deroka", + "Aleksandra Fleminga", + "Aleksandra Glišića", + "Aleksandra Stambolijskog", + "Auto put Beograd Novi Sad", + "Avde Karabegovića", + "Baba Višnjina", + "Bagremova", + "Bajdina", + "Baje Sekulića", + "Bajronova", + "Bakarska", + "Bakićeva", + "Balkanska", + "Baltička", + "Balšina", + "Bana Ivaniša", + "Bana Mladena", + "Banatska", + "Banijska", + "Belička", + "Belog bagrema", + "Belokrajjnska", + "Belopalanačka", + "Beogradska", + "Bilećka", + "Bogoboja Atanackovića", + "Bogojavljenska", + "Bogoljuba čukića", + "Bojadžijska", + "Bokeljska", + "Bosanska", + "Bose Milićević", + "Bože Jankovića", + "Božice Divnić", + "Božidara Adžije", + "Bulevar AVNOJa", + "Bulevar Arsenija Čarnojevića", + "Bulevar Mira", + "Bulevar Vojvode Bojovića", + "Bulevar Vojvode Mišića", + "Bulevar Vojvode Putnika", + "Bulevar kralja Aleksandra", + "Bulevar umetnosti", + "Camblakova", + "Cankareva", + "Cara Dušana", + "Cara Lazara", + "Carice Milice", + "Cavtatska", + "Cerska", + "Cetinjska", + "Crnogorska", + "Crnojevića", + "Crnotravska", + "Cvetanova ćuprija", + "Cvetna", + "Cvećarska", + "Cvijićeva", + "Daljska", + "Dalmatinska", + "Danice Marković", + "Danijelova", + "Danila Bojovića", + "Danila Ilića", + "Danila Kiša", + "Daruvarska", + "Davida Pajića", + "Debarska", + "Deligradska", + "Despota Stefana", + "Devojačka", + "Dimitrija Koturovića", + "Donja", + "Dositejeva", + "Dr Agostina Neta", + "Dr Ivana Ribara", + "Dr Izabele Haton", + "Dr Jovana Danića", + "Dr Rozali Morton", + "Drage Ljočić", + "Drage Spasić", + "Dragoslava Srejovića", + "Džona Kenedija", + "Egejska", + "Elija Fincija", + "Emila Zole", + "Emilijana Joksimovića", + "Fabrisova", + "Filipa Višnjića", + "Finžgarova", + "Frana Levstika", + "France Prešerna", + "Francuska", + "Fruškogorska", + "Galipoljska", + "Gandijeva", + "Garibaldijeva", + "Garsije Lorke", + "Gastona Gravijea", + "General Živka Pavlovića", + "Generala Aračića", + "Generala Ždanova", + "Geteova", + "Glamočka", + "Gligorija Vozarovića", + "Golijska", + "Golsvortijeva", + "Gorenjska", + "Gornja", + "Gospodar Jevremova", + "Gospodar Jovanova", + "Gostivarska", + "Gragorčićeva", + "Gramšijeva", + "Gračanička", + "Gruje Miškovića", + "Grčića Milenka", + "Gundulićev venac", + "Guslarska", + "Hadži Milentijeva", + "Hadži Prodanova", + "Hadži Ruvimova", + "Hadži Đerina", + "Hajduk Stankova", + "Hajima Davića", + "Hanibala Lucića", + "Hercegovačka", + "Heroja Milana Tepića", + "Husinskih rudara", + "Hvarska", + "Idvorska", + "Igmanska", + "Ignjata Joba", + "Ilije Garašanina", + "Ilirska", + "Imotska", + "Indire Gandi", + "Internacionalnih brigada", + "Isidore Sekulić", + "Ivana Milutinovića", + "Ivana Mičurina", + "Ivanovačka", + "Ivice Devčića", + "Ivićeva", + "Izletnička", + "Izvorska", + "Jablanička", + "Jabučka", + "Jakuba Kuburovića", + "Jana Kolara", + "Janković Stojana", + "Jasenička", + "Jaše Prodanovića", + "Jefimijina", + "Jerneja Kopitara", + "Jerusalimska", + "Jezdićeva", + "Jirečekova", + "Jonska", + "Jovana Avakumovića", + "Jovana Mikića", + "Jovana Trajkovića", + "Kajuhova", + "Kalenićeva", + "Karamatina", + "Karađorđev trg", + "Karla Lukača", + "Karlovačka", + "Karnedžijeva", + "Katanićeva", + "Katarine Milovuk", + "Katićeva", + "Kačanička", + "Kedrova", + "Kej oslobođenja", + "Kijevska", + "Kirovljeva", + "Klanačka", + "Klare Cetkin", + "Kneza Miloša", + "Kninska", + "Kolarčeva", + "Komovska", + "Kondina", + "Konovljanska", + "Kopernikova", + "Kosančićev venac", + "Kosmajska", + "Kosovska", + "Koste Trifkovića", + "Kostolačka", + "Kovačka", + "Kozjačka", + "Kragujevačkih đaka", + "Kritska", + "Krivolačka", + "Krušedolska", + "Kruševačka", + "Kumanovska", + "Kursulina", + "Kuršumlijska", + "Ladno brdo", + "Lazara Savatića", + "Laze Kostića", + "Lenjinov Bulevar", + "Lepenička", + "Limska", + "Lipovačka", + "Listopadna", + "Ljermontova", + "Ljube Šercera", + "Lole Ribara", + "Lopudska", + "Lovačka", + "Lošinjska", + "Luja Adamiča", + "Lukijana Mušitskog", + "Magelanova", + "Maglajska", + "Majdanpečka", + "Majke Jevrosime", + "Marijane Gregoran", + "Marije Bursać", + "Marička", + "Marka Oreškovića", + "Marka Pola", + "Marulićeva", + "Maršala Birjuzova", + "Mažuranićeva", + "Metohijska", + "Mihaila Đurića", + "Mike Alasa", + "Milana Premasunca", + "Milana Rakića", + "Mile Dimić", + "Milice Srpkinje", + "Miloja Đaka", + "Miloša Pocerca", + "Milunke Savić", + "Milutina Bojića", + "Milutina Milankovića", + "Mirijevski Bulevar", + "Miročka", + "Mite Ružića", + "Mitra Bakića", + "Mlade Bosne", + "Mojkovačka", + "Mosorska", + "Mostarska", + "Moše Pijade", + "Murska", + "Mutapova", + "Nade Dimić", + "Nade Naumović", + "Nake Spasić", + "Namesnika Protića", + "Nehruova", + "Nemanjina", + "Nerodimska", + "Neznanog junaka", + "Nikolaja Gogolja", + "Nikole Grulovića", + "Nikole Markovića", + "Nikole Ostrovskog", + "Nikšićka", + "Nićifora Dučića", + "Nova Skojevska", + "Novakova", + "Novogradska", + "Novosadska", + "Nušićeva", + "Obalskih radnika", + "Obilićev venac", + "Oblakovska", + "Obrenovački put", + "Ognjena Price", + "Ohridska", + "Olge Alkalaj", + "Olge Jovanović", + "Omladinska", + "Omladinskih brigada", + "Opatijska", + "Orahova", + "Oračka", + "Orfelinova", + "Orlovska", + "Osmana Đikića", + "Ozrenska", + "Oštreljska", + "Pabla Nerude", + "Paje Adamova", + "Palih boraca", + "Palisadska", + "Palmira Toljatija", + "Palmotićeva", + "Pančevački put", + "Partizanski put", + "Patrisa Lumumbe", + "Paunova", + "Pavla Papa", + "Paštrovićeva", + "Pere Velimirovića", + "Petra Kočića", + "Petra Lekovića", + "Pešterska", + "Pilota M. Petrovića", + "Pinkijeva", + "Pionirska", + "Pirotska", + "Piva Karamatijevića", + "Pivljanina Baje", + "Plzenska", + "Pop Lukina", + "Požarevačka", + "Požeška", + "Prenjska", + "Preševska", + "Prilepska", + "Primorska", + "Prokupačka", + "Prolomska", + "Prote Mateje", + "Prvomajska", + "Ptujska", + "Pukovnika Bacića", + "Puškinova", + "Radanska", + "Rade Končara", + "Radivoja Koraća", + "Radnička", + "Radoja Dakića", + "Rajićeva", + "Ramska", + "Rankeova", + "Ratka Mitrovića", + "Ravanička", + "Reljina", + "Ribnička", + "Rige od Fere", + "Risanska", + "Rospi ćuprija", + "Rovinjska", + "Roze Luksemburg", + "Ruska", + "Ruzveltova", + "Ruđera Boškovića", + "Salvadora Aljendea", + "Save Jovanovića", + "Save Kovačevića", + "Save Tekelije", + "Savski Trg", + "Savski nasip", + "Savski venac", + "Senjanina Ive", + "Serdara Janka Vukotića", + "Severni bulevar", + "Sime Šolaje", + "Simina", + "Simonidina", + "Siva stena", + "Skender begova", + "Skerlićeva", + "Skver Mire Trailović", + "Slanački put", + "Slavka Rodić", + "Slavoljuba Vuksanovića", + "Sokobanjska", + "Solunska", + "Somborska", + "Sonje Marinković", + "Sopoćanska", + "Srpskih udarnih brigada", + "Stanka Paunovića Veljka", + "Stevana Opačića", + "Stevana Sremca", + "Strahinjića Bana", + "Strma", + "Strumička", + "Studentski trg", + "Subotička", + "Susedgradska", + "Svetozara Markovića", + "Svrljiška", + "Tadeuša Košćuška", + "Takovska", + "Tamnavska", + "Terazije", + "Tetovska", + "Timočka", + "Tiršova", + "Todora Dukina", + "Tolstojeva", + "Treći bulevar", + "Trg Nikole Pašića", + "Trg Oslobođenja", + "Trg Republike", + "Trg Slavija", + "Trgovačka", + "Trogirska", + "Trstenjakova", + "Tršćanska", + "Ubska", + "Ugrinovačka", + "Uralska", + "Uroša Predića", + "Uroša Trojanovića", + "Uskočka", + "Uzun Mirkova", + "Učitelja Stojana", + "Ušće", + "Užička", + "Vajara Đoke Jovanovića", + "Vardarska", + "Vareška", + "Vase Pelagića", + "Velebitska", + "Velike stepenice", + "Velizara Stankovića", + "Veslina Masleše", + "Viktora Igoa", + "Viline Vode", + "Visoka", + "Visokog Stevana", + "Vitanovačka", + "Višegradska", + "Vladete Kovačevića", + "Vladimira Popovića", + "Vlajkovićeva", + "Vodovodska", + "Vojvode Stepe", + "Vukasovićeva", + "Zabrđanska", + "Zagorska", + "Zaplanjska", + "Zeleno brdo", + "Zemunska", + "Zemunski put", + "Zetska", + "Zmaj Jovina", + "Zvečanska", + "Ćirila i Metodija", + "Ćukovačka", + "Ćustendilska", + "Čarlija Čaplina", + "Čegarska", + "Čelebićka", + "Čumićeva", + "Đakovačka", + "Đerdapska", + "Đorđa Jovanovića", + "Đure Daničića", + "Đure Đakovića", + "Šafarikova", + "Šantićeva", + "Šejkina", + "Šekspirova", + "Šetalište", + "Šilerova", + "Školski trg", + "Šumatovačka", + "Šupljikčeva", + "Žabljačka", + "Žarka Zrenjanina", + "Živka Davidovića", + "Živojina Lazića", + "Žička", +}; +} \ No newline at end of file