Add es-MX and en-ZA yml files. (#154)

* Add es-MX and en-ZA yml files.

Fixes DiUS/java-faker#153

The problem was with a fix in de89bf74 .  The fix used a simple toLowerCase
on the directive which didn't adequetly transform it.  This manifested itself
in an unresolved directive value in the en-ZA an es-MX file.  The es-MX file
contained #{PhoneNumber.lada_tres} as a directive and did contain phone_number > lada_tres
but when the FakeValueService attempted to transform the directive it transformed it to
phonenumber.lada_tres erroneously.  The fix in this commit properly converts
PhoneNumber.lada_tres > phone_number.lada_tres which then properly resolves as a simple
reference within the yml file.

* Add locale specific tests for phone es-MX and en-ZA
This commit is contained in:
Trever Shick
2016-10-31 20:14:45 -04:00
committed by Ricky Yim
parent 6c05f44623
commit dba083f66b
4 changed files with 163 additions and 3 deletions
@@ -427,7 +427,7 @@ public class FakeValuesService {
// did first but FIRST we change the Object reference Class.method_name with a yml style internal refernce ->
// class.method_name (lowercase)
if (resolved == null && isDotDirective(directive)) {
resolved = safeFetch(simpleDirective.toLowerCase(), null);
resolved = safeFetch(javaNameToYamlName(simpleDirective), null);
}
return resolved;
@@ -437,13 +437,24 @@ public class FakeValuesService {
return directive.contains(".");
}
/**
* @return a yaml style name from the classname of the supplied object (PhoneNumber => phone_number)
*/
private String classNameToYamlName(Object current) {
return current.getClass().getSimpleName()
.replaceAll("([A-Z])", "_$1")
return javaNameToYamlName(current.getClass().getSimpleName());
}
/**
* @return a yaml style name like 'phone_number' from a java style name like 'PhoneNumber'
*/
private String javaNameToYamlName(String expression) {
return expression.replaceAll("([A-Z])", "_$1")
.substring(1)
.toLowerCase();
}
/**
* Given a directive like 'firstName', attempts to resolve it to a method. For example if obj is an instance of
* {@link Name} then this method would return {@link Name#firstName()}. Returns null if the directive is nested
+51
View File
@@ -0,0 +1,51 @@
en-ZA:
faker:
internet:
domain_suffix: [org.za, co.za, com]
address:
default_country: [South Africa, The Replublic of South Africa, SA]
post_code: '####'
provinces: [Limpopo, Gauteng, Free State,
North West, Northern Cape, Western Cape,
KwaZulu-Natal, Mpumalanga, Eastern Cape]
province:
- "#{provinces}"
cities: [ Polokwane, Johannesburg, Pretoria, Tshwane,Durban,
Pietermaritzburg, Nelspruit, Cape Town, Stellenbosch, Port Elizabeth,
East London, Kimberley, Rustenburg, Bloemfontein ]
city:
- "#{cities}"
phone_number:
# https://en.wikipedia.org/wiki/Telephone_numbers_in_South_Africa
dial_code: ['10', '11', '12', '13', '14', '15', '16', '17', '18', '21', '22', '23', '24', '27', '28', '31', '32', '33', '34', '35', '36', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '51', '53', '54', '56', '57', '58']
exchange_code: ["201", "202", "203", "205", "206", "207", "208", "209", "210", "212", "213", "214", "215", "216", "217", "218", "219", "224", "225", "227", "228", "229", "231", "234", "239", "240", "248", "251", "252", "253", "254", "256", "260", "262", "267", "269", "270", "276", "281", "283", "301", "302", "303", "304", "305", "307", "308", "309", "310", "312", "313", "314", "315", "316", "317", "318", "319", "320", "321", "323", "330", "331", "334", "336", "337", "339", "347", "351", "352", "360", "361", "386", "401", "402", "404", "405", "406", "407", "408", "409", "410", "412", "413", "414", "415", "417", "419", "423", "424", "425", "434", "435", "440", "443", "445", "464", "469", "470", "475", "478", "479", "480", "484", "501", "502", "503", "504", "505", "507", "508", "509", "510", "512", "513", "515", "516", "517", "518", "520", "530", "540", "541", "551", "557", "559", "561", "562", "563", "564", "567", "570", "571", "573", "574", "580", "585", "586", "601", "602", "603", "605", "606", "607", "608", "609", "610", "612", "614", "615", "616", "617", "618", "619", "620", "623", "626", "630", "631", "636", "641", "646", "650", "651", "660", "661", "662", "667", "678", "682", "701", "702", "703", "704", "706", "707", "708", "712", "713", "714", "715", "716", "717", "718", "719", "720", "724", "727", "731", "732", "734", "737", "740", "754", "757", "760", "763", "765", "770", "772", "773", "774", "775", "781", "785", "786", "801", "802", "803", "804", "805", "806", "808", "810", "812", "813", "814", "815", "816", "817", "818", "828", "830", "831", "832", "835", "843", "845", "847", "848", "850", "856", "857", "858", "859", "860", "862", "863", "864", "865", "870", "872", "878", "901", "903", "904", "906", "907", "908", "909", "910", "912", "913", "914", "915", "916", "917", "918", "919", "920", "925", "928", "931", "936", "937", "940", "941", "947", "949", "952", "954", "956", "959", "970", "971", "972", "973", "975", "978", "979", "980", "984", "985", "989"]
formats:
- "0#{PhoneNumber.dial_code}-#{PhoneNumber.exchange_code} ####"
- "(0#{PhoneNumber.dial_code}) #{PhoneNumber.exchange_code}-####"
- "27#{PhoneNumber.dial_code}-#{PhoneNumber.exchange_code} ####"
cell_phone:
formats:
# vodacom
- "+2782 ### ####"
- "+2772 ### ####"
- "+2776 ### ####"
- "+2779 ### ####"
- "+2760 ### ####"
- "+2761 ### ####"
# mtn
- "+2783 ### ####"
- "+2773 ### ####"
- "+2763 ### ####"
# 8ta
- "+2781 ### ####"
- "+2761 ### ####"
# cell-c
- "+2784 ### ####"
- "+2774 ### ####"
name:
last_name: [Dlamini, Zulu, Mabunda, Makhanya, Khoza, Zuma, Zondi]
first_name: [Rapulane, Nthabiseng, Kopano, Mpho, Lungelo,
Ziyanda, Nqobile, Monde]
id_number:
formats: ["##########08#"]
+82
View File
@@ -0,0 +1,82 @@
# encoding: utf-8
es-MX:
faker:
address:
city_prefix: [Ecatepec, Guadalajara, Puebla, Juárez, Tijuana, León, Zapopan, Monterrey, Nezahualcóyotl, Chihuahua, Naucalpan, Mérida, San Luis Potosí, Aguascalientes, Hermosillo, Saltillo, Mexicali, Culiacán, Guadalupe, Acapulco, Tlalnepantla, Cancún, Querétaro, Chimalhuacán, Torreón, Morelia, Reynosa, Tlaquepaque, Tuxtla, Durango, Toluca, Apodaca, Matamoros, San Nicolás de los Garza, Veracruz, Xalapa, Tonalá, Mazatlán, Irapuato, Nuevo Laredo, Xico, Villahermosa, General Escobedo, Celaya, Cuernavaca, Tepic, Ixtapaluca]
building_number: ['s/n.', '#', '##', '#', '##']
street_prefix: [Arroyo, Avenida, Bajada, Barranco, Calle, Camino, Carretera, Conjunto, Entrada, Escalinata, Explanada, Glorieta, Grupo, Huerta, Jardines, Lago, Manzana, Mercado, Monte, Muelle, Parque, Pasaje, Paseo, Plaza, Privada, Prolongación, Quinta, Rampa, Rincón, Salida, Sector, Subida, Vía]
secondary_address: ['Depto. ###', 'Interior ###', 'Piso #']
postcode: ['#####']
state: [Aguascalientes, Baja California, Baja California Sur, Campeche, Coahuila, Colima, Chiapas, Chihuahua, Ciudad de México, Durango, Guanajuato, Guerrero, Hidalgo, Jalisco, México, Michoacán, Morelos, Nayarit, Nuevo León, Oaxaca, Puebla, Querétaro, Quintana Roo, San Luis Potosí, Sinaloa, Sonora, Tabasco, Tamaulipas, Tlaxcala, Veracruz, Yucatán, Zacatecas]
state_abbr: [AGU, BCN, BCS, CAM, CHP, CHH, COA, COL, DIF, DUR, GUA, GRO, HID, JAL, MEX, MIC, MOR, NAY, NLE, OAX, PUE, QUE, ROO, SLP, SIN, SON, TAB, TAM, TLA, VER, YUC, ZAC]
city:
- "#{city_prefix}"
street_name:
- "#{street_prefix} #{Name.first_name}"
- "#{street_prefix} #{Name.first_name} #{Name.last_name}"
- "#{street_prefix} #{state}"
- "#{street_prefix} #{city_prefix}"
street_address:
- "#{street_name} #{building_number}"
- "#{street_name} #{building_number} #{secondary_address}"
default_country: [México]
company:
suffix: [S.A., S.A. de C.V., S.R.L, S.A.B., S.C.]
prefix: [Grupo, Sociedad, Grupo Financiero, Colegio, Fondo]
name:
- "#{Name.last_name} #{suffix}"
- "#{prefix} #{Name.last_name} #{suffix}"
- "#{Name.last_name} y #{Name.last_name} #{suffix}"
- "#{Name.last_name} #{Name.last_name} #{suffix}"
- "#{Name.last_name}, #{Name.last_name} y #{Name.last_name} Asociados #{suffix}"
university:
suffix: [Norte, del Norte, Occidental, Oeste, Del Sur, Sur, Oriental, Oriente, de Graduados, de Administración]
prefix: [Universidad, Instituto, Academia, Colegio]
name:
- "#{University.prefix} #{Name.last_name} #{University.suffix}"
- "#{University.prefix} #{Name.last_name}"
- "#{University.prefix} #{Address.state} #{University.suffix}"
internet:
free_email: [gmail.com, yahoo.com, hotmail.com, prodigy.net.mx]
domain_suffix: [com, com.mx, mx, info, me, org, org.mx,]
name:
first_name: [José Luis, Juan, Francisco, José, Antonio, Jesús, Miguel Ángel, Pedro, Alejandro, Manuel, Juan Carlos, Roberto, Jorge, Carlos, Fernando, Ricardo, Miguel, Javier, Martín, Rafael, Raúl, Arturo, Daniel, Eduardo, Enrique, Mario, José Antonio, Sergio, Gerardo, Salvador, Marco Antonio, Alfredo, David, Armando, Alberto, Luis, Óscar, Ramón, Guillermo, Rubén, Jaime, Felipe, Julio César, Andrés, Pablo, Ángel, Gabriel, Héctor, Alfonso, José Guadalupe, Agustín, Ignacio, Víctor, Rogelio, Gustavo, Ernesto, Rodolfo, Luis Alberto, Gilberto, Vicente, Juan Antonio, Tomás, Israel, César, Adrián, Ismael, Santiago, Humberto, Gregorio, Joel, Esteban, José Alfredo, Nicolás, Omar, Moisés, Félix, Lorenzo, Samuel, Carlos Alberto, José Angel, Ramiro, Abel, Jorge Luis, Marcos, Mario Alberto, Rodrigo, Edgar, Isidro, José Alberto, Leonardo, Benjamín, Jorge Alberto, Julio, Raymundo, Víctor Hugo, Saúl, Benito, José Juan, Rigoberto, Hugo, Guadalupe, María, Margarita, Verónica, María Elena, Josefina, Leticia, Teresa, Patricia, Rosa, Martha, Rosa María, Alicia, Yolanda, Francisca, Silvia, Elizabeth, Gloria, Ana María, Gabriela, Alejandra, María Luisa, María de Lourdes, Adriana, Araceli, Antonia, Lucía, Carmen, Irma, Claudia, Beatriz, Isabel, Laura, Maribel, Graciela, Virginia, Catalina, Esperanza, Angélica, Maricela, Cecilia, Susana, Cristina, Julia, Concepción, Victoria, Ofelia, Rocío, Carolina, Raquel, Petra, Lorena, Reyna, Sandra, Paula, Guillermina, Sara, Elvira, Manuela, Marisol, Mónica, Erika, Celia, Luz María, Irene, Magdalena, Estela, Ángela, Rosario, Esther, Eva, Norma, Aurora, Socorro, Consuelo, Lidia, Bertha, Sofía, Dolores, Elena, Rosalba, Liliana, Andrea, Adela, Mariana, Fabiola, Karina, Martina, Marcela, Miriam, Mercedes, Marina, Amalia, Olivia, Angelina, Sonia, Agustina, Edith, Lilia, Micaela]
last_name: [Hernández, García, Martínez, López, González, Rodríguez, Pérez, Sánchez, Ramírez, Cruz, Flores, Gómez, Morales, Vázquez, Reyes, Jímenez, Torres, Díaz, Gutiérrez, Mendoza, Ruiz, Aguilar, Ortiz, Castillo, Moreno, Romero, Álvarez, Chávez, Rivera, Juárez, Ramos, Méndez, Domínguez, Herrera, Medina, Vargas, Castro, Guzmán, Velázquez, Muñoz, Rojas, Contreras, Salazar, Luna, de la Cruz, Ortega, Guerrero, Santiago, Estrada, Bautista, Cortés, Soto, Alvarado, Espinoza, Lara, Ávila, Ríos, Cervantes, Silva, Delgado, Vega, Márquez, Sandoval, Fernández, León, Carrillo, Mejía, Solís, Núñez, Rosas, Valdez, Ibarra, Campos, Santos, Camacho, Peña, Maldonado, Navarro, Rosales, Acosta, Miranda, Trejo, Cabrera, Valencia, Nava, Castañeda, Pacheco, Robles, Molina, Rangel, Fuentes, Huerta, Meza, Aguirre, Cárdenas, Orozco, Padilla, Espinosa, Ayala, Salas, Valenzuela, Zúñiga, Ochoa, Salinas, Mora, Tapia, Serrano, Durán, Olvera, Macías, Zamora, Calderón, Arellano, Suárez, Barrera, Zavala, Villegas, Gallegos, Lozano, Galván, Figueroa, Beltrán, Franco, Villanueva, Sosa, Montes, Andrade, Velasco, Arias, Marín, Corona, Garza, Ponce, Esquivel, Pineda, Alonso, Palacios, Antonio, Vásquez, Trujillo, Cortez, Rocha, Rubio, Bernal, Benítez, Escobar, Villa, Galindo, Cuevas, Bravo, Cano, Osorio, Mata, Carmona, Montoya, de Jesús, Enríquez, Cisneros, Rivas, Parra, Reséndiz, Téllez, Zárate, Salgado, de la Rosa, Vera, Tovar, Arroyo, Córdova, Leyva, Quintero, Becerra, Quiroz, Barajas, Ávalos, Peralta, Román, Esparza, Murillo, Guevara, Olivares, Félix, de León, Castellanos, Villarreal, Villalobos, Lugo, Ángeles, Montiel, Segura, Magaña, Saucedo, Gallardo, Mercado, Navarrete, Reyna, Paredes, Dávila, Leal, Guerra, Saldaña, Guillén, Santana, Uribe, Monroy, Piña, Yáñez, Nieto, Islas, Granados, Escobedo, Zapata, Caballero, del Ángel, Solano, Barron, Zepeda, Acevedo, Arriaga, Barrios, Mondragón, Galicia, Godínez, Ojeda, Duarte, Alfaro, Medrano, Rico, Aguilera, Gil, Ventura, Balderas, Arredondo, Coronado, Escamilla, Nájera, Palma, Amador, Blanco, Ocampo, Garduño, Barragán, Gámez, Francisco, Meléndez, Carbajal, Hurtado, Carrasco, Bonilla, Correa, Sierra, Anaya, Carranza, Romo, Valdés, Armenta, Alcántara, Escalante, Arreola, Quezada, Alarcón, Gaytán, Rentería, Vidal, Báez, de los Santos, Toledo, Colín, May, Carrera, Jaramillo, Santillán, Valle, Varela, Arenas, Rendón, Treviño, Venegas, Soriano, Zaragoza, Morán, Áviles, Aranda, Lira, Quintana, Arteaga, Valadez, Cordero, Sotelo, de la Torre, Muñiz, Hidalgo, Cázares, Covarrubias, Zamudio, Ordoñez, Aparicio, Baltazar, Gálvez, Madrigal]
prefix: [Sr., Sra., Srita., Dr., Ing.]
suffix: [Jr., Sr., I, II, III, IV, V]
title:
descriptor: [Supervisor, Asociado, Ejecutivo, Relacciones, Oficial, Gerente, Ingeniero, Especialista, Director, Coordinador, Administrador, Arquitecto, Analista, Diseñador, Planificador, Técnico, Funcionario, Desarrollador, Productor, Consultor, Asistente, Facilitador, Agente, Representante, Estratega]
level: [de, para]
job: [Soluciones, Programa, Marca, Seguridad, Investigación, Marketing, Normas, Implementación, Integración, Funcionalidad, Respuesta, Paradigma, Tácticas, Identidad, Mercados, Grupo, División, Aplicaciones, Optimización, Operaciones, Infraestructura, Tecnologías de Información, Comunicaciones, Web, Calidad, Seguro, Mobilidad, Cuentas, Datos, Creativo, Configuración, Contabilidad, Interacciones, Factores, Usabilidad, Métricas, Departamento, Región, Supervisión, Planeación]
name:
- "#{prefix} #{first_name} #{last_name} #{last_name}"
- "#{first_name} #{last_name} #{last_name}"
phone_number:
lada_dos: ["33", "55", "81"]
lada_tres: ["222", "223", "224", "225", "226", "227", "228", "229", "231", "232", "233", "235", "236", "237", "238", "241", "243", "244", "245", "246", "247", "248", "249", "271", "272", "273", "274", "275", "276", "278", "279", "281", "282", "283", "284", "285", "287", "288", "294", "296", "297", "311", "312", "313", "314", "315", "316", "317", "319", "321", "322", "323", "324", "325", "326", "327", "328", "329", "341", "342", "343", "344", "345", "346", "347", "348", "349", "351", "352", "353", "354", "355", "356", "357", "358", "359", "371", "372", "373", "374", "375", "376", "377", "378", "381", "382", "383", "384", "385", "386", "387", "388", "389", "391", "392", "393", "394", "395", "411", "412", "413", "414", "415", "417", "418", "419", "421", "422", "423", "424", "425", "426", "427", "428", "429", "431", "432", "433", "434", "435", "436", "437", "438", "441", "442", "443", "444", "445", "447", "448", "449", "451", "452", "453", "454", "455", "456", "457", "458", "459", "461", "462", "463", "464", "465", "466", "467", "468", "469", "471", "472", "473", "474", "475", "476", "477", "478", "481", "482", "483", "485", "486", "487", "488", "489", "492", "493", "494", "495", "496", "498", "499", "588", "591", "592", "593", "594", "595", "596", "597", "599", "612", "613", "614", "615", "616", "618", "621", "622", "623", "624", "625", "626", "627", "628", "629", "631", "632", "633", "634", "635", "636", "637", "638", "639", "641", "642", "643", "644", "645", "646", "647", "648", "649", "651", "652", "653", "656", "658", "659", "661", "662", "664", "665", "667", "668", "669", "671", "672", "673", "674", "675", "676", "677", "686", "687", "694", "695", "696", "697", "698", "711", "712", "713", "714", "715", "716", "717", "718", "719", "721", "722", "723", "724", "725", "726", "727", "728", "731", "732", "733", "734", "735", "736", "737", "738", "739", "741", "742", "743", "744", "745", "746", "747", "748", "749", "751", "753", "754", "755", "756", "757", "758", "759", "761", "762", "763", "764", "765", "766", "767", "768", "769", "771", "772", "773", "774", "775", "776", "777", "778", "779", "781", "782", "783", "784", "785", "786", "789", "791", "797", "821", "823", "824", "825", "826", "828", "829", "831", "832", "833", "834", "835", "836", "841", "842", "844", "845", "846", "861", "862", "864", "866", "867", "868", "869", "871", "872", "873", "877", "878", "891", "892", "894", "897", "899", "913", "914", "916", "917", "918", "919", "921", "922", "923", "924", "932", "933", "934", "936", "937", "938", "951", "953", "954", "958", "961", "962", "963", "964", "965", "966", "967", "968", "969", "971", "972", "981", "982", "983", "984", "985", "986", "987", "988", "991", "992", "993", "994", "995", "996", "997", "998", "999"]
formats:
- "#{PhoneNumber.lada_dos} #### ####"
- "#{PhoneNumber.lada_tres} ### ####"
- "(#{PhoneNumber.lada_dos}) #### ####"
- "(#{PhoneNumber.lada_tres}) ### ####"
- "#{PhoneNumber.lada_dos}-####-####"
- "#{PhoneNumber.lada_tres}-###-####"
cell_phone:
formats:
- "#{PhoneNumber.lada_dos} #### ####"
- "#{PhoneNumber.lada_tres} ### ####"
- "(#{PhoneNumber.lada_dos}) #### ####"
- "(#{PhoneNumber.lada_tres}) ### ####"
- "#{PhoneNumber.lada_dos}-####-####"
- "#{PhoneNumber.lada_tres}-###-####"
- "044 #{PhoneNumber.lada_dos} #### ####"
- "044 #{PhoneNumber.lada_tres} ### ####"
- "044 (#{PhoneNumber.lada_dos}) #### ####"
- "044 (#{PhoneNumber.lada_tres}) ### ####"
- "044 #{PhoneNumber.lada_dos}-####-####"
- "044 #{PhoneNumber.lada_tres}-###-####"
@@ -14,6 +14,22 @@ public class PhoneNumberTest extends AbstractFakerTest {
final Faker f = new Faker(Locale.US);
assertThat(f.phoneNumber().cellPhone(), matchesRegularExpression("\\(?\\d+\\)?([- .]\\d+){1,3}"));
}
@Test
public void testPhone_esMx() {
final Faker f = new Faker(new Locale("es_MX"));
for (int i=0;i<100;i++) {
assertThat(f.phoneNumber().cellPhone(), matchesRegularExpression("(044 )?\\(?\\d+\\)?([- .]\\d+){1,3}"));
assertThat(f.phoneNumber().phoneNumber(), matchesRegularExpression("\\(?\\d+\\)?([- .]\\d+){1,3}"));
}
}
@Test
public void testPhone_enZA() {
final Faker f = new Faker(new Locale("en_ZA"));
for (int i=0;i<100;i++) {
assertThat(f.phoneNumber().phoneNumber(), matchesRegularExpression("\\(?\\d+\\)?([- .]\\d+){1,3}"));
}
}
@Test
public void testCellPhone() {