Skip to content

Commit

Permalink
Add location addresses data from India #130 (#433)
Browse files Browse the repository at this point in the history
* Added Indian Location Support

* Added Indian Location Support
  • Loading branch information
nithieshM committed Jan 11, 2024
1 parent 513146a commit a0dcbd1
Show file tree
Hide file tree
Showing 7 changed files with 1,366 additions and 4 deletions.
4 changes: 3 additions & 1 deletion include/faker-cxx/types/AddressCountry.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ enum class AddressCountry
Germany,
Czech,
Australia,
India,
};

const std::vector<AddressCountry> addressCountries{
AddressCountry::Usa, AddressCountry::Poland, AddressCountry::France,
AddressCountry::Russia, AddressCountry::Ukraine, AddressCountry::Italy,
AddressCountry::Germany, AddressCountry::Czech,
AddressCountry::Germany, AddressCountry::Czech, AddressCountry::India,
};

inline std::string toString(AddressCountry country)
Expand All @@ -32,6 +33,7 @@ inline std::string toString(AddressCountry country)
{AddressCountry::Usa, "Usa"}, {AddressCountry::Poland, "Poland"}, {AddressCountry::France, "France"},
{AddressCountry::Russia, "Russia"}, {AddressCountry::Ukraine, "Ukraine"}, {AddressCountry::Italy, "Italy"},
{AddressCountry::Germany, "Germany"}, {AddressCountry::Czech, "Czech"}, {AddressCountry::Australia, "Australia"},
{AddressCountry::India, "India"},
};

return countryToStringMapping.at(country);
Expand Down
5 changes: 3 additions & 2 deletions src/modules/location/Location.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "faker-cxx/Helper.h"
#include "faker-cxx/Person.h"
#include "faker-cxx/String.h"
#include "data/india/IndiaAddresses.h"

namespace faker
{
Expand All @@ -30,15 +31,15 @@ const std::map<AddressCountry, CountryAddresses> countryToCountryAddressesMappin
{AddressCountry::Russia, russiaAddresses}, {AddressCountry::France, franceAddresses},
{AddressCountry::Ukraine, ukraineAddresses}, {AddressCountry::Italy, italyAddresses},
{AddressCountry::Germany, germanyAddresses}, {AddressCountry::Czech, czechAddresses},
{AddressCountry::Australia, australiaAddresses},
{AddressCountry::Australia, australiaAddresses}, {AddressCountry::India, indiaAddresses},
};

const std::map<AddressCountry, Country> countryAddressToCountryMapping{
{AddressCountry::Usa, Country::Usa}, {AddressCountry::Poland, Country::Poland},
{AddressCountry::Russia, Country::Russia}, {AddressCountry::France, Country::France},
{AddressCountry::Ukraine, Country::Ukraine}, {AddressCountry::Italy, Country::Italy},
{AddressCountry::Germany, Country::Germany}, {AddressCountry::Czech, Country::Czech},
{AddressCountry::Australia, Country::Australia},
{AddressCountry::Australia, Country::Australia}, {AddressCountry::India, Country::India},
};
}

Expand Down
36 changes: 35 additions & 1 deletion src/modules/location/LocationTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "data/italy/ItalyAddresses.h"
#include "data/germany/GermanyAddresses.h"
#include "data/usa/UsaAddresses.h"
#include "data/india/IndiaAddresses.h"

using namespace ::testing;
using namespace faker;
Expand All @@ -38,7 +39,7 @@ const std::map<AddressCountry, CountryAddresses> countryToCountryAddressesMappin
{AddressCountry::Russia, russiaAddresses}, {AddressCountry::France, franceAddresses},
{AddressCountry::Ukraine, ukraineAddresses}, {AddressCountry::Italy, italyAddresses},
{AddressCountry::Germany, germanyAddresses}, {AddressCountry::Czech, czechAddresses},
{AddressCountry::Australia, australiaAddresses},
{AddressCountry::Australia, australiaAddresses}, {AddressCountry::India, indiaAddresses},
};

const std::map<AddressCountry, std::string> generatedTestName{
Expand All @@ -51,6 +52,7 @@ const std::map<AddressCountry, std::string> generatedTestName{
{AddressCountry::Germany, "shouldGenerateGermanAddress"},
{AddressCountry::Czech, "shouldGenerateCzechAddress"},
{AddressCountry::Australia, "shouldGenerateAustraliaAddress"},
{AddressCountry::India, "shouldGenerateIndiaAddress"},
};
}

Expand Down Expand Up @@ -575,4 +577,36 @@ TEST_F(LocationTest, shouldGenerateAustraliaStreetAddress)
ASSERT_TRUE(checkIfAllCharactersAreNumeric(generatedBuildingNumber));
ASSERT_TRUE(std::ranges::any_of(australiaStreetSuffixes, [&generatedStreetSuffix](const std::string& streetSuffix)
{ return streetSuffix == generatedStreetSuffix; }));
}

TEST_F(LocationTest, shouldGenerateIndiaStreet)
{
const auto generatedStreet = Location::street(AddressCountry::India);

const auto generatedStreetElements = StringHelper::split(generatedStreet, " ");

const auto& generatedStreetSuffix =
StringHelper::join({generatedStreetElements.begin() + 1, generatedStreetElements.end()});

ASSERT_GE(generatedStreetElements.size(), 2);

ASSERT_TRUE(std::ranges::any_of(indiaStreetSuffixes, [&generatedStreetSuffix](const std::string& streetSuffix)
{ return streetSuffix == generatedStreetSuffix; }));
}

TEST_F(LocationTest, shouldGenerateIndiaStreetAddress)
{
const auto generatedStreetAddress = Location::streetAddress(AddressCountry::India);

const auto generatedStreetAddressElements = StringHelper::split(generatedStreetAddress, " ");

const auto& generatedBuildingNumber = generatedStreetAddressElements[0];
const auto& generatedStreetSuffix =
StringHelper::join({generatedStreetAddressElements.begin() + 2, generatedStreetAddressElements.end()});

ASSERT_GE(generatedStreetAddressElements.size(), 3);
ASSERT_TRUE(!generatedBuildingNumber.empty());
ASSERT_TRUE(checkIfAllCharactersAreNumeric(generatedBuildingNumber));
ASSERT_TRUE(std::ranges::any_of(indiaStreetSuffixes, [&generatedStreetSuffix](const std::string& streetSuffix)
{ return streetSuffix == generatedStreetSuffix; }));
}
29 changes: 29 additions & 0 deletions src/modules/location/data/india/IndiaAddresses.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#pragma once

#include "../CountryAddresses.h"
#include "IndiaCities.h"
#include "IndiaStreetSuffixes.h"
#include "IndiaStates.h"

namespace faker {
const std::string indiaZipCodeFormat{"######"};

const std::vector<std::string> indiaAddressFormats{"{buildingNumber} {street}"};

const std::vector<std::string> indiaSecondaryAddressFormats{"Apt. ###", "Flat ###"};

const std::vector<std::string> indiaBuildingNumberFormats{"#####", "####", "###"};

const std::vector<std::string> indiaStreetFormats{"{firstName} {streetSuffix}", "{lastName} {streetSuffix}"};

const CountryAddresses indiaAddresses{indiaCities,
indiaZipCodeFormat,
indiaAddressFormats,
indiaSecondaryAddressFormats,
indiaStreetFormats,
{},
{},
indiaStreetSuffixes,
indiaBuildingNumberFormats,
indiaStates};
}

0 comments on commit a0dcbd1

Please sign in to comment.