From 0c8c0e11e411e2bc5c8dbdc1bdeb1292f6202bf3 Mon Sep 17 00:00:00 2001 From: Eric Meisel Date: Wed, 8 Jul 2020 20:44:03 -0500 Subject: [PATCH 1/4] en_AU instances, using StringGenBuilder in State classes --- src/main/resources/en_AU.conf | 5 ++ src/main/resources/en_AU/address.conf | 36 ++++++++++ src/main/resources/en_AU/company.conf | 3 + src/main/resources/en_AU/internet.conf | 3 + src/main/resources/en_AU/name.conf | 14 ++++ src/main/resources/en_AU/phone.conf | 4 ++ src/main/resources/en_CA/address.conf | 27 ++++---- src/main/resources/en_IND/address.conf | 70 ++++++++++---------- src/main/scala/faker/Faker.scala | 13 ++-- src/main/scala/faker/ResourceLoader.scala | 1 + src/main/scala/faker/SupportedLocales.scala | 1 + src/main/scala/faker/address/StateLike.scala | 20 ++++-- 12 files changed, 135 insertions(+), 62 deletions(-) create mode 100644 src/main/resources/en_AU.conf create mode 100644 src/main/resources/en_AU/address.conf create mode 100644 src/main/resources/en_AU/company.conf create mode 100644 src/main/resources/en_AU/internet.conf create mode 100644 src/main/resources/en_AU/name.conf create mode 100644 src/main/resources/en_AU/phone.conf diff --git a/src/main/resources/en_AU.conf b/src/main/resources/en_AU.conf new file mode 100644 index 00000000..e47a75f1 --- /dev/null +++ b/src/main/resources/en_AU.conf @@ -0,0 +1,5 @@ +include "en_AU/address.conf" +include "en_AU/company.conf" +include "en_AU/internet.conf" +include "en_AU/name.conf" +include "en_AU/phone.conf" \ No newline at end of file diff --git a/src/main/resources/en_AU/address.conf b/src/main/resources/en_AU/address.conf new file mode 100644 index 00000000..5bac1bab --- /dev/null +++ b/src/main/resources/en_AU/address.conf @@ -0,0 +1,36 @@ +address { + postal-codes = ["0###", "2###", "3###", "4###", "5###", "6###", "7###"] + postal-code-builder = {options = [{parts = [{type = "seq-string-part", value = ${address.postal-codes}}]}]} + default-countries = [{code = "AU", name = "Australia"}] + states = [ + {type = "state", name = New South Wales, abbr = NSW, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Queensland, abbr = QLD, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Northern Territory, abbr = NT, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = South Australia, abbr = SA, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Western Australia, abbr = WA, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Tasmania, abbr = TAS, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Australian Capital Territory, abbr = ACT, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Victoria, abbr = VIC, postal-code-builder = ${address.postal-code-builder}}, + ] + building-numbers = ["####", "###", "##"] + street-suffixes = [Avenue, Boulevard, Circle, Circuit, Court, Crescent, Crest, Drive, Estate Dr, Grove, Hill, Island, Junction, Knoll, Lane, Loop, Mall, Manor, Meadow, Mews, Parade, Parkway, Pass, Place, Plaza, Ridge, Road, Run, Square, Station St, Street, Summit, Terrace, Track, Trail, View Rd, Way] + full-address-builder = { + options = [ + { + parts = [ + {type = "string-builder-part", value = ${address.street-address-builder}, suffix = ", "}, + {type = "string-builder-part", value = ${address.city-builder}, suffix = ", "}, + {type = "seq-state-abbr-and-zip-part", value = ${address.states}} + ] + }, + { + parts = [ + {type = "string-builder-part", value = ${address.street-address-builder}, suffix = " "}, + {type = "seq-string-part", value = ${address.secondary-addresses}, suffix = ", "}, + {type = "string-builder-part", value = ${address.city-builder}, suffix = ", "}, + {type = "seq-state-abbr-and-zip-part", value = ${address.states}} + ] + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/en_AU/company.conf b/src/main/resources/en_AU/company.conf new file mode 100644 index 00000000..87e0aa03 --- /dev/null +++ b/src/main/resources/en_AU/company.conf @@ -0,0 +1,3 @@ +company { + suffixes = [Pty Ltd, and Sons, Corp, Group, Brothers, Partners] +} \ No newline at end of file diff --git a/src/main/resources/en_AU/internet.conf b/src/main/resources/en_AU/internet.conf new file mode 100644 index 00000000..a3576d9b --- /dev/null +++ b/src/main/resources/en_AU/internet.conf @@ -0,0 +1,3 @@ +internet { + domain-suffixes = [com.au, com, net.au, net, org.au, org] +} \ No newline at end of file diff --git a/src/main/resources/en_AU/name.conf b/src/main/resources/en_AU/name.conf new file mode 100644 index 00000000..f17fc97a --- /dev/null +++ b/src/main/resources/en_AU/name.conf @@ -0,0 +1,14 @@ +name { + first.names = [William, Jack, Oliver, Joshua, Thomas, Lachlan, Cooper, Noah, Ethan, Lucas, James, Samuel, Jacob, Liam, Alexander, Benjamin, Max, Isaac, Daniel, Riley, Ryan, Charlie, Tyler, Jake, Matthew, Xavier, Harry, Jayden, Nicholas, Harrison, Levi, Luke, Adam, Henry, Aiden, Dylan, Oscar, Michael, Jackson, Logan, Joseph, Blake, Nathan, Connor, Elijah, Nate, Archie, Bailey, Marcus, Cameron, Jordan, Zachary, Caleb, Hunter, Ashton, Toby, Aidan, Hayden, Mason, Hamish, Edward, Angus, Eli, Sebastian, Christian, Patrick, Andrew, Anthony, Luca, Kai, Beau, Alex, George, Callum, Finn, Zac, Mitchell, Jett, Jesse, Gabriel, Leo, Declan, Charles, Jasper, Jonathan, Aaron, Hugo, David, Christopher, Chase, Owen, Justin, Ali, Darcy, Lincoln, Cody, Phoenix, Sam, John, Joel, Isabella, Ruby, Chloe, Olivia, Charlotte, Mia, Lily, Emily, Ella, Sienna, Sophie, Amelia, Grace, Ava, Zoe, Emma, Sophia, Matilda, Hannah, Jessica, Lucy, Georgia, Sarah, Abigail, Zara, Eva, Scarlett, Jasmine, Chelsea, Lilly, Ivy, Isla, Evie, Isabelle, Maddison, Layla, Summer, Annabelle, Alexis, Elizabeth, Bella, Holly, Lara, Madison, Alyssa, Maya, Tahlia, Claire, Hayley, Imogen, Jade, Ellie, Sofia, Addison, Molly, Phoebe, Alice, Savannah, Gabriella, Kayla, Mikayla, Abbey, Eliza, Willow, Alexandra, Poppy, Samantha, Stella, Amy, Amelie, Anna, Piper, Gemma, Isabel, Victoria, Stephanie, Caitlin, Heidi, Paige, Rose, Amber, Audrey, Claudia, Taylor, Madeline, Angelina, Natalie, Charli, Lauren, Ashley, Violet, Mackenzie, Abby, Skye, Lillian, Alana, Lola, Leah, Eve, Kiara] + last.names = [Smith, Jones, Williams, Brown, Wilson, Taylor, Johnson, White, Martin, Anderson, Thompson, Nguyen, Thomas, Walker, Harris, Lee, Ryan, Robinson, Kelly, King, Davis, Wright, Evans, Roberts, Green, Hall, Wood, Jackson, Clarke, Patel, Khan, Lewis, James, Phillips, Mason, Mitchell, Rose, Davies, Rodriguez, Cox, Alexander, Garden, Campbell, Johnston, Moore, Smyth, O'neill, Doherty, Stewart, Quinn, Murphy, Graham, Mclaughlin, Hamilton, Murray, Hughes, Robertson, Thomson, Scott, Macdonald, Reid, Clark, Ross, Young, Watson, Paterson, Morrison, Morgan, Griffiths, Edwards, Rees, Jenkins, Owen, Price, Moss, Richards, Abbott, Adams, Armstrong, Bahringer, Bailey, Barrows, Bartell, Bartoletti, Barton, Bauch, Baumbach, Bayer, Beahan, Beatty, Becker, Beier, Berge, Bergstrom, Bode, Bogan, Borer, Bosco, Botsford, Boyer, Boyle, Braun, Bruen, Carroll, Carter, Cartwright, Casper, Cassin, Champlin, Christiansen, Cole, Collier, Collins, Connelly, Conroy, Corkery, Cormier, Corwin, Cronin, Crooks, Cruickshank, Cummings, D'amore, Daniel, Dare, Daugherty, Dickens, Dickinson, Dietrich, Donnelly, Dooley, Douglas, Doyle, Durgan, Ebert, Emard, Emmerich, Erdman, Ernser, Fadel, Fahey, Farrell, Fay, Feeney, Feil, Ferry, Fisher, Flatley, Gibson, Gleason, Glover, Goldner, Goodwin, Grady, Grant, Greenfelder, Greenholt, Grimes, Gutmann, Hackett, Hahn, Haley, Hammes, Hand, Hane, Hansen, Harber, Hartmann, Harvey, Hayes, Heaney, Heathcote, Heller, Hermann, Hermiston, Hessel, Hettinger, Hickle, Hill, Hills, Hoppe, Howe, Howell, Hudson, Huel, Hyatt, Jacobi, Jacobs, Jacobson, Jerde, Johns, Keeling, Kemmer, Kessler, Kiehn, Kirlin, Klein, Koch, Koelpin, Kohler, Koss, Kovacek, Kreiger, Kris, Kuhlman, Kuhn, Kulas, Kunde, Kutch, Lakin, Lang, Langworth, Larkin, Larson, Leannon, Leffler, Little, Lockman, Lowe, Lynch, Mann, Marks, Marvin, Mayer, Mccullough, Mcdermott, Mckenzie, Miller, Mills, Monahan, Morissette, Mueller, Muller, Nader, Nicolas, Nolan, O'connell, O'conner, O'hara, O'keefe, Olson, O'reilly, Parisian, Parker, Quigley, Reilly, Reynolds, Rice, Ritchie, Rohan, Rolfson, Rowe, Russel, Rutherford, Sanford, Sauer, Schmidt, Schmitt, Schneider, Schroeder, Schultz, Shields, Smitham, Spencer, Stanton, Stark, Stokes, Swift, Tillman, Towne, Tremblay, Tromp, Turcotte, Turner, Walsh, Walter, Ward, Waters, Weber, Welch, West, Wilderman, Wilkinson, Williamson, Windler, Wolf] + full-name-with-middle-builder = { + options = [ + {parts = [{type = "seq-string-part", value = ${name.first.names}, suffix = " "}, {type = "seq-string-part", value = ${name.last.names}, suffix = " "}, {type = "seq-string-part", value = ${name.last.names}}]} + ] + } + full-name-builder = { + options = [ + {parts = [{type = "seq-string-part", value = ${name.first.names}, suffix = " "}, {type = "seq-string-part", value = ${name.last.names}}]} + ] + } +} \ No newline at end of file diff --git a/src/main/resources/en_AU/phone.conf b/src/main/resources/en_AU/phone.conf new file mode 100644 index 00000000..488fcaec --- /dev/null +++ b/src/main/resources/en_AU/phone.conf @@ -0,0 +1,4 @@ +phone { + phone-number-builder = {options = [{parts = [{type = "seq-string-part", value = ["0# #### ####", "+61 # #### ####", "+61 4## ### ###"]}]}]} + cell-number-builder = {options = [{parts = [{type = "seq-string-part", value = ["04##-###-###", "(0) 4##-###-###", "04## ### ###", "04########", "04## ## ## ##"]}]}]} +} \ No newline at end of file diff --git a/src/main/resources/en_CA/address.conf b/src/main/resources/en_CA/address.conf index efe0c8c9..e8345782 100644 --- a/src/main/resources/en_CA/address.conf +++ b/src/main/resources/en_CA/address.conf @@ -2,20 +2,19 @@ address { postal-string = "[A-CEJ-NPR-TVXY][0-9][A-CEJ-NPR-TV-Z] ?[0-9][A-CEJ-NPR-TV-Z][0-9]" postal-code-builder = {options = [{parts = [{type = "string-regex-part", value = ${address.postal-string}}]}]} states = [ - {type = "province", abbr = "AB", name = "Alberta", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "BC", name = "British Columbia", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "MB", name = "Manitoba", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "NB", name = "New Brunswick", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "NL", name = "Newfoundland and Labrador", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "NS", name = "Nova Scotia", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "NT", name = "Northwest Territories", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "NU", name = "Nunavut", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "ON", name = "Ontario", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "PE", name = "Prince Edward Island", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "QC", name = "Quebec", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "SK", name = "Saskatchewan", postal-code-string = ${address.postal-string}}, - {type = "province", abbr = "YT", name = "Yukon", postal-code-string = ${address.postal-string}}, - + {type = "province", abbr = "AB", name = "Alberta", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "BC", name = "British Columbia", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "MB", name = "Manitoba", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "NB", name = "New Brunswick", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "NL", name = "Newfoundland and Labrador", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "NS", name = "Nova Scotia", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "NT", name = "Northwest Territories", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "NU", name = "Nunavut", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "ON", name = "Ontario", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "PE", name = "Prince Edward Island", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "QC", name = "Quebec", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "SK", name = "Saskatchewan", postal-code-builder = ${address.postal-code-builder}}, + {type = "province", abbr = "YT", name = "Yukon", postal-code-builder = ${address.postal-code-builder}} ] full-address-builder = { options = [ diff --git a/src/main/resources/en_IND/address.conf b/src/main/resources/en_IND/address.conf index ec55c56c..0fa699f7 100644 --- a/src/main/resources/en_IND/address.conf +++ b/src/main/resources/en_IND/address.conf @@ -5,41 +5,41 @@ address { city-builder = {options = [{parts = [{type = "seq-string-part", value = ${address.cities}}]}]} default-countries = [{code = "IN", name = "India"}, {code = "IN", name = "Indian Republic"}, {code = "IN", name = "Bharat"}, {code = "IN", name = "Hindustan"}] states = [ - {type = "state", name = Andhra Pradesh, abbr = AP, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Arunachal Pradesh, abbr = AR, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Assam, abbr = AS, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Bihar, abbr = BR, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Chhattisgarh, abbr = CG, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Goa, abbr = GA, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Gujarat, abbr = GJ, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Haryana, abbr = HR, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Himachal Pradesh, abbr = HP, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Jammu and Kashmir, abbr = JK, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Jharkhand, abbr = JH, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Karnataka, abbr = KA, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Kerala, abbr = KL, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Madya Pradesh, abbr = MP, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Maharashtra, abbr = MH, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Manipur, abbr = MN, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Meghalaya, abbr = ML, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Mizoram, abbr = MZ, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Nagaland, abbr = NL, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Orissa, abbr = OR, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Punjab, abbr = PB, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Rajasthan, abbr = RJ, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Sikkim, abbr = SK, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Tamil Nadu, abbr = TN, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Tripura, abbr = TR, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Uttaranchal, abbr = UK, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Uttar Pradesh, abbr = UP, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = West Bengal, abbr = WB, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Andaman and Nicobar Islands, abbr = AN, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Chandigarh, abbr = CG, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Dadar and Nagar Haveli, abbr = DH, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Daman and Diu, abbr = DD, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Delhi, abbr = DL, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Lakshadweep, abbr = LD, postal-code-string = ${address.postal-code-string}}, - {type = "state", name = Pondicherry, abbr = PY, postal-code-string = ${address.postal-code-string}}, + {type = "state", name = Andhra Pradesh, abbr = AP, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Arunachal Pradesh, abbr = AR, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Assam, abbr = AS, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Bihar, abbr = BR, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Chhattisgarh, abbr = CG, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Goa, abbr = GA, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Gujarat, abbr = GJ, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Haryana, abbr = HR, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Himachal Pradesh, abbr = HP, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Jammu and Kashmir, abbr = JK, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Jharkhand, abbr = JH, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Karnataka, abbr = KA, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Kerala, abbr = KL, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Madya Pradesh, abbr = MP, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Maharashtra, abbr = MH, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Manipur, abbr = MN, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Meghalaya, abbr = ML, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Mizoram, abbr = MZ, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Nagaland, abbr = NL, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Orissa, abbr = OR, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Punjab, abbr = PB, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Rajasthan, abbr = RJ, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Sikkim, abbr = SK, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Tamil Nadu, abbr = TN, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Tripura, abbr = TR, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Uttaranchal, abbr = UK, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Uttar Pradesh, abbr = UP, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = West Bengal, abbr = WB, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Andaman and Nicobar Islands, abbr = AN, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Chandigarh, abbr = CG, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Dadar and Nagar Haveli, abbr = DH, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Daman and Diu, abbr = DD, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Delhi, abbr = DL, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Lakshadweep, abbr = LD, postal-code-builder = ${address.postal-code-builder}}, + {type = "state", name = Pondicherry, abbr = PY, postal-code-builder = ${address.postal-code-builder}}, ] full-address-builder = { options = [ diff --git a/src/main/scala/faker/Faker.scala b/src/main/scala/faker/Faker.scala index af116631..4a26ee77 100644 --- a/src/main/scala/faker/Faker.scala +++ b/src/main/scala/faker/Faker.scala @@ -324,10 +324,11 @@ final class Faker(private[faker] val locale: Locale) { } object Faker { - val default = new Faker(SupportedLocales.default) - val en = new Faker(SupportedLocales.en) - val en_US = new Faker(SupportedLocales.en_US) - val en_CA = new Faker(SupportedLocales.en_CA) - val en_GB = new Faker(SupportedLocales.en_GB) - val en_IND = new Faker(SupportedLocales.en_IND) + val default: Faker = new Faker(SupportedLocales.default) + val en: Faker = new Faker(SupportedLocales.en) + val en_US: Faker = new Faker(SupportedLocales.en_US) + val en_CA: Faker = new Faker(SupportedLocales.en_CA) + val en_GB: Faker = new Faker(SupportedLocales.en_GB) + val en_IND: Faker = new Faker(SupportedLocales.en_IND) + val en_AU: Faker = new Faker(SupportedLocales.en_AU) } diff --git a/src/main/scala/faker/ResourceLoader.scala b/src/main/scala/faker/ResourceLoader.scala index 9b13bce6..011a8f7f 100644 --- a/src/main/scala/faker/ResourceLoader.scala +++ b/src/main/scala/faker/ResourceLoader.scala @@ -48,6 +48,7 @@ object ResourceLoader { val en_CA: ResourceLoader = new ResourceLoader(SupportedLocales.en_CA) val en_GB: ResourceLoader = new ResourceLoader(SupportedLocales.en_GB) val en_IND: ResourceLoader = new ResourceLoader(SupportedLocales.en_IND) + val en_AU: ResourceLoader = new ResourceLoader(SupportedLocales.en_AU) object Implicits { implicit val defaultResourceLoader: ResourceLoader = default diff --git a/src/main/scala/faker/SupportedLocales.scala b/src/main/scala/faker/SupportedLocales.scala index edd6997c..6713b1e9 100644 --- a/src/main/scala/faker/SupportedLocales.scala +++ b/src/main/scala/faker/SupportedLocales.scala @@ -9,4 +9,5 @@ object SupportedLocales { val en_CA: Locale = Locale.CANADA val en_GB: Locale = Locale.UK val en_IND: Locale = new Locale("en", "IND") + val en_AU: Locale = new Locale("en", "AU") } diff --git a/src/main/scala/faker/address/StateLike.scala b/src/main/scala/faker/address/StateLike.scala index 1bda0c29..65eaa80e 100644 --- a/src/main/scala/faker/address/StateLike.scala +++ b/src/main/scala/faker/address/StateLike.scala @@ -4,8 +4,8 @@ import org.scalacheck.{Arbitrary, Gen} import pureconfig.ConfigReader import pureconfig.generic.semiauto._ -import faker.ResourceLoader import faker.syntax.string._ +import faker.{ResourceLoader, StringGenBuilder} sealed trait StateLike { def abbr: String @@ -43,18 +43,24 @@ object UsState { implicit val usStateConfigReader: ConfigReader[UsState] = deriveReader } -final case class State(abbr: String, name: String, postalCodeString: String) - extends StateLike { - override val postalCodeGen: Gen[String] = postalCodeString.interpolatedGen +final case class State( + abbr: String, + name: String, + postalCodeBuilder: StringGenBuilder +) extends StateLike { + override val postalCodeGen: Gen[String] = postalCodeBuilder.gen } object State { implicit val stateConfigReader: ConfigReader[State] = deriveReader } -final case class Province(abbr: String, name: String, postalCodeString: String) - extends StateLike { - override val postalCodeGen: Gen[String] = postalCodeString.regexGen +final case class Province( + abbr: String, + name: String, + postalCodeBuilder: StringGenBuilder +) extends StateLike { + override val postalCodeGen: Gen[String] = postalCodeBuilder.gen } object Province { From df56d2e0d8c366e2f569f78063a1962464789f69 Mon Sep 17 00:00:00 2001 From: Eric Meisel Date: Wed, 8 Jul 2020 21:17:20 -0500 Subject: [PATCH 2/4] Better parallel test execution --- build.sbt | 3 + src/test/scala/faker/FakerSpec.scala | 952 ++++++++++---------- src/test/scala/faker/FakerSpec_en_AU.scala | 7 + src/test/scala/faker/FakerSpec_en_CA.scala | 7 + src/test/scala/faker/FakerSpec_en_GB.scala | 7 + src/test/scala/faker/FakerSpec_en_IND.scala | 7 + src/test/scala/faker/FakerSpec_en_US.scala | 6 + 7 files changed, 508 insertions(+), 481 deletions(-) create mode 100644 src/test/scala/faker/FakerSpec_en_AU.scala create mode 100644 src/test/scala/faker/FakerSpec_en_CA.scala create mode 100644 src/test/scala/faker/FakerSpec_en_GB.scala create mode 100644 src/test/scala/faker/FakerSpec_en_IND.scala create mode 100644 src/test/scala/faker/FakerSpec_en_US.scala diff --git a/build.sbt b/build.sbt index ad4219b8..cbf90705 100644 --- a/build.sbt +++ b/build.sbt @@ -90,6 +90,9 @@ scalacOptions in (Compile, console) ~= { _.filterNot(Set("-Ywarn-unused-import", "-Ywarn-unused:imports")) } +fork in Test := true +testForkedParallel in Test := true + addCommandAlias("cpl", ";+test:compile") addCommandAlias( "fixCheck", diff --git a/src/test/scala/faker/FakerSpec.scala b/src/test/scala/faker/FakerSpec.scala index a447d0a9..17f5fa69 100644 --- a/src/test/scala/faker/FakerSpec.scala +++ b/src/test/scala/faker/FakerSpec.scala @@ -10,7 +10,9 @@ import org.scalatest.Assertion import org.scalatest.freespec.AnyFreeSpecLike import org.scalatestplus.scalacheck.Checkers -class FakerSpec extends AnyFreeSpecLike with Checkers { +trait FakerSpec extends AnyFreeSpecLike with Checkers { + def locale: Locale + @SuppressWarnings(Array("DisableSyntax.defaultArgs")) def testCanGen[A: Arbitrary](locale: Locale, shouldRun: Boolean = true)( implicit CT: ClassTag[A] @@ -21,16 +23,6 @@ class FakerSpec extends AnyFreeSpecLike with Checkers { else desc ignore {} } - val localesToTest = Seq( - SupportedLocales.en_US, - SupportedLocales.en_CA, - SupportedLocales.en_GB, - SupportedLocales.en_IND - ) - - val fakers: Seq[Faker] = - Seq(Faker.en_US, Faker.en_CA, Faker.en_GB, Faker.en_IND) - val countriesWithStates = Seq("US", "IND", "CA") def ignorableTest[A](desc: String, faker: Faker)( @@ -43,480 +35,478 @@ class FakerSpec extends AnyFreeSpecLike with Checkers { } } else { desc ignore {} } - localesToTest.foreach { locale => - s"Arbitrary tests for $locale" - { - implicit val loader: ResourceLoader = new ResourceLoader(locale) - testCanGen[address.BuildingNumber](locale) - testCanGen[address.City](locale) - testCanGen[address.CityPrefix](locale) - testCanGen[address.CitySuffix](locale) - testCanGen[address.Country](locale) - testCanGen[address.DefaultCountry](locale) - testCanGen[address.FullAddress](locale) - testCanGen[address.Latitude](locale) - testCanGen[address.Longitude](locale) - testCanGen[address.PostalCode](locale) - testCanGen[address.SecondaryAddress](locale) - testCanGen[address.StateLike]( - locale, - countriesWithStates.contains(locale.getCountry) - ) - testCanGen[address.StreetAddress](locale) - testCanGen[address.StreetName](locale) - testCanGen[address.StreetPrefix](locale) - testCanGen[address.StreetSuffix](locale) - testCanGen[company.BS](locale) - testCanGen[company.BuzzWord](locale) - testCanGen[company.CatchPhrase](locale) - testCanGen[company.CompanyDomainName](locale) - testCanGen[company.CompanyName](locale) - testCanGen[company.CompanySuffix](locale) - testCanGen[company.CompanyUrl](locale) - testCanGen[company.Industry](locale) - testCanGen[company.Logo](locale) - testCanGen[company.Profession](locale) - testCanGen[internet.Avatar](locale) - testCanGen[internet.DomainName](locale) - testCanGen[internet.DomainSuffix](locale) - testCanGen[internet.DomainWord](locale) - testCanGen[internet.EmailAddress](locale) - testCanGen[internet.Image](locale) - testCanGen[internet.IpV4Address](locale) - testCanGen[internet.IpV4Cidr](locale) - testCanGen[internet.IpV6Address](locale) - testCanGen[internet.IpV6Cidr](locale) - testCanGen[internet.MacAddress](locale) - testCanGen[internet.Password](locale) - testCanGen[internet.PrivateIpV4Address](locale) - testCanGen[internet.PublicIpV4Address](locale) - testCanGen[internet.SafeEmailAddress](locale) - testCanGen[internet.Slug](locale) - testCanGen[internet.Url](locale) - testCanGen[internet.UserAgent](locale) - testCanGen[lorem.LoremWord](locale) - testCanGen[lorem.LoremWords](locale) - testCanGen[lorem.LoremSentence](locale) - testCanGen[lorem.LoremParagraph](locale) - testCanGen[lorem.LoremParagraphs](locale) - testCanGen[lorem.LoremCharacters](locale) - testCanGen[name.FirstName](locale) - testCanGen[name.LastName](locale) - testCanGen[name.FullName](locale) - testCanGen[name.FullNameWithMiddle](locale) - testCanGen[name.Prefix](locale) - testCanGen[name.Suffix](locale) - testCanGen[name.Title](locale) - testCanGen[name.UserName](locale) - testCanGen[phone.PhoneNumber](locale) - testCanGen[phone.CellPhoneNumber](locale) - testCanGen[time.CurrentEraInstant](locale) - testCanGen[time.CurrentEraLocalDateTime](locale) - testCanGen[time.CurrentEraOffsetDateTime](locale) - testCanGen[time.CurrentEraZonedDateTime](locale) - testCanGen[time.FutureInstant](locale) - testCanGen[time.FutureLocalDateTime](locale) - testCanGen[time.FutureOffsetDateTime](locale) - testCanGen[time.FutureZonedDateTime](locale) - testCanGen[time.NowInstant](locale) - testCanGen[time.NowLocalDateTime](locale) - testCanGen[time.NowOffsetDateTime](locale) - testCanGen[time.NowZonedDateTime](locale) - testCanGen[time.PastInstant](locale) - testCanGen[time.PastLocalDateTime](locale) - testCanGen[time.PastOffsetDateTime](locale) - testCanGen[time.PastZonedDateTime](locale) - testCanGen[time.RandomInstant](locale) - testCanGen[time.RandomLocalDateTime](locale) - testCanGen[time.RandomOffsetDateTime](locale) - testCanGen[time.RandomZonedDateTime](locale) + s"Arbitrary tests for $locale" - { + implicit val loader: ResourceLoader = new ResourceLoader(locale) + testCanGen[address.BuildingNumber](locale) + testCanGen[address.City](locale) + testCanGen[address.CityPrefix](locale) + testCanGen[address.CitySuffix](locale) + testCanGen[address.Country](locale) + testCanGen[address.DefaultCountry](locale) + testCanGen[address.FullAddress](locale) + testCanGen[address.Latitude](locale) + testCanGen[address.Longitude](locale) + testCanGen[address.PostalCode](locale) + testCanGen[address.SecondaryAddress](locale) + testCanGen[address.StateLike]( + locale, + countriesWithStates.contains(locale.getCountry) + ) + testCanGen[address.StreetAddress](locale) + testCanGen[address.StreetName](locale) + testCanGen[address.StreetPrefix](locale) + testCanGen[address.StreetSuffix](locale) + testCanGen[company.BS](locale) + testCanGen[company.BuzzWord](locale) + testCanGen[company.CatchPhrase](locale) + testCanGen[company.CompanyDomainName](locale) + testCanGen[company.CompanyName](locale) + testCanGen[company.CompanySuffix](locale) + testCanGen[company.CompanyUrl](locale) + testCanGen[company.Industry](locale) + testCanGen[company.Logo](locale) + testCanGen[company.Profession](locale) + testCanGen[internet.Avatar](locale) + testCanGen[internet.DomainName](locale) + testCanGen[internet.DomainSuffix](locale) + testCanGen[internet.DomainWord](locale) + testCanGen[internet.EmailAddress](locale) + testCanGen[internet.Image](locale) + testCanGen[internet.IpV4Address](locale) + testCanGen[internet.IpV4Cidr](locale) + testCanGen[internet.IpV6Address](locale) + testCanGen[internet.IpV6Cidr](locale) + testCanGen[internet.MacAddress](locale) + testCanGen[internet.Password](locale) + testCanGen[internet.PrivateIpV4Address](locale) + testCanGen[internet.PublicIpV4Address](locale) + testCanGen[internet.SafeEmailAddress](locale) + testCanGen[internet.Slug](locale) + testCanGen[internet.Url](locale) + testCanGen[internet.UserAgent](locale) + testCanGen[lorem.LoremWord](locale) + testCanGen[lorem.LoremWords](locale) + testCanGen[lorem.LoremSentence](locale) + testCanGen[lorem.LoremParagraph](locale) + testCanGen[lorem.LoremParagraphs](locale) + testCanGen[lorem.LoremCharacters](locale) + testCanGen[name.FirstName](locale) + testCanGen[name.LastName](locale) + testCanGen[name.FullName](locale) + testCanGen[name.FullNameWithMiddle](locale) + testCanGen[name.Prefix](locale) + testCanGen[name.Suffix](locale) + testCanGen[name.Title](locale) + testCanGen[name.UserName](locale) + testCanGen[phone.PhoneNumber](locale) + testCanGen[phone.CellPhoneNumber](locale) + testCanGen[time.CurrentEraInstant](locale) + testCanGen[time.CurrentEraLocalDateTime](locale) + testCanGen[time.CurrentEraOffsetDateTime](locale) + testCanGen[time.CurrentEraZonedDateTime](locale) + testCanGen[time.FutureInstant](locale) + testCanGen[time.FutureLocalDateTime](locale) + testCanGen[time.FutureOffsetDateTime](locale) + testCanGen[time.FutureZonedDateTime](locale) + testCanGen[time.NowInstant](locale) + testCanGen[time.NowLocalDateTime](locale) + testCanGen[time.NowOffsetDateTime](locale) + testCanGen[time.NowZonedDateTime](locale) + testCanGen[time.PastInstant](locale) + testCanGen[time.PastLocalDateTime](locale) + testCanGen[time.PastOffsetDateTime](locale) + testCanGen[time.PastZonedDateTime](locale) + testCanGen[time.RandomInstant](locale) + testCanGen[time.RandomLocalDateTime](locale) + testCanGen[time.RandomOffsetDateTime](locale) + testCanGen[time.RandomZonedDateTime](locale) + } + s"Faker tests for $locale" - { + val faker: Faker = new Faker(locale) + "Lorem" - { + "loremWord should return successfully" in { + val res = faker.loremWord() + assert(res.nonEmpty, res) + } + "loremWords with n should return successfully" in { + val res = faker.loremWords(10) + assert(res.split(" ").length === 10, res) + } + "loremWords should return successfully" in { + val res = faker.loremWords() + assert(res.split(" ").length > 1, res) + } + "loremSentence with n should return successfully" in { + val res = faker.loremSentence(10) + assert(res.split(" ").length === 10, res) + } + "loremSentence should return successfully" in { + val res = faker.loremSentence() + assert(res.split(" ").length > 1, res) + } + "loremParagraph with n should return successfully" in { + val res = faker.loremParagraph(10) + assert(res.split("\\.").length === 10, res) + } + "loremParagraph should return successfully" in { + val res = faker.loremParagraph() + assert(res.split("\\.").length > 1, res) + } + "loremParagraphs with n should return successfully" in { + val res = faker.loremParagraphs(10) + assert(res.split("\n").length === 10, res) + } + "loremParagraphs should return successfully" in { + val res = faker.loremParagraphs() + assert(res.split("\n").length > 1, res) + } + } + "Name" - { + "firstName should return successfully" in { + val res = faker.firstName() + assert(res.nonEmpty, res) + } + "fullName should return successfully" in { + val res = faker.fullName() + assert(res.split(" ").length > 1, res) + } + "fullNameWithMiddle should return successfully" in { + val res = faker.fullNameWithMiddle() + assert(res.split(" ").length > 1, res) + } + "lastName should return successfully" in { + val res = faker.lastName() + assert(res.nonEmpty, res) + } + "prefix should return successfully" in { + val res = faker.prefix() + assert(res.nonEmpty, res) + } + "suffix should return successfully" in { + val res = faker.suffix() + assert(res.nonEmpty, res) + } + "title should return successfully" in { + val res = faker.title() + assert(res.nonEmpty, res) + } + "userName should return successfully" in { + val res = faker.userName() + assert(res.split("\\.").length === 2, res) + } + } + "Internet" - { + "avatar should return successfully" in { + val res = faker.avatar() + assert(res.nonEmpty, res) + } + "domainName should return successfully" in { + val res = faker.domainName() + assert(res.nonEmpty, res) + } + "domainWord should return successfully" in { + val res = faker.domainWord() + assert(res.nonEmpty, res) + } + "domainSuffix should return successfully" in { + val res = faker.domainSuffix() + assert(res.nonEmpty, res) + } + "emailAddress should return successfully" in { + val res = faker.emailAddress() + assert(res.split("@").length === 2, res) + } + "image should return successfully" in { + val res = faker.image() + assert(res.nonEmpty, res) + } + "ipV4Address should return successfully" in { + val res = faker.ipV4Address() + assert(res.split("\\.").length === 4, res) + } + "ipV4Cidr should return successfully" in { + val res = faker.ipV4Cidr() + assert(res.nonEmpty, res) + } + "ipV6Address should return successfully" in { + val res = faker.ipV6Address() + assert(res.split(":").length === 8, res) + } + "ipV6Cidr should return successfully" in { + val res = faker.ipV6Cidr() + assert(res.nonEmpty, res) + } + "macAddress should return successfully" in { + val res = faker.macAddress() + assert(res.split(":").length === 6, res) + } + "password should return successfully" in { + val res = faker.password() + assert(res.nonEmpty, res) + } + "privateIpV4Address should return successfully" in { + val res = faker.privateIpV4Address() + assert(res.split("\\.").length === 4, res) + } + "publicIpV4Address should return successfully" in { + val res = faker.publicIpV4Address() + assert(res.split("\\.").length === 4, res) + } + "safeEmailAddress should return successfully" in { + val res = faker.safeEmailAddress() + assert(res.split("@").length === 2, res) + } + "slug should return successfully" in { + val res = faker.slug() + assert(res.nonEmpty, res) + } + "url should return successfully" in { + val res = faker.url() + assert(res.nonEmpty, res) + } + "userAgent should return successfully" in { + val res = faker.userAgent() + assert(res.nonEmpty, res) + } } - s"Faker tests for $locale" - { - val faker: Faker = new Faker(locale) - "Lorem" - { - "loremWord should return successfully" in { - val res = faker.loremWord() - assert(res.nonEmpty, res) - } - "loremWords with n should return successfully" in { - val res = faker.loremWords(10) - assert(res.split(" ").length === 10, res) - } - "loremWords should return successfully" in { - val res = faker.loremWords() - assert(res.split(" ").length > 1, res) - } - "loremSentence with n should return successfully" in { - val res = faker.loremSentence(10) - assert(res.split(" ").length === 10, res) - } - "loremSentence should return successfully" in { - val res = faker.loremSentence() - assert(res.split(" ").length > 1, res) - } - "loremParagraph with n should return successfully" in { - val res = faker.loremParagraph(10) - assert(res.split("\\.").length === 10, res) - } - "loremParagraph should return successfully" in { - val res = faker.loremParagraph() - assert(res.split("\\.").length > 1, res) - } - "loremParagraphs with n should return successfully" in { - val res = faker.loremParagraphs(10) - assert(res.split("\n").length === 10, res) - } - "loremParagraphs should return successfully" in { - val res = faker.loremParagraphs() - assert(res.split("\n").length > 1, res) - } - } - "Name" - { - "firstName should return successfully" in { - val res = faker.firstName() - assert(res.nonEmpty, res) - } - "fullName should return successfully" in { - val res = faker.fullName() - assert(res.split(" ").length > 1, res) - } - "fullNameWithMiddle should return successfully" in { - val res = faker.fullNameWithMiddle() - assert(res.split(" ").length > 1, res) - } - "lastName should return successfully" in { - val res = faker.lastName() - assert(res.nonEmpty, res) - } - "prefix should return successfully" in { - val res = faker.prefix() - assert(res.nonEmpty, res) - } - "suffix should return successfully" in { - val res = faker.suffix() - assert(res.nonEmpty, res) - } - "title should return successfully" in { - val res = faker.title() - assert(res.nonEmpty, res) - } - "userName should return successfully" in { - val res = faker.userName() - assert(res.split("\\.").length === 2, res) - } - } - "Internet" - { - "avatar should return successfully" in { - val res = faker.avatar() - assert(res.nonEmpty, res) - } - "domainName should return successfully" in { - val res = faker.domainName() - assert(res.nonEmpty, res) - } - "domainWord should return successfully" in { - val res = faker.domainWord() - assert(res.nonEmpty, res) - } - "domainSuffix should return successfully" in { - val res = faker.domainSuffix() - assert(res.nonEmpty, res) - } - "emailAddress should return successfully" in { - val res = faker.emailAddress() - assert(res.split("@").length === 2, res) - } - "image should return successfully" in { - val res = faker.image() - assert(res.nonEmpty, res) - } - "ipV4Address should return successfully" in { - val res = faker.ipV4Address() - assert(res.split("\\.").length === 4, res) - } - "ipV4Cidr should return successfully" in { - val res = faker.ipV4Cidr() - assert(res.nonEmpty, res) - } - "ipV6Address should return successfully" in { - val res = faker.ipV6Address() - assert(res.split(":").length === 8, res) - } - "ipV6Cidr should return successfully" in { - val res = faker.ipV6Cidr() - assert(res.nonEmpty, res) - } - "macAddress should return successfully" in { - val res = faker.macAddress() - assert(res.split(":").length === 6, res) - } - "password should return successfully" in { - val res = faker.password() - assert(res.nonEmpty, res) - } - "privateIpV4Address should return successfully" in { - val res = faker.privateIpV4Address() - assert(res.split("\\.").length === 4, res) - } - "publicIpV4Address should return successfully" in { - val res = faker.publicIpV4Address() - assert(res.split("\\.").length === 4, res) - } - "safeEmailAddress should return successfully" in { - val res = faker.safeEmailAddress() - assert(res.split("@").length === 2, res) - } - "slug should return successfully" in { - val res = faker.slug() - assert(res.nonEmpty, res) - } - "url should return successfully" in { - val res = faker.url() - assert(res.nonEmpty, res) - } - "userAgent should return successfully" in { - val res = faker.userAgent() - assert(res.nonEmpty, res) - } - } - "Time" - { - "currentEraInstant should return successfully" in { - val res = faker.currentEraInstant() - assert(Option(res).isDefined, res) - } - "currentEraLocalDateTime should return successfully" in { - val res = faker.currentEraLocalDateTime() - assert(Option(res).isDefined, res) - } - "currentEraOffsetDateTime should return successfully" in { - val res = faker.currentEraOffsetDateTime() - assert(Option(res).isDefined, res) - } - "currentEraZonedDateTime should return successfully" in { - val res = faker.currentEraZonedDateTime() - assert(Option(res).isDefined, res) - } - "futureInstant should return successfully" in { - val compare = Instant.now() - Thread.sleep(1L) - val res = faker.futureInstant() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "futureLocalDateTime should return successfully" in { - val compare = LocalDateTime.now() - Thread.sleep(1L) - val res = faker.futureLocalDateTime() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "futureOffsetDateTime should return successfully" in { - val compare = OffsetDateTime.now() - Thread.sleep(1L) - val res = faker.futureOffsetDateTime() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "futureZonedDateTime should return successfully" in { - val compare = ZonedDateTime.now() - Thread.sleep(1L) - val res = faker.futureZonedDateTime() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "nowInstant should return successfully" in { - val compare = Instant.now() - Thread.sleep(1L) - val res = faker.nowInstant() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "nowLocalDateTime should return successfully" in { - val compare = LocalDateTime.now() - Thread.sleep(1L) - val res = faker.nowLocalDateTime() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "nowOffsetDateTime should return successfully" in { - val compare = OffsetDateTime.now() - Thread.sleep(1L) - val res = faker.nowOffsetDateTime() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "nowZonedDateTime should return successfully" in { - val compare = ZonedDateTime.now() - Thread.sleep(1L) - val res = faker.nowZonedDateTime() - assert(res.isAfter(compare), s"Res $res vs $compare") - } - "pastInstant should return successfully" in { - val res = faker.pastInstant() - Thread.sleep(1L) - val compare = Instant.now() - assert(res.isBefore(compare), s"Res $res vs $compare") - } - "pastLocalDateTime should return successfully" in { - val res = faker.pastLocalDateTime() - Thread.sleep(1L) - val compare = LocalDateTime.now() - assert(res.isBefore(compare), s"Res $res vs $compare") - } - "pastOffsetDateTime should return successfully" in { - val res = faker.pastOffsetDateTime() - Thread.sleep(1L) - val compare = OffsetDateTime.now() - assert(res.isBefore(compare), s"Res $res vs $compare") - } - "pastZonedDateTime should return successfully" in { - val res = faker.pastZonedDateTime() - Thread.sleep(1L) - val compare = ZonedDateTime.now() - assert(res.isBefore(compare), s"Res $res vs $compare") - } - "randomInstant should return successfully" in { - val res = faker.randomInstant() - assert(Option(res).isDefined, res) - } - "randomLocalDateTime should return successfully" in { - val res = faker.randomLocalDateTime() - assert(Option(res).isDefined, res) - } - "randomOffsetDateTime should return successfully" in { - val res = faker.randomOffsetDateTime() - assert(Option(res).isDefined, res) - } - "randomZonedDateTime should return successfully" in { - val res = faker.randomZonedDateTime() - assert(Option(res).isDefined, res) - } - } - "Address" - { - "buildingNumber should return successfully" in { - val res = faker.buildingNumber() - assert(res.nonEmpty, res) - } - "city should return successfully" in { - val res = faker.city() - assert(res.nonEmpty, res) - } - "cityPrefix should return successfully" in { - val res = faker.cityPrefix() - assert(res.nonEmpty, res) - } - "citySuffix should return successfully" in { - val res = faker.citySuffix() - assert(res.nonEmpty, res) - } - "country should return successfully" in { - val res = faker.country() - assert(res.code.nonEmpty && res.name.nonEmpty, res) - } - "countryCode should return successfully" in { - val res = faker.countryCode() - assert(res.nonEmpty, res) - } - "countryName should return successfully" in { - val res = faker.countryName() - assert(res.nonEmpty, res) - } - "defaultCountry should return successfully" in { - val res = faker.defaultCountry() - assert(res.code.nonEmpty && res.name.nonEmpty, res) - } - "defaultCountryCode should return successfully" in { - val res = faker.defaultCountryCode() - assert(res.nonEmpty, res) - } - "defaultCountryName should return successfully" in { - val res = faker.defaultCountryName() - assert(res.nonEmpty, res) - } - "fullAddress should return successfully" in { - val res = faker.fullAddress() - assert(res.nonEmpty, res) - } - "latitude should return successfully" in { - val res = faker.latitude() - assert(res.nonEmpty, res) - } - "longitude should return successfully" in { - val res = faker.longitude() - assert(res.nonEmpty, res) - } - "secondaryAddress should return successfully" in { - val res = faker.secondaryAddress() - assert(res.nonEmpty, res) - } - ignorableTest("state should return successfully", faker)(x => - countriesWithStates.contains(x.locale.getCountry) - )(_.state())(res => assert(res.abbr.nonEmpty && res.name.nonEmpty, res)) + "Time" - { + "currentEraInstant should return successfully" in { + val res = faker.currentEraInstant() + assert(Option(res).isDefined, res) + } + "currentEraLocalDateTime should return successfully" in { + val res = faker.currentEraLocalDateTime() + assert(Option(res).isDefined, res) + } + "currentEraOffsetDateTime should return successfully" in { + val res = faker.currentEraOffsetDateTime() + assert(Option(res).isDefined, res) + } + "currentEraZonedDateTime should return successfully" in { + val res = faker.currentEraZonedDateTime() + assert(Option(res).isDefined, res) + } + "futureInstant should return successfully" in { + val compare = Instant.now() + Thread.sleep(1L) + val res = faker.futureInstant() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "futureLocalDateTime should return successfully" in { + val compare = LocalDateTime.now() + Thread.sleep(1L) + val res = faker.futureLocalDateTime() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "futureOffsetDateTime should return successfully" in { + val compare = OffsetDateTime.now() + Thread.sleep(1L) + val res = faker.futureOffsetDateTime() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "futureZonedDateTime should return successfully" in { + val compare = ZonedDateTime.now() + Thread.sleep(1L) + val res = faker.futureZonedDateTime() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "nowInstant should return successfully" in { + val compare = Instant.now() + Thread.sleep(1L) + val res = faker.nowInstant() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "nowLocalDateTime should return successfully" in { + val compare = LocalDateTime.now() + Thread.sleep(1L) + val res = faker.nowLocalDateTime() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "nowOffsetDateTime should return successfully" in { + val compare = OffsetDateTime.now() + Thread.sleep(1L) + val res = faker.nowOffsetDateTime() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "nowZonedDateTime should return successfully" in { + val compare = ZonedDateTime.now() + Thread.sleep(1L) + val res = faker.nowZonedDateTime() + assert(res.isAfter(compare), s"Res $res vs $compare") + } + "pastInstant should return successfully" in { + val res = faker.pastInstant() + Thread.sleep(1L) + val compare = Instant.now() + assert(res.isBefore(compare), s"Res $res vs $compare") + } + "pastLocalDateTime should return successfully" in { + val res = faker.pastLocalDateTime() + Thread.sleep(1L) + val compare = LocalDateTime.now() + assert(res.isBefore(compare), s"Res $res vs $compare") + } + "pastOffsetDateTime should return successfully" in { + val res = faker.pastOffsetDateTime() + Thread.sleep(1L) + val compare = OffsetDateTime.now() + assert(res.isBefore(compare), s"Res $res vs $compare") + } + "pastZonedDateTime should return successfully" in { + val res = faker.pastZonedDateTime() + Thread.sleep(1L) + val compare = ZonedDateTime.now() + assert(res.isBefore(compare), s"Res $res vs $compare") + } + "randomInstant should return successfully" in { + val res = faker.randomInstant() + assert(Option(res).isDefined, res) + } + "randomLocalDateTime should return successfully" in { + val res = faker.randomLocalDateTime() + assert(Option(res).isDefined, res) + } + "randomOffsetDateTime should return successfully" in { + val res = faker.randomOffsetDateTime() + assert(Option(res).isDefined, res) + } + "randomZonedDateTime should return successfully" in { + val res = faker.randomZonedDateTime() + assert(Option(res).isDefined, res) + } + } + "Address" - { + "buildingNumber should return successfully" in { + val res = faker.buildingNumber() + assert(res.nonEmpty, res) + } + "city should return successfully" in { + val res = faker.city() + assert(res.nonEmpty, res) + } + "cityPrefix should return successfully" in { + val res = faker.cityPrefix() + assert(res.nonEmpty, res) + } + "citySuffix should return successfully" in { + val res = faker.citySuffix() + assert(res.nonEmpty, res) + } + "country should return successfully" in { + val res = faker.country() + assert(res.code.nonEmpty && res.name.nonEmpty, res) + } + "countryCode should return successfully" in { + val res = faker.countryCode() + assert(res.nonEmpty, res) + } + "countryName should return successfully" in { + val res = faker.countryName() + assert(res.nonEmpty, res) + } + "defaultCountry should return successfully" in { + val res = faker.defaultCountry() + assert(res.code.nonEmpty && res.name.nonEmpty, res) + } + "defaultCountryCode should return successfully" in { + val res = faker.defaultCountryCode() + assert(res.nonEmpty, res) + } + "defaultCountryName should return successfully" in { + val res = faker.defaultCountryName() + assert(res.nonEmpty, res) + } + "fullAddress should return successfully" in { + val res = faker.fullAddress() + assert(res.nonEmpty, res) + } + "latitude should return successfully" in { + val res = faker.latitude() + assert(res.nonEmpty, res) + } + "longitude should return successfully" in { + val res = faker.longitude() + assert(res.nonEmpty, res) + } + "secondaryAddress should return successfully" in { + val res = faker.secondaryAddress() + assert(res.nonEmpty, res) + } + ignorableTest("state should return successfully", faker)(x => + countriesWithStates.contains(x.locale.getCountry) + )(_.state())(res => assert(res.abbr.nonEmpty && res.name.nonEmpty, res)) - ignorableTest("stateAbbr should return successfully", faker)(x => - countriesWithStates.contains(x.locale.getCountry) - )(_.stateAbbr())(res => assert(res.nonEmpty, res)) + ignorableTest("stateAbbr should return successfully", faker)(x => + countriesWithStates.contains(x.locale.getCountry) + )(_.stateAbbr())(res => assert(res.nonEmpty, res)) - ignorableTest("stateZip should return successfully", faker)(x => - countriesWithStates.contains(x.locale.getCountry) - )(_.stateZip())(res => assert(res.nonEmpty, res)) + ignorableTest("stateZip should return successfully", faker)(x => + countriesWithStates.contains(x.locale.getCountry) + )(_.stateZip())(res => assert(res.nonEmpty, res)) - "streetAddress should return successfully" in { - val res = faker.streetAddress() - assert(res.nonEmpty, res) - } - "streetName should return successfully" in { - val res = faker.streetName() - assert(res.nonEmpty, res) - } - "streetPrefix should return successfully" in { - val res = faker.streetPrefix() - assert(res.nonEmpty, res) - } - "streetSuffix should return successfully" in { - val res = faker.streetSuffix() - assert(res.nonEmpty, res) - } - "bs should return successfully" in { - val res = faker.bs() - assert(res.nonEmpty, res) - } - "buzzWord should return successfully" in { - val res = faker.buzzWord() - assert(res.nonEmpty, res) - } - "catchPhrase should return successfully" in { - val res = faker.catchPhrase() - assert(res.nonEmpty, res) - } - "companyDomainName should return successfully" in { - val res = faker.companyDomainName() - assert(res.nonEmpty, res) - } - "companyName should return successfully" in { - val res = faker.companyName() - assert(res.nonEmpty, res) - } - "companySuffix should return successfully" in { - val res = faker.companySuffix() - assert(res.nonEmpty, res) - } - "companyUrl should return successfully" in { - val res = faker.companyUrl() - assert(res.nonEmpty, res) - } - "industry should return successfully" in { - val res = faker.industry() - assert(res.nonEmpty, res) - } - "logo should return successfully" in { - val res = faker.logo() - assert(res.nonEmpty, res) - } - "profession should return successfully" in { - val res = faker.profession() - assert(res.nonEmpty, res) - } - "phoneNumber should return successfully" in { - val res = faker.phoneNumber() - assert(res.nonEmpty, res) - } - "cellPhoneNumber should return successfully" in { - val res = faker.cellPhoneNumber() - assert(res.nonEmpty, res) - } + "streetAddress should return successfully" in { + val res = faker.streetAddress() + assert(res.nonEmpty, res) + } + "streetName should return successfully" in { + val res = faker.streetName() + assert(res.nonEmpty, res) + } + "streetPrefix should return successfully" in { + val res = faker.streetPrefix() + assert(res.nonEmpty, res) + } + "streetSuffix should return successfully" in { + val res = faker.streetSuffix() + assert(res.nonEmpty, res) + } + "bs should return successfully" in { + val res = faker.bs() + assert(res.nonEmpty, res) + } + "buzzWord should return successfully" in { + val res = faker.buzzWord() + assert(res.nonEmpty, res) + } + "catchPhrase should return successfully" in { + val res = faker.catchPhrase() + assert(res.nonEmpty, res) + } + "companyDomainName should return successfully" in { + val res = faker.companyDomainName() + assert(res.nonEmpty, res) + } + "companyName should return successfully" in { + val res = faker.companyName() + assert(res.nonEmpty, res) + } + "companySuffix should return successfully" in { + val res = faker.companySuffix() + assert(res.nonEmpty, res) + } + "companyUrl should return successfully" in { + val res = faker.companyUrl() + assert(res.nonEmpty, res) + } + "industry should return successfully" in { + val res = faker.industry() + assert(res.nonEmpty, res) + } + "logo should return successfully" in { + val res = faker.logo() + assert(res.nonEmpty, res) + } + "profession should return successfully" in { + val res = faker.profession() + assert(res.nonEmpty, res) + } + "phoneNumber should return successfully" in { + val res = faker.phoneNumber() + assert(res.nonEmpty, res) + } + "cellPhoneNumber should return successfully" in { + val res = faker.cellPhoneNumber() + assert(res.nonEmpty, res) } } } diff --git a/src/test/scala/faker/FakerSpec_en_AU.scala b/src/test/scala/faker/FakerSpec_en_AU.scala new file mode 100644 index 00000000..8cf2e4e2 --- /dev/null +++ b/src/test/scala/faker/FakerSpec_en_AU.scala @@ -0,0 +1,7 @@ +package faker + +import java.util.Locale + +class FakerSpec_en_AU extends FakerSpec { + override lazy val locale: Locale = SupportedLocales.en_AU +} diff --git a/src/test/scala/faker/FakerSpec_en_CA.scala b/src/test/scala/faker/FakerSpec_en_CA.scala new file mode 100644 index 00000000..d19b7bc9 --- /dev/null +++ b/src/test/scala/faker/FakerSpec_en_CA.scala @@ -0,0 +1,7 @@ +package faker + +import java.util.Locale + +class FakerSpec_en_CA extends FakerSpec { + override lazy val locale: Locale = SupportedLocales.en_CA +} diff --git a/src/test/scala/faker/FakerSpec_en_GB.scala b/src/test/scala/faker/FakerSpec_en_GB.scala new file mode 100644 index 00000000..5de5e847 --- /dev/null +++ b/src/test/scala/faker/FakerSpec_en_GB.scala @@ -0,0 +1,7 @@ +package faker + +import java.util.Locale + +class FakerSpec_en_GB extends FakerSpec { + override lazy val locale: Locale = SupportedLocales.en_GB +} diff --git a/src/test/scala/faker/FakerSpec_en_IND.scala b/src/test/scala/faker/FakerSpec_en_IND.scala new file mode 100644 index 00000000..e44ee9d1 --- /dev/null +++ b/src/test/scala/faker/FakerSpec_en_IND.scala @@ -0,0 +1,7 @@ +package faker + +import java.util.Locale + +class FakerSpec_en_IND extends FakerSpec { + override lazy val locale: Locale = SupportedLocales.en_IND +} diff --git a/src/test/scala/faker/FakerSpec_en_US.scala b/src/test/scala/faker/FakerSpec_en_US.scala new file mode 100644 index 00000000..8ee4ce72 --- /dev/null +++ b/src/test/scala/faker/FakerSpec_en_US.scala @@ -0,0 +1,6 @@ +package faker +import java.util.Locale + +class FakerSpec_en_US extends FakerSpec { + override lazy val locale: Locale = SupportedLocales.en_US +} From 3c9857f10881bf59f4b423ae2ff8767ec681f4df Mon Sep 17 00:00:00 2001 From: Eric Meisel Date: Wed, 8 Jul 2020 21:36:49 -0500 Subject: [PATCH 3/4] remove coverage for ResourceLoader and Faker instances --- src/main/scala/faker/Faker.scala | 2 ++ src/main/scala/faker/ResourceLoader.scala | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/scala/faker/Faker.scala b/src/main/scala/faker/Faker.scala index 4a26ee77..c441bca0 100644 --- a/src/main/scala/faker/Faker.scala +++ b/src/main/scala/faker/Faker.scala @@ -324,6 +324,7 @@ final class Faker(private[faker] val locale: Locale) { } object Faker { + // $COVERAGE-OFF$ val default: Faker = new Faker(SupportedLocales.default) val en: Faker = new Faker(SupportedLocales.en) val en_US: Faker = new Faker(SupportedLocales.en_US) @@ -331,4 +332,5 @@ object Faker { val en_GB: Faker = new Faker(SupportedLocales.en_GB) val en_IND: Faker = new Faker(SupportedLocales.en_IND) val en_AU: Faker = new Faker(SupportedLocales.en_AU) + // $COVERAGE-ON$ } diff --git a/src/main/scala/faker/ResourceLoader.scala b/src/main/scala/faker/ResourceLoader.scala index 011a8f7f..c13499c0 100644 --- a/src/main/scala/faker/ResourceLoader.scala +++ b/src/main/scala/faker/ResourceLoader.scala @@ -42,6 +42,7 @@ final class ResourceLoader(private[faker] val locale: Locale) { } object ResourceLoader { + // $COVERAGE-OFF$ val default: ResourceLoader = new ResourceLoader(SupportedLocales.default) val en: ResourceLoader = new ResourceLoader(SupportedLocales.en) val en_US: ResourceLoader = new ResourceLoader(SupportedLocales.en_US) @@ -53,4 +54,5 @@ object ResourceLoader { object Implicits { implicit val defaultResourceLoader: ResourceLoader = default } + // $COVERAGE-ON$ } From aeae4a5f3caf1ca4555ae2b98dc0820716d99fa4 Mon Sep 17 00:00:00 2001 From: Eric Meisel Date: Wed, 8 Jul 2020 21:43:55 -0500 Subject: [PATCH 4/4] more coverage updates --- src/main/scala/faker/ResourceLoader.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/scala/faker/ResourceLoader.scala b/src/main/scala/faker/ResourceLoader.scala index c13499c0..f4d81c33 100644 --- a/src/main/scala/faker/ResourceLoader.scala +++ b/src/main/scala/faker/ResourceLoader.scala @@ -32,9 +32,11 @@ final class ResourceLoader(private[faker] val locale: Locale) { .withFallback(langConf.optional) .withFallback(defaultConfig) case (Some(langConf), _) => langConf.optional.withFallback(defaultConfig) + // $COVERAGE-OFF$ case (_, Some(localeConf)) => localeConf.optional.withFallback(defaultConfig) case _ => defaultConfig + // $COVERAGE-ON$ } def loadKey[A: ConfigReader: ClassTag](key: String): A =