From 8ed69a877416d8a6675cdab5b4506cef7933a0e7 Mon Sep 17 00:00:00 2001 From: Tobie Morgan Hitchcock Date: Fri, 9 Jun 2017 18:59:03 +0100 Subject: [PATCH] Add library for generating fake data --- util/fake/bool.go | 23 + util/fake/char.go | 75 + util/fake/company.go | 35 + util/fake/fake.go | 33 + util/fake/latin.go | 3560 +++++++++++++++++++++++++++++++++++++++++ util/fake/location.go | 143 ++ util/fake/lorem.go | 130 ++ util/fake/number.go | 47 + util/fake/person.go | 112 ++ util/fake/string.go | 87 + util/fake/time.go | 39 + util/fake/uuid.go | 27 + util/fake/web.go | 60 + 13 files changed, 4371 insertions(+) create mode 100644 util/fake/bool.go create mode 100644 util/fake/char.go create mode 100644 util/fake/company.go create mode 100644 util/fake/fake.go create mode 100644 util/fake/latin.go create mode 100644 util/fake/location.go create mode 100644 util/fake/lorem.go create mode 100644 util/fake/number.go create mode 100644 util/fake/person.go create mode 100644 util/fake/string.go create mode 100644 util/fake/time.go create mode 100644 util/fake/uuid.go create mode 100644 util/fake/web.go diff --git a/util/fake/bool.go b/util/fake/bool.go new file mode 100644 index 00000000..ec71c7f6 --- /dev/null +++ b/util/fake/bool.go @@ -0,0 +1,23 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +func Bool() bool { + return New().Bool() +} + +func (f *Faker) Bool() bool { + return 0.5 <= f.r.Float64() +} diff --git a/util/fake/char.go b/util/fake/char.go new file mode 100644 index 00000000..bc1c685d --- /dev/null +++ b/util/fake/char.go @@ -0,0 +1,75 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +var vowels = "aeoui" + +var consonants = "bcdfghjklmnpqrstvwxyz" + +var lowerchars = "abcdefghijklmnopqrstuvwxyz" + +var upperchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + +var alphachars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + +var alphanumbs = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +func Alphanum() string { + return New().Alphanum() +} + +func (f *Faker) Alphanum() string { + return string(alphanumbs[f.r.Intn(len(alphanumbs))]) +} + +func Char() string { + return New().Char() +} + +func (f *Faker) Char() string { + return string(alphachars[f.r.Intn(len(alphachars))]) +} + +func CharLower() string { + return New().CharLower() +} + +func (f *Faker) CharLower() string { + return string(lowerchars[f.r.Intn(len(lowerchars))]) +} + +func CharUpper() string { + return New().CharUpper() +} + +func (f *Faker) CharUpper() string { + return string(upperchars[f.r.Intn(len(upperchars))]) +} + +func CharVowel() string { + return New().CharVowel() +} + +func (f *Faker) CharVowel() string { + return string(vowels[f.r.Intn(len(vowels))]) +} + +func CharConsonant() string { + return New().CharConsonant() +} + +func (f *Faker) CharConsonant() string { + return string(consonants[f.r.Intn(len(consonants))]) +} diff --git a/util/fake/company.go b/util/fake/company.go new file mode 100644 index 00000000..974b6e9b --- /dev/null +++ b/util/fake/company.go @@ -0,0 +1,35 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +var companies = []string{"3Com Corp", "3M Company", "A.G. Edwards Inc.", "Abbott Laboratories", "Abercrombie & Fitch Co.", "ABM Industries Incorporated", "Ace Hardware Corporation", "ACT Manufacturing Inc.", "Acterna Corp.", "Adams Resources & Energy, Inc.", "ADC Telecommunications, Inc.", "Adelphia Communications Corporation", "Administaff, Inc.", "Adobe Systems Incorporated", "Adolph Coors Company", "Advance Auto Parts, Inc.", "Advanced Micro Devices, Inc.", "AdvancePCS, Inc.", "Advantica Restaurant Group, Inc.", "The AES Corporation", "Aetna Inc.", "Affiliated Computer Services, Inc.", "AFLAC Incorporated", "AGCO Corporation", "Agilent Technologies, Inc.", "Agway Inc.", "Apartment Investment and Management Company", "Air Products and Chemicals, Inc.", "Airborne, Inc.", "Airgas, Inc.", "AK Steel Holding Corporation", "Alaska Air Group, Inc.", "Alberto-Culver Company", "Albertson's, Inc.", "Alcoa Inc.", "Alleghany Corporation", "Allegheny Energy, Inc.", "Allegheny Technologies Incorporated", "Allergan, Inc.", "ALLETE, Inc.", "Alliant Energy Corporation", "Allied Waste Industries, Inc.", "Allmerica Financial Corporation", "The Allstate Corporation", "ALLTEL Corporation", "The Alpine Group, Inc.", "Amazon.com, Inc.", "AMC Entertainment Inc.", "American Power Conversion Corporation", "Amerada Hess Corporation", "AMERCO", "Ameren Corporation", "America West Holdings Corporation", "American Axle & Manufacturing Holdings, Inc.", "American Eagle Outfitters, Inc.", "American Electric Power Company, Inc.", "American Express Company", "American Financial Group, Inc.", "American Greetings Corporation", "American International Group, Inc.", "American Standard Companies Inc.", "American Water Works Company, Inc.", "AmerisourceBergen Corporation", "Ames Department Stores, Inc.", "Amgen Inc.", "Amkor Technology, Inc.", "AMR Corporation", "AmSouth Bancorp.", "Amtran, Inc.", "Anadarko Petroleum Corporation", "Analog Devices, Inc.", "Anheuser-Busch Companies, Inc.", "Anixter International Inc.", "AnnTaylor Inc.", "Anthem, Inc.", "AOL Time Warner Inc.", "Aon Corporation", "Apache Corporation", "Apple Computer, Inc.", "Applera Corporation", "Applied Industrial Technologies, Inc.", "Applied Materials, Inc.", "Aquila, Inc.", "ARAMARK Corporation", "Arch Coal, Inc.", "Archer Daniels Midland Company", "Arkansas Best Corporation", "Armstrong Holdings, Inc.", "Arrow Electronics, Inc.", "ArvinMeritor, Inc.", "Ashland Inc.", "Astoria Financial Corporation", "AT&T Corp.", "Atmel Corporation", "Atmos Energy Corporation", "Audiovox Corporation", "Autoliv, Inc.", "Automatic Data Processing, Inc.", "AutoNation, Inc.", "AutoZone, Inc.", "Avaya Inc.", "Avery Dennison Corporation", "Avista Corporation", "Avnet, Inc.", "Avon Products, Inc.", "Baker Hughes Incorporated", "Ball Corporation", "Bank of America Corporation", "The Bank of New York Company, Inc.", "Bank One Corporation", "Banknorth Group, Inc.", "Banta Corporation", "Barnes & Noble, Inc.", "Bausch & Lomb Incorporated", "Baxter International Inc.", "BB&T Corporation", "The Bear Stearns Companies Inc.", "Beazer Homes USA, Inc.", "Beckman Coulter, Inc.", "Becton, Dickinson and Company", "Bed Bath & Beyond Inc.", "Belk, Inc.", "Bell Microproducts Inc.", "BellSouth Corporation", "Belo Corp.", "Bemis Company, Inc.", "Benchmark Electronics, Inc.", "Berkshire Hathaway Inc.", "Best Buy Co., Inc.", "Bethlehem Steel Corporation", "Beverly Enterprises, Inc.", "Big Lots, Inc.", "BJ Services Company", "BJ's Wholesale Club, Inc.", "The Black & Decker Corporation", "Black Hills Corporation", "BMC Software, Inc.", "The Boeing Company", "Boise Cascade Corporation", "Borders Group, Inc.", "BorgWarner Inc.", "Boston Scientific Corporation", "Bowater Incorporated", "Briggs & Stratton Corporation", "Brightpoint, Inc.", "Brinker International, Inc.", "Bristol-Myers Squibb Company", "Broadwing, Inc.", "Brown Shoe Company, Inc.", "Brown-Forman Corporation", "Brunswick Corporation", "Budget Group, Inc.", "Burlington Coat Factory Warehouse Corporation", "Burlington Industries, Inc.", "Burlington Northern Santa Fe Corporation", "Burlington Resources Inc.", "C. H. Robinson Worldwide Inc.", "Cablevision Systems Corp", "Cabot Corp", "Cadence Design Systems, Inc.", "Calpine Corp.", "Campbell Soup Co.", "Capital One Financial Corp.", "Cardinal Health Inc.", "Caremark Rx Inc.", "Carlisle Cos. Inc.", "Carpenter Technology Corp.", "Casey's General Stores Inc.", "Caterpillar Inc.", "CBRL Group Inc.", "CDI Corp.", "CDW Computer Centers Inc.", "CellStar Corp.", "Cendant Corp", "Cenex Harvest States Cooperatives", "Centex Corp.", "CenturyTel Inc.", "Ceridian Corp.", "CH2M Hill Cos. Ltd.", "Champion Enterprises Inc.", "Charles Schwab Corp.", "Charming Shoppes Inc.", "Charter Communications Inc.", "Charter One Financial Inc.", "ChevronTexaco Corp.", "Chiquita Brands International Inc.", "Chubb Corp", "Ciena Corp.", "Cigna Corp", "Cincinnati Financial Corp.", "Cinergy Corp.", "Cintas Corp.", "Circuit City Stores Inc.", "Cisco Systems Inc.", "Citigroup, Inc", "Citizens Communications Co.", "CKE Restaurants Inc.", "Clear Channel Communications Inc.", "The Clorox Co.", "CMGI Inc.", "CMS Energy Corp.", "CNF Inc.", "Coca-Cola Co.", "Coca-Cola Enterprises Inc.", "Colgate-Palmolive Co.", "Collins & Aikman Corp.", "Comcast Corp.", "Comdisco Inc.", "Comerica Inc.", "Comfort Systems USA Inc.", "Commercial Metals Co.", "Community Health Systems Inc.", "Compass Bancshares Inc", "Computer Associates International Inc.", "Computer Sciences Corp.", "Compuware Corp.", "Comverse Technology Inc.", "ConAgra Foods Inc.", "Concord EFS Inc.", "Conectiv, Inc", "Conoco Inc", "Conseco Inc.", "Consolidated Freightways Corp.", "Consolidated Edison Inc.", "Constellation Brands Inc.", "Constellation Emergy Group Inc.", "Continental Airlines Inc.", "Convergys Corp.", "Cooper Cameron Corp.", "Cooper Industries Ltd.", "Cooper Tire & Rubber Co.", "Corn Products International Inc.", "Corning Inc.", "Costco Wholesale Corp.", "Countrywide Credit Industries Inc.", "Coventry Health Care Inc.", "Cox Communications Inc.", "Crane Co.", "Crompton Corp.", "Crown Cork & Seal Co. Inc.", "CSK Auto Corp.", "CSX Corp.", "Cummins Inc.", "CVS Corp.", "Cytec Industries Inc.", "D&K Healthcare Resources, Inc.", "D.R. Horton Inc.", "Dana Corporation", "Danaher Corporation", "Darden Restaurants Inc.", "DaVita Inc.", "Dean Foods Company", "Deere & Company", "Del Monte Foods Co", "Dell Computer Corporation", "Delphi Corp.", "Delta Air Lines Inc.", "Deluxe Corporation", "Devon Energy Corporation", "Di Giorgio Corporation", "Dial Corporation", "Diebold Incorporated", "Dillard's Inc.", "DIMON Incorporated", "Dole Food Company, Inc.", "Dollar General Corporation", "Dollar Tree Stores, Inc.", "Dominion Resources, Inc.", "Domino's Pizza LLC", "Dover Corporation, Inc.", "Dow Chemical Company", "Dow Jones & Company, Inc.", "DPL Inc.", "DQE Inc.", "Dreyer's Grand Ice Cream, Inc.", "DST Systems, Inc.", "DTE Energy Co.", "E.I. Du Pont de Nemours and Company", "Duke Energy Corp", "Dun & Bradstreet Inc.", "DURA Automotive Systems Inc.", "DynCorp", "Dynegy Inc.", "E*Trade Group, Inc.", "E.W. Scripps Company", "Earthlink, Inc.", "Eastman Chemical Company", "Eastman Kodak Company", "Eaton Corporation", "Echostar Communications Corporation", "Ecolab Inc.", "Edison International", "EGL Inc.", "El Paso Corporation", "Electronic Arts Inc.", "Electronic Data Systems Corp.", "Eli Lilly and Company", "EMC Corporation", "Emcor Group Inc.", "Emerson Electric Co.", "Encompass Services Corporation", "Energizer Holdings Inc.", "Energy East Corporation", "Engelhard Corporation", "Enron Corp.", "Entergy Corporation", "Enterprise Products Partners L.P.", "EOG Resources, Inc.", "Equifax Inc.", "Equitable Resources Inc.", "Equity Office Properties Trust", "Equity Residential Properties Trust", "Estee Lauder Companies Inc.", "Exelon Corporation", "Exide Technologies", "Expeditors International of Washington Inc.", "Express Scripts Inc.", "ExxonMobil Corporation", "Fairchild Semiconductor International Inc.", "Family Dollar Stores Inc.", "Farmland Industries Inc.", "Federal Mogul Corp.", "Federated Department Stores Inc.", "Federal Express Corp.", "Felcor Lodging Trust Inc.", "Ferro Corp.", "Fidelity National Financial Inc.", "Fifth Third Bancorp", "First American Financial Corp.", "First Data Corp.", "First National of Nebraska Inc.", "First Tennessee National Corp.", "FirstEnergy Corp.", "Fiserv Inc.", "Fisher Scientific International Inc.", "FleetBoston Financial Co.", "Fleetwood Enterprises Inc.", "Fleming Companies Inc.", "Flowers Foods Inc.", "Flowserv Corp", "Fluor Corp", "FMC Corp", "Foamex International Inc", "Foot Locker Inc", "Footstar Inc.", "Ford Motor Co", "Forest Laboratories Inc.", "Fortune Brands Inc.", "Foster Wheeler Ltd.", "FPL Group Inc.", "Franklin Resources Inc.", "Freeport McMoran Copper & Gold Inc.", "Frontier Oil Corp", "Furniture Brands International Inc.", "Gannett Co., Inc.", "Gap Inc.", "Gateway Inc.", "GATX Corporation", "Gemstar-TV Guide International Inc.", "GenCorp Inc.", "General Cable Corporation", "General Dynamics Corporation", "General Electric Company", "General Mills Inc", "General Motors Corporation", "Genesis Health Ventures Inc.", "Gentek Inc.", "Gentiva Health Services Inc.", "Genuine Parts Company", "Genuity Inc.", "Genzyme Corporation", "Georgia Gulf Corporation", "Georgia-Pacific Corporation", "Gillette Company", "Gold Kist Inc.", "Golden State Bancorp Inc.", "Golden West Financial Corporation", "Goldman Sachs Group Inc.", "Goodrich Corporation", "The Goodyear Tire & Rubber Company", "Granite Construction Incorporated", "Graybar Electric Company Inc.", "Great Lakes Chemical Corporation", "Great Plains Energy Inc.", "GreenPoint Financial Corp.", "Greif Bros. Corporation", "Grey Global Group Inc.", "Group 1 Automotive Inc.", "Guidant Corporation", "H&R Block Inc.", "H.B. Fuller Company", "H.J. Heinz Company", "Halliburton Co.", "Harley-Davidson Inc.", "Harman International Industries Inc.", "Harrah's Entertainment Inc.", "Harris Corp.", "Harsco Corp.", "Hartford Financial Services Group Inc.", "Hasbro Inc.", "Hawaiian Electric Industries Inc.", "HCA Inc.", "Health Management Associates Inc.", "Health Net Inc.", "Healthsouth Corp", "Henry Schein Inc.", "Hercules Inc.", "Herman Miller Inc.", "Hershey Foods Corp.", "Hewlett-Packard Company", "Hibernia Corp.", "Hillenbrand Industries Inc.", "Hilton Hotels Corp.", "Hollywood Entertainment Corp.", "Home Depot Inc.", "Hon Industries Inc.", "Honeywell International Inc.", "Hormel Foods Corp.", "Host Marriott Corp.", "Household International Corp.", "Hovnanian Enterprises Inc.", "Hub Group Inc.", "Hubbell Inc.", "Hughes Supply Inc.", "Humana Inc.", "Huntington Bancshares Inc.", "Idacorp Inc.", "IDT Corporation", "IKON Office Solutions Inc.", "Illinois Tool Works Inc.", "IMC Global Inc.", "Imperial Sugar Company", "IMS Health Inc.", "Ingles Market Inc", "Ingram Micro Inc.", "Insight Enterprises Inc.", "Integrated Electrical Services Inc.", "Intel Corporation", "International Paper Co.", "Interpublic Group of Companies Inc.", "Interstate Bakeries Corporation", "International Business Machines Corp.", "International Flavors & Fragrances Inc.", "International Multifoods Corporation", "Intuit Inc.", "IT Group Inc.", "ITT Industries Inc.", "Ivax Corp.", "J.B. Hunt Transport Services Inc.", "J.C. Penny Co.", "J.P. Morgan Chase & Co.", "Jabil Circuit Inc.", "Jack In The Box Inc.", "Jacobs Engineering Group Inc.", "JDS Uniphase Corp.", "Jefferson-Pilot Co.", "John Hancock Financial Services Inc.", "Johnson & Johnson", "Johnson Controls Inc.", "Jones Apparel Group Inc.", "KB Home", "Kellogg Company", "Kellwood Company", "Kelly Services Inc.", "Kemet Corp.", "Kennametal Inc.", "Kerr-McGee Corporation", "KeyCorp", "KeySpan Corp.", "Kimball International Inc.", "Kimberly-Clark Corporation", "Kindred Healthcare Inc.", "KLA-Tencor Corporation", "K-Mart Corp.", "Knight-Ridder Inc.", "Kohl's Corp.", "KPMG Consulting Inc.", "Kroger Co.", "L-3 Communications Holdings Inc.", "Laboratory Corporation of America Holdings", "Lam Research Corporation", "LandAmerica Financial Group Inc.", "Lands' End Inc.", "Landstar System Inc.", "La-Z-Boy Inc.", "Lear Corporation", "Legg Mason Inc.", "Leggett & Platt Inc.", "Lehman Brothers Holdings Inc.", "Lennar Corporation", "Lennox International Inc.", "Level 3 Communications Inc.", "Levi Strauss & Co.", "Lexmark International Inc.", "Limited Inc.", "Lincoln National Corporation", "Linens 'n Things Inc.", "Lithia Motors Inc.", "Liz Claiborne Inc.", "Lockheed Martin Corporation", "Loews Corporation", "Longs Drug Stores Corporation", "Louisiana-Pacific Corporation", "Lowe's Companies Inc.", "LSI Logic Corporation", "The LTV Corporation", "The Lubrizol Corporation", "Lucent Technologies Inc.", "Lyondell Chemical Company", "M & T Bank Corporation", "Magellan Health Services Inc.", "Mail-Well Inc.", "Mandalay Resort Group", "Manor Care Inc.", "Manpower Inc.", "Marathon Oil Corporation", "Mariner Health Care Inc.", "Markel Corporation", "Marriott International Inc.", "Marsh & McLennan Companies Inc.", "Marsh Supermarkets Inc.", "Marshall & Ilsley Corporation", "Martin Marietta Materials Inc.", "Masco Corporation", "Massey Energy Company", "MasTec Inc.", "Mattel Inc.", "Maxim Integrated Products Inc.", "Maxtor Corporation", "Maxxam Inc.", "The May Department Stores Company", "Maytag Corporation", "MBNA Corporation", "McCormick & Company Incorporated", "McDonald's Corporation", "The McGraw-Hill Companies Inc.", "McKesson Corporation", "McLeodUSA Incorporated", "M.D.C. Holdings Inc.", "MDU Resources Group Inc.", "MeadWestvaco Corporation", "Medtronic Inc.", "Mellon Financial Corporation", "The Men's Wearhouse Inc.", "Merck & Co., Inc.", "Mercury General Corporation", "Merrill Lynch & Co. Inc.", "Metaldyne Corporation", "Metals USA Inc.", "MetLife Inc.", "Metris Companies Inc", "MGIC Investment Corporation", "MGM Mirage", "Michaels Stores Inc.", "Micron Technology Inc.", "Microsoft Corporation", "Milacron Inc.", "Millennium Chemicals Inc.", "Mirant Corporation", "Mohawk Industries Inc.", "Molex Incorporated", "The MONY Group Inc.", "Morgan Stanley Dean Witter & Co.", "Motorola Inc.", "MPS Group Inc.", "Murphy Oil Corporation", "Nabors Industries Inc", "Nacco Industries Inc", "Nash Finch Company", "National City Corp.", "National Commerce Financial Corporation", "National Fuel Gas Company", "National Oilwell Inc", "National Rural Utilities Cooperative Finance Corporation", "National Semiconductor Corporation", "National Service Industries Inc", "Navistar International Corporation", "NCR Corporation", "The Neiman Marcus Group Inc.", "New Jersey Resources Corporation", "New York Times Company", "Newell Rubbermaid Inc", "Newmont Mining Corporation", "Nextel Communications Inc", "Nicor Inc", "Nike Inc", "NiSource Inc", "Noble Energy Inc", "Nordstrom Inc", "Norfolk Southern Corporation", "Nortek Inc", "North Fork Bancorporation Inc", "Northeast Utilities System", "Northern Trust Corporation", "Northrop Grumman Corporation", "NorthWestern Corporation", "Novellus Systems Inc", "NSTAR", "NTL Incorporated", "Nucor Corp", "Nvidia Corp", "NVR Inc", "Northwest Airlines Corp", "Occidental Petroleum Corp", "Ocean Energy Inc", "Office Depot Inc.", "OfficeMax Inc", "OGE Energy Corp", "Oglethorpe Power Corp.", "Ohio Casualty Corp.", "Old Republic International Corp.", "Olin Corp.", "OM Group Inc", "Omnicare Inc", "Omnicom Group", "On Semiconductor Corp", "ONEOK Inc", "Oracle Corp", "Oshkosh Truck Corp", "Outback Steakhouse Inc.", "Owens & Minor Inc.", "Owens Corning", "Owens-Illinois Inc", "Oxford Health Plans Inc", "Paccar Inc", "PacifiCare Health Systems Inc", "Packaging Corp. of America", "Pactiv Corp", "Pall Corp", "Pantry Inc", "Park Place Entertainment Corp", "Parker Hannifin Corp.", "Pathmark Stores Inc.", "Paychex Inc", "Payless Shoesource Inc", "Penn Traffic Co.", "Pennzoil-Quaker State Company", "Pentair Inc", "Peoples Energy Corp.", "PeopleSoft Inc", "Pep Boys Manny, Moe & Jack", "Potomac Electric Power Co.", "Pepsi Bottling Group Inc.", "PepsiAmericas Inc.", "PepsiCo Inc.", "Performance Food Group Co.", "Perini Corp", "PerkinElmer Inc", "Perot Systems Corp", "Petco Animal Supplies Inc.", "Peter Kiewit Sons', Inc.", "PETsMART Inc", "Pfizer Inc", "Pacific Gas & Electric Corp.", "Pharmacia Corp", "Phar Mor Inc.", "Phelps Dodge Corp.", "Philip Morris Companies Inc.", "Phillips Petroleum Co", "Phillips Van Heusen Corp.", "Phoenix Companies Inc", "Pier 1 Imports Inc.", "Pilgrim's Pride Corporation", "Pinnacle West Capital Corp", "Pioneer-Standard Electronics Inc.", "Pitney Bowes Inc.", "Pittston Brinks Group", "Plains All American Pipeline LP", "PNC Financial Services Group Inc.", "PNM Resources Inc", "Polaris Industries Inc.", "Polo Ralph Lauren Corp", "PolyOne Corp", "Popular Inc", "Potlatch Corp", "PPG Industries Inc", "PPL Corp", "Praxair Inc", "Precision Castparts Corp", "Premcor Inc.", "Pride International Inc", "Primedia Inc", "Principal Financial Group Inc.", "Procter & Gamble Co.", "Pro-Fac Cooperative Inc.", "Progress Energy Inc", "Progressive Corporation", "Protective Life Corp", "Provident Financial Group", "Providian Financial Corp.", "Prudential Financial Inc.", "PSS World Medical Inc", "Public Service Enterprise Group Inc.", "Publix Super Markets Inc.", "Puget Energy Inc.", "Pulte Homes Inc", "Qualcomm Inc", "Quanta Services Inc.", "Quantum Corp", "Quest Diagnostics Inc.", "Questar Corp", "Quintiles Transnational", "Qwest Communications Intl Inc", "R.J. Reynolds Tobacco Company", "R.R. Donnelley & Sons Company", "Radio Shack Corporation", "Raymond James Financial Inc.", "Raytheon Company", "Reader's Digest Association Inc.", "Reebok International Ltd.", "Regions Financial Corp.", "Regis Corporation", "Reliance Steel & Aluminum Co.", "Reliant Energy Inc.", "Rent A Center Inc", "Republic Services Inc", "Revlon Inc", "RGS Energy Group Inc", "Rite Aid Corp", "Riverwood Holding Inc.", "RoadwayCorp", "Robert Half International Inc.", "Rock-Tenn Co", "Rockwell Automation Inc", "Rockwell Collins Inc", "Rohm & Haas Co.", "Ross Stores Inc", "RPM Inc.", "Ruddick Corp", "Ryder System Inc", "Ryerson Tull Inc", "Ryland Group Inc.", "Sabre Holdings Corp", "Safeco Corp", "Safeguard Scientifics Inc.", "Safeway Inc", "Saks Inc", "Sanmina-SCI Inc", "Sara Lee Corp", "SBC Communications Inc", "Scana Corp.", "Schering-Plough Corp", "Scholastic Corp", "SCI Systems Onc.", "Science Applications Intl. Inc.", "Scientific-Atlanta Inc", "Scotts Company", "Seaboard Corp", "Sealed Air Corp", "Sears Roebuck & Co", "Sempra Energy", "Sequa Corp", "Service Corp. International", "ServiceMaster Co", "Shaw Group Inc", "Sherwin-Williams Company", "Shopko Stores Inc", "Siebel Systems Inc", "Sierra Health Services Inc", "Sierra Pacific Resources", "Silgan Holdings Inc.", "Silicon Graphics Inc", "Simon Property Group Inc", "SLM Corporation", "Smith International Inc", "Smithfield Foods Inc", "Smurfit-Stone Container Corp", "Snap-On Inc", "Solectron Corp", "Solutia Inc", "Sonic Automotive Inc.", "Sonoco Products Co.", "Southern Company", "Southern Union Company", "SouthTrust Corp.", "Southwest Airlines Co", "Southwest Gas Corp", "Sovereign Bancorp Inc.", "Spartan Stores Inc", "Spherion Corp", "Sports Authority Inc", "Sprint Corp.", "SPX Corp", "St. Jude Medical Inc", "St. Paul Cos.", "Staff Leasing Inc.", "StanCorp Financial Group Inc", "Standard Pacific Corp.", "Stanley Works", "Staples Inc", "Starbucks Corp", "Starwood Hotels & Resorts Worldwide Inc", "State Street Corp.", "Stater Bros. Holdings Inc.", "Steelcase Inc", "Stein Mart Inc", "Stewart & Stevenson Services Inc", "Stewart Information Services Corp", "Stilwell Financial Inc", "Storage Technology Corporation", "Stryker Corp", "Sun Healthcare Group Inc.", "Sun Microsystems Inc.", "SunGard Data Systems Inc.", "Sunoco Inc.", "SunTrust Banks Inc", "Supervalu Inc", "Swift Transportation, Co., Inc", "Symbol Technologies Inc", "Synovus Financial Corp.", "Sysco Corp", "Systemax Inc.", "Target Corp.", "Tech Data Corporation", "TECO Energy Inc", "Tecumseh Products Company", "Tektronix Inc", "Teleflex Incorporated", "Telephone & Data Systems Inc", "Tellabs Inc.", "Temple-Inland Inc", "Tenet Healthcare Corporation", "Tenneco Automotive Inc.", "Teradyne Inc", "Terex Corp", "Tesoro Petroleum Corp.", "Texas Industries Inc.", "Texas Instruments Incorporated", "Textron Inc", "Thermo Electron Corporation", "Thomas & Betts Corporation", "Tiffany & Co", "Timken Company", "TJX Companies Inc", "TMP Worldwide Inc", "Toll Brothers Inc", "Torchmark Corporation", "Toro Company", "Tower Automotive Inc.", "Toys 'R' Us Inc", "Trans World Entertainment Corp.", "TransMontaigne Inc", "Transocean Inc", "TravelCenters of America Inc.", "Triad Hospitals Inc", "Tribune Company", "Trigon Healthcare Inc.", "Trinity Industries Inc", "Trump Hotels & Casino Resorts Inc.", "TruServ Corporation", "TRW Inc", "TXU Corp", "Tyson Foods Inc", "U.S. Bancorp", "U.S. Industries Inc.", "UAL Corporation", "UGI Corporation", "Unified Western Grocers Inc", "Union Pacific Corporation", "Union Planters Corp", "Unisource Energy Corp", "Unisys Corporation", "United Auto Group Inc", "United Defense Industries Inc.", "United Parcel Service Inc", "United Rentals Inc", "United Stationers Inc", "United Technologies Corporation", "UnitedHealth Group Incorporated", "Unitrin Inc", "Universal Corporation", "Universal Forest Products Inc", "Universal Health Services Inc", "Unocal Corporation", "Unova Inc", "UnumProvident Corporation", "URS Corporation", "US Airways Group Inc", "US Oncology Inc", "USA Interactive", "USFreighways Corporation", "USG Corporation", "UST Inc", "Valero Energy Corporation", "Valspar Corporation", "Value City Department Stores Inc", "Varco International Inc", "Vectren Corporation", "Veritas Software Corporation", "Verizon Communications Inc", "VF Corporation", "Viacom Inc", "Viad Corp", "Viasystems Group Inc", "Vishay Intertechnology Inc", "Visteon Corporation", "Volt Information Sciences Inc", "Vulcan Materials Company", "W.R. Berkley Corporation", "W.R. Grace & Co", "W.W. Grainger Inc", "Wachovia Corporation", "Wakenhut Corporation", "Walgreen Co", "Wallace Computer Services Inc", "Wal-Mart Stores Inc", "Walt Disney Co", "Walter Industries Inc", "Washington Mutual Inc", "Washington Post Co.", "Waste Management Inc", "Watsco Inc", "Weatherford International Inc", "Weis Markets Inc.", "Wellpoint Health Networks Inc", "Wells Fargo & Company", "Wendy's International Inc", "Werner Enterprises Inc", "WESCO International Inc", "Western Digital Inc", "Western Gas Resources Inc", "WestPoint Stevens Inc", "Weyerhauser Company", "WGL Holdings Inc", "Whirlpool Corporation", "Whole Foods Market Inc", "Willamette Industries Inc.", "Williams Companies Inc", "Williams Sonoma Inc", "Winn Dixie Stores Inc", "Wisconsin Energy Corporation", "Wm Wrigley Jr Company", "World Fuel Services Corporation", "WorldCom Inc", "Worthington Industries Inc", "WPS Resources Corporation", "Wyeth", "Wyndham International Inc", "Xcel Energy Inc", "Xerox Corp", "Xilinx Inc", "XO Communications Inc", "Yellow Corporation", "York International Corp", "Yum Brands Inc.", "Zale Corporation", "Zions Bancorporation"} + +var industries = []string{"Aeronautics and Defence", "Alternative Investment Instruments", "Automotive and Parts", "Banking", "Beverages", "Building and Materials", "Commercial Transportation", "Domestic Goods", "Electricity Generation and Distribution", "Electronic & Electrical Equipment", "Engineering Products", "Financials", "Food Products", "Forestry & Paper", "Fossil Fuels and Distribution", "Health Care and Related Services", "Household Utilities", "Industrial Chemicals", "Industrials", "Insurance", "Investment Companies", "IT Hardware", "IT Services", "Leisure Products", "Media", "Medicine and Biotech Research", "Metals", "Mining", "Personal Goods", "Property", "Retailers", "Support", "Telecommunications", "Tobacco", "Tourism and Leisure"} + +func CompanyName() string { + return New().CompanyName() +} + +func (f *Faker) CompanyName() string { + return companies[f.r.Intn(len(companies))] +} + +func CompanyIndustry() string { + return New().CompanyIndustry() +} + +func (f *Faker) CompanyIndustry() string { + return industries[f.r.Intn(len(industries))] +} diff --git a/util/fake/fake.go b/util/fake/fake.go new file mode 100644 index 00000000..368d3c5a --- /dev/null +++ b/util/fake/fake.go @@ -0,0 +1,33 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "math/rand" + "time" +) + +func init() { + rand.Seed(time.Now().UTC().UnixNano()) +} + +type Faker struct { + r *rand.Rand +} + +func New() *Faker { + s := time.Now().UTC().UnixNano() + return &Faker{r: rand.New(rand.NewSource(s))} +} diff --git a/util/fake/latin.go b/util/fake/latin.go new file mode 100644 index 00000000..0337f4d1 --- /dev/null +++ b/util/fake/latin.go @@ -0,0 +1,3560 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +var latin = [...]string{ + "a", + "ab", + "abditioribus", + "abditis", + "abesset", + "abiciam", + "abiciendum", + "abigo", + "aboleatur", + "abs", + "absconderem", + "absconditi", + "abscondo", + "absentia", + "absit", + "absorbui", + "absorbuit", + "absorpta", + "abstinentia", + "abstrusioribus", + "absunt", + "absurdissimum", + "abundabimus", + "abundantiore", + "abundare", + "abyssos", + "abyssus", + "ac", + "accedam", + "accedimus", + "accedit", + "accende", + "accepimus", + "accepisse", + "acceptabilia", + "acceptam", + "accidit", + "accipiat", + "actione", + "actiones", + "actionibus", + "ad", + "adamavi", + "addiderunt", + "adducor", + "adduxerunt", + "aderat", + "adesset", + "adest", + "adflatu", + "adhaesit", + "adhibemus", + "adhuc", + "adipiscendae", + "adipisci", + "aditu", + "aditum", + "adiungit", + "adlapsu", + "admiratio", + "admittantur", + "admitti", + "admoneas", + "admonente", + "admoniti", + "adparere", + "adparet", + "adpellata", + "adpetere", + "adprehendit", + "adprobamus", + "adprobandi", + "adpropinquet", + "adquiescat", + "adquiesco", + "adsensum", + "adsit", + "adsuefacta", + "adsunt", + "adsurgat", + "adsurgere", + "adtendi", + "adveriarius", + "adversa", + "adversis", + "adversitas", + "adversitatibus", + "adversitatis", + "adversus", + "advertenti", + "advertimus", + "aedificasti", + "aeger", + "aegre", + "aegrotantes", + "aenigmate", + "aequalis", + "aequo", + "aer", + "aeris", + "aerumnosis", + "aerumnosum", + "aestimanda", + "aestimantur", + "aestimare", + "aestimem", + "aestus", + "aetate", + "affectent", + "affectio", + "affectiones", + "affectionum", + "affectu", + "affectum", + "affectus", + "afficior", + "afficit", + "afuerit", + "agam", + "agantur", + "agatur", + "agebam", + "agenti", + "agerem", + "agit", + "agitaveram", + "agitis", + "agito", + "agnoscendo", + "agnoscere", + "agnoscerem", + "agnosceremus", + "agnoscerent", + "agnoscimus", + "agnosco", + "agnovi", + "ago", + "agro", + "ait", + "alas", + "album", + "alexandrino", + "alia", + "aliae", + "aliam", + "alias", + "alibi", + "alicui", + "alienam", + "alieni", + "alieno", + "alienorum", + "alii", + "aliis", + "alimenta", + "alimentorum", + "alio", + "alioquin", + "alios", + "aliqua", + "aliquam", + "aliquando", + "aliquantulum", + "aliquantum", + "aliquid", + "aliquo", + "aliquod", + "alis", + "aliter", + "aliterque", + "aliud", + "alium", + "alius", + "alta", + "alter", + "altera", + "alteram", + "alteri", + "alterum", + "altius", + "amamus", + "amandum", + "amant", + "amare", + "amaremus", + "amarent", + "amari", + "amaris", + "amaritudo", + "amarus", + "amasti", + "amat", + "amatoribus", + "amatur", + "amavi", + "ambiendum", + "ambitione", + "ambitiones", + "ambitum", + "ambulasti", + "ambulent", + "amem", + "amemur", + "amet", + "ametur", + "amicum", + "amisi", + "amissum", + "amittere", + "amo", + "amoenos", + "amor", + "amore", + "amorem", + "amplexibus", + "amplexum", + "amplior", + "amplitudines", + "amplius", + "amplum", + "an", + "anaximenes", + "angelos", + "angelum", + "angustus", + "anhelo", + "anima", + "animadvertendo", + "animadverterunt", + "animae", + "animales", + "animalia", + "animalibus", + "animam", + "animant", + "animarum", + "animas", + "animi", + "animo", + "animos", + "animum", + "animus", + "ante", + "antepono", + "antequam", + "antiqua", + "antiquis", + "antris", + "aperit", + "appareat", + "apparens", + "apparet", + "apparuit", + "appetam", + "appetitu", + "appetitum", + "approbare", + "approbat", + "approbavi", + "approbet", + "apud", + "aqua", + "aquae", + "aquilone", + "aranea", + "araneae", + "arbitratus", + "ardentius", + "ardes", + "arguitur", + "aromatum", + "arrogantis", + "artes", + "artibus", + "artificiosas", + "artificosa", + "ascendam", + "ascendant", + "ascendens", + "aspectui", + "aspernatione", + "aspero", + "asperum", + "assecutus", + "assequitur", + "assuescere", + "assuescunt", + "assumunt", + "assumuntur", + "assunt", + "at", + "athanasio", + "atque", + "attamen", + "attigerit", + "attigi", + "attingam", + "attingere", + "attingi", + "audeo", + "audi", + "audiam", + "audiant", + "audiar", + "audiat", + "audiebam", + "audierint", + "audieris", + "audierit", + "audierunt", + "audio", + "audire", + "audis", + "audit", + "audito", + "auditur", + "audiunt", + "audiuntur", + "audivi", + "audivimus", + "aufer", + "augebis", + "augendo", + "augeret", + "auget", + "aula", + "auram", + "auras", + "aurem", + "aures", + "auri", + "auribus", + "auris", + "aurium", + "aut", + "autem", + "avaritiam", + "avertat", + "avertit", + "avertitur", + "aves", + "avide", + "beares", + "beata", + "beatae", + "beatam", + "beati", + "beatitudinis", + "beatos", + "beatum", + "beatus", + "bellum", + "bene", + "benedicendo", + "benedicere", + "benedicis", + "benedicitur", + "bestiae", + "bibendi", + "bibendo", + "bibo", + "blanditur", + "bona", + "bonae", + "bonam", + "bone", + "boni", + "bonis", + "bono", + "bonorumque", + "bonos", + "bonum", + "cadavere", + "cadere", + "cadunt", + "caecis", + "caecitatem", + "caecus", + "caelestium", + "caeli", + "caelo", + "caelum", + "calamitas", + "calciamentis", + "calidum", + "calumnientur", + "campis", + "campos", + "candorem", + "canem", + "canenti", + "canitur", + "canora", + "canoris", + "cantandi", + "cantantem", + "cantantur", + "cantarentur", + "cantilenarum", + "canto", + "cantu", + "cantus", + "capacitas", + "caperetur", + "capiamur", + "capiar", + "capiendum", + "capio", + "capior", + "capit", + "capiuntur", + "captans", + "captus", + "caput", + "careamus", + "carent", + "carentes", + "careo", + "carere", + "caritas", + "caritatis", + "carne", + "carneis", + "carnem", + "carneo", + "carnes", + "carnis", + "caro", + "carthaginem", + "carthaginis", + "castam", + "caste", + "castissime", + "casto", + "castrorum", + "casu", + "catervas", + "catervatim", + "causa", + "caveam", + "cavens", + "cavernis", + "cavis", + "cedendo", + "cedentibus", + "cedunt", + "celeritate", + "cellis", + "cepit", + "cernimus", + "certa", + "certe", + "certissimum", + "certissimus", + "certo", + "certum", + "certus", + "cervicem", + "cessant", + "cessare", + "cessas", + "cessatione", + "cessavit", + "cetera", + "ceterarumque", + "ceteri", + "ceteris", + "ceterorum", + "ceteros", + "christus", + "cibo", + "cibum", + "cibus", + "cinerem", + "circo", + "circumquaque", + "circumstant", + "circumstrepant", + "cito", + "civium", + "clamasti", + "clamat", + "clamore", + "claudicans", + "clauditur", + "coapta", + "coegerit", + "coepisti", + "coepta", + "cogenda", + "cogens", + "cogeremur", + "cogit", + "cogitamus", + "cogitando", + "cogitare", + "cogitarem", + "cogitari", + "cogitatione", + "cogitationibus", + "cogitationis", + "cogitetur", + "cogito", + "cogitur", + "cognitionis", + "cognitor", + "cognituri", + "cognitus", + "cognoscam", + "cognoscendam", + "cognoscendi", + "cognoscendum", + "cognoscere", + "cognosceremus", + "cognoscet", + "cognovi", + "cognovit", + "cogo", + "cohibeamus", + "cohiberi", + "colligantur", + "colligenda", + "colligere", + "colligimur", + "colligimus", + "colligitur", + "colligo", + "coloratae", + "colores", + "colorum", + "colunt", + "comes", + "comitatum", + "comitatur", + "comitum", + "commemini", + "commemoro", + "commendantur", + "commendata", + "commendatum", + "commendavi", + "commendavit", + "commune", + "commutantur", + "compagem", + "comprehendet", + "conantes", + "conatur", + "conatus", + "conceptaculum", + "concessisti", + "concludamus", + "concordiam", + "concubitu", + "concupiscentia", + "concupiscentiae", + "concupiscentiam", + "concupiscentias", + "concupiscit", + "concurrunt", + "condit", + "conduntur", + "conectitur", + "conexos", + "confecta", + "conferamus", + "conferunt", + "confessa", + "confessio", + "confessione", + "confessiones", + "confessionum", + "confitear", + "confitente", + "confitentem", + "confiteor", + "confiteri", + "confitetur", + "conforta", + "confortasti", + "confortat", + "congesta", + "congoscam", + "congratulari", + "congruentem", + "coniugio", + "coniunctam", + "coniunctione", + "conmemoravi", + "conmendat", + "conmixta", + "conmoniti", + "conmunem", + "conor", + "conperero", + "conprehendant", + "conprehenditur", + "conpressisti", + "conscientia", + "conscientiae", + "conscius", + "conscribebat", + "consensio", + "consensionem", + "consentiat", + "consequentibus", + "consequentium", + "considerabo", + "considerationem", + "consideravi", + "considero", + "consilium", + "consolatione", + "consonant", + "consonarent", + "consortium", + "conspectu", + "conspectum", + "conspiciant", + "conspiciatur", + "conspirantes", + "constans", + "constrictione", + "consuetudine", + "consuetudinem", + "consuetudinis", + "consuetudo", + "consuevit", + "consulebam", + "consulens", + "consulentibus", + "consulerem", + "consulunt", + "consumma", + "contemnat", + "contemnenda", + "contemnere", + "contemnit", + "contemptibilibus", + "contemptu", + "contendunt", + "contenti", + "conterritus", + "contexo", + "contineam", + "continebat", + "continens", + "continentiam", + "continet", + "contra", + "contractando", + "contrahit", + "contraria", + "contrario", + "contrectatae", + "contrectavi", + "contremunt", + "contristamur", + "contristari", + "contristat", + "contristatur", + "contristentur", + "contristor", + "contumelia", + "convenientissima", + "convertit", + "convinci", + "copia", + "copiarum", + "copiosae", + "copiosum", + "cor", + "coram", + "corda", + "corde", + "cordi", + "cordibus", + "cordis", + "corones", + "corpora", + "corporales", + "corporalis", + "corporalium", + "corpore", + "corpori", + "corporis", + "corporum", + "corpulentum", + "corpus", + "corrigebat", + "corrigendam", + "corruptelarum", + "corruptible", + "corruptione", + "coruscasti", + "cotidiana", + "cotidianam", + "cotidianas", + "cotidianum", + "cotidie", + "crapula", + "creator", + "creatorem", + "creaturam", + "crebro", + "credendum", + "credentium", + "credidi", + "credimus", + "credit", + "credita", + "creditarum", + "credituri", + "credunt", + "crucis", + "cubile", + "cubilia", + "cui", + "cuius", + "cuiuscemodi", + "cuiuslibet", + "cuiusquam", + "cuiusque", + "cum", + "cuncta", + "cupiant", + "cupidatatium", + "cupiditas", + "cupiditate", + "cupiditatem", + "cupiditatis", + "cupientem", + "cupimus", + "cupio", + "cupiunt", + "cur", + "cura", + "curam", + "curare", + "curiosa", + "curiosarum", + "curiositas", + "curiositate", + "curiositatis", + "curiosum", + "curo", + "currentem", + "custodiant", + "custodis", + "da", + "dabis", + "damnante", + "damnetur", + "dare", + "dari", + "das", + "datur", + "david", + "daviticum", + "de", + "debeo", + "debet", + "debui", + "deceptum", + "decernam", + "decet", + "deciperentur", + "decus", + "dedisti", + "deerat", + "deerit", + "defectus", + "defenditur", + "defluximus", + "deformis", + "defrito", + "defuissent", + "dei", + "deinde", + "delectamur", + "delectarentur", + "delectari", + "delectat", + "delectati", + "delectatio", + "delectatione", + "delectationem", + "delectatur", + "delectatus", + "delector", + "delet", + "deliciae", + "deliciosas", + "delicta", + "dementia", + "demerguntur", + "demetimur", + "demonstrare", + "demonstrasti", + "demonstrata", + "demonstratus", + "denuo", + "deo", + "depereunt", + "deponamus", + "depromi", + "deputabimus", + "des", + "deserens", + "deseri", + "desiderans", + "desiderant", + "desideraris", + "desiderata", + "desideravit", + "desiderem", + "desideriis", + "desiderio", + "desiderium", + "desidero", + "desidiosum", + "desivero", + "desperare", + "desperarem", + "desperatione", + "despiciam", + "destruas", + "desuper", + "det", + "deterior", + "deteriore", + "detestetur", + "detestor", + "detruncata", + "deum", + "deus", + "deviare", + "dextera", + "dexteram", + "diabolus", + "dicam", + "dicant", + "dicat", + "dicatur", + "dicebam", + "dicens", + "dicentem", + "dicentia", + "dicentium", + "dicere", + "dicerem", + "diceremus", + "dicerentur", + "diceretur", + "dici", + "dicimur", + "dicimus", + "dicis", + "dicit", + "dicite", + "dico", + "dictis", + "dictum", + "dicturus", + "dicunt", + "dicuntur", + "didicerim", + "didici", + "didicisse", + "didicissem", + "die", + "diebus", + "diei", + "diem", + "differens", + "difficultates", + "difficultatis", + "difiniendo", + "digna", + "dignaris", + "dignationem", + "dignatus", + "digni", + "dignitatibus", + "dignitatis", + "diiudicas", + "diiudico", + "dilabuntur", + "dilexisti", + "diligentius", + "diligi", + "diligit", + "dimensionumque", + "dimitti", + "dinoscens", + "dinumerans", + "direxi", + "discendi", + "discere", + "discerem", + "discerent", + "discernebat", + "discernens", + "discernere", + "discernerem", + "discernitur", + "discerno", + "discrevisse", + "discurro", + "dispensator", + "dispersione", + "displiceant", + "displicens", + "displicent", + "displiceo", + "displicere", + "dispulerim", + "disputandi", + "disputando", + "disputante", + "disputantur", + "disputare", + "dissentire", + "disseritur", + "dissimile", + "dissimilia", + "distantia", + "distincte", + "distinguere", + "distorta", + "diu", + "diutius", + "divellit", + "diversa", + "diversisque", + "diversitate", + "diverso", + "divexas", + "dividendo", + "divino", + "divitiae", + "dixeris", + "dixerit", + "dixi", + "dixit", + "doce", + "docebat", + "docens", + "docentem", + "doces", + "doctrinae", + "doctrinis", + "docuisti", + "doleam", + "doleamus", + "doleat", + "dolendum", + "dolet", + "dolor", + "dolore", + "dolorem", + "dolores", + "domi", + "dominaris", + "domine", + "domino", + "dominos", + "dominum", + "dominus", + "dona", + "donasti", + "donec", + "donum", + "dormiat", + "dormienti", + "dormientis", + "dormies", + "dormitabis", + "drachmam", + "duabus", + "dubia", + "dubitant", + "dubitatione", + "ducere", + "dulce", + "dulcedine", + "dulcedinem", + "dulcedo", + "dulces", + "dulcidine", + "dulcis", + "dum", + "duobus", + "dura", + "durum", + "duxi", + "e", + "ea", + "eadem", + "eam", + "eant", + "earum", + "eas", + "ebrietas", + "ebrietate", + "ebriosos", + "ebriosus", + "ecce", + "ecclesia", + "ecclesiae", + "edacitas", + "edendi", + "edendo", + "edunt", + "efficeret", + "egenus", + "egerim", + "ego", + "ei", + "eis", + "eius", + "elapsum", + "elati", + "elian", + "eligam", + "eliqua", + "eloquentes", + "eloquentiam", + "eloquia", + "eloquio", + "eloquiorum", + "emendicata", + "en", + "enervandam", + "enim", + "enubiletur", + "enumerat", + "eo", + "eodem", + "eoque", + "eorum", + "eos", + "eosdem", + "episcopo", + "equus", + "eram", + "erant", + "eras", + "erat", + "ergo", + "ergone", + "erigo", + "eripe", + "eripietur", + "eris", + "erit", + "erogo", + "errans", + "erro", + "erubescam", + "eruens", + "eruerentur", + "eruuntur", + "es", + "esau", + "esca", + "escae", + "escam", + "escas", + "esse", + "essem", + "essent", + "esset", + "est", + "estis", + "esto", + "esurio", + "et", + "etiam", + "etiamne", + "etiamsi", + "etsi", + "euge", + "eum", + "eundem", + "eunt", + "evacuaret", + "evellas", + "evellere", + "evelles", + "eventa", + "evidentius", + "evigilantes", + "evigilet", + "ex", + "exarsi", + "exaudi", + "excellentiam", + "exciderat", + "exciderunt", + "excipiens", + "excitant", + "excitentur", + "exclamaverunt", + "excogitanda", + "excusatio", + "excusationis", + "exemplo", + "exhibentur", + "exhorreas", + "existimet", + "exitum", + "expavi", + "expedita", + "experiamur", + "experiendi", + "experientia", + "experientiam", + "experimentum", + "experimur", + "experta", + "expertarum", + "expertum", + "expertus", + "expetuntur", + "explorandi", + "explorant", + "exsecror", + "exserentes", + "exteriora", + "exterioris", + "exteriorum", + "exterius", + "exterminantes", + "extinguere", + "extingueris", + "extra", + "extraneus", + "extrinsecus", + "exultans", + "exultatione", + "fabricasti", + "fabricatae", + "fabricationibus", + "fabricavit", + "fabrorum", + "fac", + "facere", + "faciam", + "faciant", + "faciat", + "facie", + "faciebat", + "faciei", + "faciem", + "faciendo", + "faciens", + "faciente", + "facies", + "faciet", + "facile", + "faciliter", + "facio", + "facis", + "facit", + "faciunt", + "facta", + "facti", + "factis", + "factito", + "factos", + "factum", + "factumque", + "factus", + "facultas", + "fallacia", + "fallaciam", + "fallar", + "fallax", + "fallere", + "falli", + "fallit", + "fallitur", + "falsa", + "falsi", + "falsis", + "falsissime", + "falsitate", + "falsum", + "fama", + "fames", + "familiari", + "familiaritate", + "famulatum", + "fastu", + "fatemur", + "fateor", + "febris", + "fecisse", + "fecisti", + "fecit", + "ferre", + "fiant", + "fias", + "fiat", + "fide", + "fidei", + "fidelis", + "fidem", + "fiducia", + "fierem", + "fierent", + "fieret", + "fieri", + "figmentis", + "filiis", + "filio", + "filiorum", + "filios", + "filium", + "filum", + "fine", + "finis", + "firma", + "fit", + "fixit", + "flabiles", + "flagitabat", + "flagitantur", + "flammam", + "flatus", + "flenda", + "flendae", + "fleo", + "flete", + "fletur", + "fletus", + "flexu", + "florum", + "fluctuo", + "fluctus", + "flumina", + "fluminum", + "fluxum", + "foeda", + "foras", + "fores", + "foribus", + "foris", + "forma", + "formaeque", + "formas", + "formosa", + "fornax", + "forsitan", + "fortasse", + "fortassis", + "forte", + "fortitudinem", + "fortius", + "fragrasti", + "frangat", + "fraternae", + "fraternis", + "fraternus", + "fratres", + "fratribus", + "freni", + "frequentatur", + "frigidique", + "frigidumve", + "fructu", + "fructum", + "fructus", + "fudi", + "fueram", + "fueramus", + "fuerim", + "fuerimus", + "fueris", + "fuerit", + "fuero", + "fuerunt", + "fugam", + "fugasti", + "fugiamus", + "fui", + "fuimus", + "fuisse", + "fuit", + "fulgeat", + "fulget", + "fundamenta", + "fundum", + "furens", + "futurae", + "futuras", + "futuri", + "gaudeam", + "gaudeant", + "gaudeat", + "gaudebit", + "gaudens", + "gaudent", + "gaudentes", + "gaudeo", + "gaudere", + "gaudet", + "gaudii", + "gaudiis", + "gaudio", + "gaudium", + "gavisum", + "gemitu", + "gemitum", + "gemitus", + "genera", + "generalis", + "generatimque", + "genere", + "generibus", + "generis", + "genuit", + "genus", + "gerit", + "geritur", + "gero", + "gestat", + "gloria", + "gloriae", + "gloriatur", + "gradibus", + "graeca", + "graecae", + "graece", + "graeci", + "graecus", + "grandi", + "grandis", + "gratia", + "gratiae", + "gratiam", + "gratiarum", + "gratias", + "gratis", + "grave", + "graventur", + "gressum", + "grex", + "gusta", + "gustandi", + "gustando", + "gustatae", + "gustavi", + "gutture", + "gutturis", + "gyros", + "habeas", + "habeat", + "habeatur", + "habebunt", + "habemus", + "habendum", + "habens", + "habent", + "habere", + "haberent", + "haberet", + "habes", + "habet", + "habitaculum", + "habitare", + "habitaret", + "habitas", + "habites", + "habiti", + "habito", + "hac", + "hae", + "haec", + "haeream", + "haereo", + "haeret", + "hanc", + "has", + "haurimus", + "haustum", + "hebesco", + "heremo", + "hi", + "hic", + "hierusalem", + "hilarescit", + "hinc", + "his", + "hoc", + "homine", + "hominem", + "homines", + "homini", + "hominibus", + "hominis", + "hominum", + "homo", + "honestis", + "honoris", + "horrendum", + "horum", + "hos", + "huc", + "huic", + "huius", + "huiuscemodi", + "humana", + "humanae", + "humanus", + "humilem", + "humilibus", + "humilitatem", + "hymno", + "hymnum", + "hymnus", + "iaceat", + "iacitur", + "iacob", + "iactantia", + "iacto", + "iam", + "iamque", + "ianua", + "ianuas", + "ibi", + "id", + "idem", + "ideo", + "ideoque", + "idoneus", + "ieiuniis", + "iesus", + "igitur", + "ignorat", + "illa", + "illac", + "illae", + "illam", + "ille", + "illi", + "illic", + "illico", + "illinc", + "illis", + "illius", + "illo", + "illos", + "illuc", + "illud", + "illum", + "imaginatur", + "imagine", + "imaginem", + "imagines", + "imaginesque", + "imaginibus", + "imaginis", + "imaginum", + "imago", + "imitanti", + "immaniter", + "immensa", + "immo", + "immortalis", + "imnagines", + "imperas", + "imperasti", + "imperfecta", + "impium", + "imples", + "imposuit", + "impressum", + "imprimi", + "imprimitur", + "improbat", + "improbet", + "in", + "inaequaliter", + "inanescunt", + "incaute", + "incertum", + "incertus", + "incideram", + "inciderunt", + "incipio", + "inclinatione", + "incognitam", + "incolis", + "incommutabilis", + "incomprehensibilis", + "inconcussus", + "inconsummatus", + "incorruptione", + "incurrunt", + "indagabit", + "inde", + "indecens", + "indica", + "indicabo", + "indicat", + "indicatae", + "indicavi", + "indidem", + "indigentiae", + "indigentiam", + "indisposite", + "indueris", + "ineffabiles", + "inesse", + "inest", + "inexcusabiles", + "inexplicabilis", + "infelix", + "inferiora", + "inferiore", + "infinita", + "infinitum", + "infirma", + "infirmior", + "infirmitas", + "infirmitate", + "infirmitatem", + "infirmitati", + "infirmitatis", + "infirmos", + "infirmus", + "infligi", + "influxit", + "ingemescentem", + "ingentes", + "ingenti", + "ingentibus", + "ingerantur", + "ingesta", + "ingredior", + "ingressae", + "ingressus", + "inhaerere", + "inhaereri", + "inhaeseram", + "inhaesero", + "inhiant", + "inimicus", + "iniqua", + "iniquitate", + "iniquitatibus", + "iniquitatis", + "iniuste", + "inlaqueantur", + "inlecebra", + "inlecebras", + "inlecebris", + "inlecebrosa", + "inlexit", + "inludi", + "inluminatio", + "inlusio", + "inlusionibus", + "inlustratori", + "inmemor", + "inmensa", + "inmoderatius", + "inmortalem", + "inmortali", + "inmunditiam", + "innecto", + "innocentia", + "innotescunt", + "innumerabiles", + "innumerabilia", + "innumerabilibus", + "innumerabiliter", + "innumerabilium", + "inperfectum", + "inperitiam", + "inperturbata", + "inpiis", + "inpinguandum", + "inpiorum", + "inplicans", + "inplicaverant", + "inplicentur", + "inpressa", + "inpressas", + "inpressit", + "inprobari", + "inquit", + "inquiunt", + "inretractabilem", + "inruebam", + "inruentes", + "inruentibus", + "insania", + "insaniam", + "insidiarum", + "insidiatur", + "insidiis", + "insinuat", + "inspirationis", + "instat", + "instituta", + "instituti", + "integer", + "intellecta", + "intellectus", + "intellegentis", + "intellegimus", + "intellegitur", + "intellego", + "intellegunt", + "intellexisse", + "intendere", + "intendimus", + "intentio", + "intentioni", + "intentionis", + "intentum", + "intentus", + "inter", + "interdum", + "interest", + "interfui", + "interior", + "interiora", + "interiore", + "interioris", + "interius", + "interiusque", + "interpellante", + "interpellat", + "interponunt", + "interrogans", + "interrogantibus", + "interrogare", + "interrogarentur", + "interrogari", + "interrogatio", + "interrogavi", + "interrogem", + "interroges", + "interroget", + "interrogo", + "interrumpunt", + "interrumpuntur", + "interstitio", + "intervalla", + "intervallis", + "intime", + "intonas", + "intra", + "intrant", + "intraverint", + "intraverunt", + "intravi", + "intrinsecus", + "intromittis", + "intromittuntur", + "introrsus", + "intuerer", + "intuetur", + "intus", + "inusitatum", + "invectarum", + "inveni", + "inveniam", + "inveniebam", + "invenimus", + "invenio", + "invenirem", + "inveniremus", + "inveniret", + "invenisse", + "invenit", + "inventa", + "inventor", + "inventum", + "inventus", + "invidentes", + "invisibiles", + "invisibilia", + "invocari", + "invoco", + "iohannem", + "ioseph", + "ipsa", + "ipsae", + "ipsam", + "ipsaque", + "ipsarum", + "ipsas", + "ipse", + "ipsi", + "ipsis", + "ipsius", + "ipso", + "ipsos", + "ipsosque", + "ipsum", + "israel", + "issac", + "ista", + "istae", + "istam", + "istarum", + "istas", + "iste", + "isti", + "istis", + "isto", + "istorum", + "istuc", + "istum", + "ita", + "itaque", + "item", + "iterum", + "itidem", + "iube", + "iubens", + "iubentem", + "iubentis", + "iubes", + "iucundiora", + "iucunditas", + "iudex", + "iudicante", + "iudicanti", + "iudicantibus", + "iudicare", + "iudicet", + "iudicia", + "iugo", + "iumenti", + "iussisti", + "iustificas", + "iustificatorum", + "iustitiae", + "iustitiam", + "iustum", + "iustus", + "labamur", + "labor", + "laboribus", + "laboro", + "lacrimas", + "laetamur", + "laetandis", + "laetatum", + "laetatus", + "laetitia", + "laetitiae", + "laetitiam", + "laetus", + "laetusque", + "languidus", + "languor", + "languores", + "laniato", + "lapidem", + "lapsus", + "laqueis", + "laqueo", + "laqueus", + "lascivos", + "lassitudines", + "lata", + "lateant", + "lateat", + "latere", + "latet", + "latina", + "latinae", + "latine", + "latinique", + "latis", + "latissimos", + "latitabant", + "laudabunt", + "laudandum", + "laudantur", + "laudare", + "laudari", + "laudatio", + "laudatorem", + "laudatur", + "laudatus", + "laudavit", + "laude", + "laudem", + "laudes", + "laudibus", + "laudis", + "laudor", + "lectorem", + "lege", + "leges", + "leguntur", + "lene", + "lenia", + "lenticulae", + "leporem", + "leve", + "levia", + "libeat", + "libeatque", + "libenter", + "liber", + "liberalibus", + "liberamenta", + "liberasti", + "libet", + "libidine", + "libro", + "licet", + "liliorum", + "lineas", + "lingua", + "linguarum", + "liquida", + "liquide", + "litteras", + "litteratura", + "loca", + "loco", + "locorum", + "locum", + "locuntur", + "locus", + "locutum", + "locutus", + "longe", + "longius", + "longum", + "loquebar", + "loquendo", + "loquens", + "loqueremur", + "loqueretur", + "loquitur", + "loquor", + "lucem", + "lucente", + "lucentem", + "lucerna", + "lucet", + "lucis", + "lucustis", + "lugens", + "lumen", + "luminibus", + "luminoso", + "lunam", + "lustravi", + "lux", + "machinationibus", + "macula", + "maerere", + "maerore", + "maerores", + "maeroribus", + "maestitiae", + "magicas", + "magis", + "magisque", + "magistro", + "magna", + "magnam", + "magni", + "magnificet", + "magnifico", + "magnum", + "magnus", + "maior", + "mala", + "male", + "mali", + "malim", + "malint", + "malis", + "malitia", + "malle", + "mallem", + "malo", + "malorum", + "malum", + "malus", + "mandamus", + "manducandi", + "manducantem", + "manducare", + "manducat", + "manducaverimus", + "manduco", + "maneas", + "manes", + "manet", + "manifesta", + "manifestari", + "manifestet", + "manifestetur", + "manifestus", + "manna", + "mansuefecisti", + "manu", + "manum", + "manus", + "mare", + "maris", + "mavult", + "maxime", + "me", + "mea", + "meae", + "meam", + "mearum", + "meas", + "mecum", + "mediator", + "mediatorem", + "medicamenta", + "medice", + "medicina", + "medicus", + "meditatusque", + "meditor", + "medium", + "medius", + "mei", + "meis", + "mel", + "melior", + "meliore", + "meliores", + "melius", + "mella", + "melodias", + "melos", + "membra", + "memento", + "meminerim", + "meminerimus", + "meminerunt", + "memini", + "meminimus", + "meminisse", + "meminissem", + "meminissemus", + "meminit", + "memor", + "memores", + "memoria", + "memoriae", + "memoriam", + "memoriter", + "mendacio", + "mendacium", + "mentem", + "mentiatur", + "mentiri", + "mentitur", + "meo", + "meorum", + "meos", + "meque", + "meretur", + "meridies", + "meritatem", + "meritis", + "merito", + "meruit", + "metas", + "metuebam", + "metuimus", + "metum", + "metumve", + "meum", + "meus", + "mihi", + "miles", + "militare", + "minister", + "ministerium", + "minor", + "minora", + "minuendo", + "minuit", + "minus", + "minusve", + "minutissimis", + "mira", + "mirabili", + "mirabilia", + "mirabiliter", + "miracula", + "mirandum", + "mirantur", + "mirari", + "mirifica", + "mirificum", + "miris", + "mirum", + "miser", + "misera", + "miserabiliter", + "miseratione", + "misereberis", + "miserere", + "miseria", + "miseriae", + "misericordia", + "misericordiae", + "misericordiam", + "misericordias", + "misericorditer", + "misericors", + "miseros", + "misertus", + "misisti", + "mittere", + "moderationi", + "moderatum", + "modestis", + "modi", + "modico", + "modicum", + "modis", + "modo", + "modos", + "modulatione", + "modum", + "modus", + "mole", + "molem", + "moles", + "molesta", + "molestia", + "molestiam", + "molestias", + "molestum", + "molle", + "momentum", + "montes", + "montium", + "monuisti", + "morbo", + "mordeor", + "mors", + "mortales", + "mortalis", + "mortalitatis", + "mortaliter", + "mortem", + "mortilitate", + "mortui", + "mortuis", + "mortuus", + "motus", + "moveat", + "movent", + "moveor", + "moveri", + "mulier", + "multa", + "multi", + "multimoda", + "multimodo", + "multiplices", + "multiplicitas", + "multiplicius", + "multique", + "multis", + "multos", + "multum", + "mulus", + "munda", + "mundatior", + "mundi", + "mundis", + "mundum", + "munera", + "munere", + "munerum", + "murmuravit", + "muscas", + "muta", + "mutans", + "mutant", + "mutare", + "mutaveris", + "mystice", + "nam", + "nares", + "narium", + "narrantes", + "narro", + "nascendo", + "nati", + "natura", + "naturae", + "naturam", + "ne", + "nec", + "necant", + "necessaria", + "necessarium", + "necesse", + "necessitas", + "necessitatis", + "neglecta", + "negotium", + "neminem", + "nemo", + "nepotibus", + "nequaquam", + "neque", + "nequeunt", + "nesciam", + "nesciat", + "nesciebam", + "nescio", + "nescirem", + "nescit", + "nidosve", + "nigrum", + "nihil", + "nihilo", + "nihilque", + "nimia", + "nimii", + "nimirum", + "nimis", + "nisi", + "niteat", + "nitidos", + "nituntur", + "nobis", + "nocte", + "noe", + "nolentes", + "nolit", + "nolle", + "nollem", + "nollent", + "nolo", + "nolunt", + "nomen", + "nominamus", + "nominata", + "nominatur", + "nomine", + "nominis", + "nomino", + "nominum", + "non", + "nondum", + "nonne", + "nonnullius", + "nonnumquam", + "norunt", + "nos", + "noscendi", + "noscendique", + "noscendum", + "nosse", + "nossemus", + "nosti", + "nostra", + "nostrae", + "nostram", + "nostri", + "nostrique", + "nostros", + "nostrum", + "nota", + "notatum", + "notiones", + "notitia", + "notus", + "nova", + "noverit", + "noverunt", + "novi", + "novit", + "novum", + "nuda", + "nugatoriis", + "nulla", + "nullam", + "nullo", + "nullum", + "num", + "numeramus", + "numerans", + "numerorum", + "numeros", + "numquam", + "numquid", + "nunc", + "nuntiantibus", + "nuntiata", + "nuntiavimus", + "nuntiavit", + "nuntii", + "nuntios", + "nusquam", + "nutantibus", + "nutu", + "o", + "ob", + "oblectamenta", + "oblectandi", + "obliti", + "oblitos", + "oblitum", + "oblitumque", + "oblitus", + "oblivio", + "oblivionem", + "oblivionis", + "obliviscamur", + "obliviscar", + "oblivisceremur", + "obliviscimur", + "oboritur", + "obruitur", + "obsecro", + "obsonii", + "obtentu", + "obumbret", + "occideris", + "occulta", + "occulto", + "occultum", + "occupantur", + "occurrant", + "occurrat", + "occurrerit", + "occurrit", + "occurro", + "occursantur", + "oceani", + "oceanum", + "oculi", + "oculis", + "oculo", + "oculorum", + "oculos", + "oculum", + "oculus", + "oderunt", + "odium", + "odor", + "odoratus", + "odore", + "odorem", + "odores", + "odorum", + "offendamus", + "offensionem", + "offeratur", + "offeretur", + "officia", + "officiis", + "officium", + "oleat", + "olefac", + "olent", + "olet", + "oleum", + "olfaciens", + "olfactum", + "olorem", + "oluerunt", + "omne", + "omnem", + "omnes", + "omnesque", + "omni", + "omnia", + "omnibus", + "omnimodarum", + "omnino", + "omnipotens", + "omnipotenti", + "omnis", + "omnium", + "oneri", + "operata", + "operatores", + "opertis", + "operum", + "opibus", + "opificiis", + "oportebat", + "oportere", + "oportet", + "optare", + "optimus", + "opus", + "orantibus", + "orare", + "oraremus", + "orationes", + "oraturis", + "ordinatorem", + "ore", + "oris", + "os", + "ostentet", + "pacem", + "pacto", + "paene", + "palleant", + "palliata", + "palpa", + "pane", + "paratus", + "parit", + "pars", + "parte", + "partes", + "parum", + "parva", + "parvulus", + "parvus", + "passim", + "passionis", + "passionum", + "pater", + "pati", + "patienter", + "patitur", + "patriam", + "patrocinium", + "paucis", + "paulatim", + "pauper", + "paupertatem", + "pax", + "peccare", + "peccati", + "peccatis", + "peccato", + "peccator", + "peccatores", + "peccatoris", + "peccatorum", + "peccatum", + "peccavit", + "pecco", + "pecora", + "pectora", + "pede", + "pedes", + "pedisequa", + "pelluntur", + "pendenda", + "penetrale", + "penetralia", + "penetro", + "penitus", + "penuriam", + "pepercisti", + "per", + "peragravi", + "percepta", + "percipitur", + "percurro", + "percussisti", + "perdiderat", + "perdit", + "perdita", + "perdite", + "perditum", + "peregrinor", + "peregrinorum", + "perfecturum", + "perficiatur", + "perfundens", + "perfusus", + "pergo", + "periculis", + "periculo", + "periculorum", + "periculosa", + "periculosissimam", + "periculum", + "perierat", + "perit", + "peritia", + "permanens", + "permanentes", + "permissum", + "perpetret", + "perscrutanda", + "persentiscere", + "persequi", + "persuadeant", + "persuaserit", + "pertendam", + "pertinet", + "pertractans", + "perturbant", + "perturbatione", + "perturbationes", + "perturbor", + "pervenire", + "pervenit", + "perversa", + "perversae", + "peste", + "petam", + "petat", + "petimus", + "petitur", + "piae", + "piam", + "picturis", + "pietatis", + "pius", + "placeam", + "placeant", + "placent", + "placentes", + "placere", + "places", + "placet", + "placuit", + "plagas", + "plangendae", + "plena", + "plenariam", + "plenas", + "plenis", + "pleno", + "plenus", + "plerumque", + "pluris", + "plus", + "poenaliter", + "pollutum", + "ponamus", + "pondere", + "ponderibus", + "ponendi", + "ponere", + "populi", + "populus", + "porro", + "portat", + "porto", + "posco", + "poscuntur", + "posita", + "positus", + "posse", + "possem", + "possemus", + "possent", + "posside", + "possideas", + "possidere", + "possideri", + "possim", + "possimus", + "possint", + "possit", + "possum", + "possumus", + "possunt", + "post", + "postea", + "posterior", + "potens", + "potentias", + "poterimus", + "poterunt", + "potes", + "potest", + "potestatem", + "potestates", + "potius", + "potu", + "potuere", + "potuero", + "potui", + "potuimus", + "potuit", + "prae", + "praebens", + "praebeo", + "praecedentia", + "praecedentium", + "praecidere", + "praeciderim", + "praeciditur", + "praeciperet", + "praecurrere", + "praedicans", + "praeditum", + "praegravatis", + "praeibat", + "praeire", + "praeiret", + "praeparat", + "praeposita", + "praesentes", + "praesentia", + "praesentiam", + "praesentior", + "praesidens", + "praesidenti", + "praesides", + "praesignata", + "praestabis", + "praestat", + "praesto", + "praetende", + "praeter", + "praeterierit", + "praeterita", + "praeteritae", + "praeteritam", + "praeteritis", + "praeteritorum", + "praeteritum", + "praetoria", + "prece", + "pretium", + "primatum", + "primitus", + "primo", + "primordiis", + "primus", + "principes", + "pristinae", + "pristinum", + "prius", + "priusquam", + "privatam", + "privatio", + "pro", + "probet", + "procedens", + "proceditur", + "procedunt", + "processura", + "prodeat", + "prodest", + "prodeunt", + "prodigia", + "proferatur", + "proferens", + "profero", + "proferrem", + "proferuntur", + "profunda", + "prohibuisti", + "proiectus", + "promisisti", + "promissio", + "pronuntianti", + "propinquius", + "propitius", + "proponatur", + "propositi", + "propria", + "proprie", + "proprios", + "propter", + "propterea", + "prorsus", + "proruunt", + "prosiliunt", + "prospera", + "prosperis", + "prosperitatibus", + "prosperitatis", + "prout", + "provectu", + "proximi", + "proximum", + "psalmi", + "psalterium", + "pugno", + "pulchra", + "pulchras", + "pulchris", + "pulchritudine", + "pulchritudinis", + "pulchritudinum", + "pulchritudo", + "pulsant", + "pulsatori", + "pulvere", + "pulvis", + "purgarentur", + "pusilla", + "pusillus", + "putant", + "putare", + "putem", + "qua", + "quadam", + "quadrupedibus", + "quae", + "quaecumque", + "quaedam", + "quaeque", + "quaeram", + "quaeratur", + "quaere", + "quaerebam", + "quaerebant", + "quaerebatur", + "quaerens", + "quaerentes", + "quaerere", + "quaererem", + "quaerimus", + "quaeris", + "quaerit", + "quaeritur", + "quaero", + "quaerunt", + "quaesisse", + "quaesitionum", + "quaesiveram", + "quaesivit", + "quaeso", + "quaestio", + "quaestionum", + "quale", + "qualibus", + "qualis", + "qualiscumque", + "quam", + "quamdiu", + "quamquam", + "quamvis", + "quandam", + "quando", + "quandoquidem", + "quanta", + "quanti", + "quantis", + "quanto", + "quantulum", + "quantum", + "quare", + "quarum", + "quas", + "quasi", + "quattuor", + "quem", + "quemadmodum", + "quendam", + "qui", + "quia", + "quibus", + "quibusdam", + "quibusve", + "quicquam", + "quicumque", + "quid", + "quidam", + "quidem", + "quidquid", + "quiescente", + "quietem", + "quippe", + "quis", + "quisquam", + "quisque", + "quisquis", + "quo", + "quocirca", + "quocumque", + "quod", + "quodam", + "quomodo", + "quoniam", + "quoque", + "quoquo", + "quorum", + "quos", + "quot", + "quotiens", + "quousque", + "radiavit", + "radios", + "rapiatur", + "rapinam", + "rapit", + "rapiunt", + "raptae", + "ratio", + "rationes", + "rationi", + "re", + "rebellis", + "rebus", + "reccido", + "recedat", + "recedimus", + "receptaculis", + "recessus", + "recipit", + "recognoscimus", + "recognoscitur", + "recognovi", + "recolenda", + "recolere", + "recolerentur", + "recoleretur", + "recolo", + "reconcilearet", + "reconciliare", + "recondens", + "recondi", + "recondidi", + "reconditae", + "reconditum", + "recondo", + "recordabor", + "recordando", + "recordans", + "recordantes", + "recordarer", + "recordationem", + "recordationis", + "recordemur", + "recordentur", + "recorder", + "recordor", + "recti", + "recuperatae", + "redarguentem", + "reddatur", + "reddi", + "redditur", + "redducet", + "redeamus", + "redemit", + "redigens", + "redigimur", + "redimas", + "redire", + "refectum", + "refero", + "referrem", + "reficiatur", + "reficimus", + "refrenare", + "refugio", + "refulges", + "regem", + "regina", + "regio", + "rei", + "relaxari", + "relaxatione", + "religione", + "religiosius", + "relinquentes", + "relinquunt", + "reliquerim", + "rem", + "reminiscendo", + "reminiscente", + "reminiscenti", + "reminiscentis", + "reminiscerer", + "reminisci", + "reminiscimur", + "reminiscor", + "remisisti", + "remota", + "remotiora", + "remotum", + "removeri", + "renuntiabant", + "repente", + "repercussus", + "reperiamus", + "reperio", + "reperiret", + "reperta", + "repetamus", + "repeterent", + "repleo", + "reponens", + "reponuntur", + "repositi", + "repositum", + "reprehensum", + "reptilia", + "requiem", + "requies", + "requiramus", + "requiratur", + "requiro", + "requirunt", + "requiruntur", + "rerum", + "res", + "resistere", + "resistimus", + "resistis", + "resistit", + "resisto", + "resolvisti", + "resorbeor", + "respice", + "respiciens", + "respirent", + "respondeat", + "respondent", + "responderent", + "responderunt", + "respondes", + "respondi", + "respondit", + "responsa", + "responsio", + "responsionibus", + "respuimus", + "respuitur", + "respuo", + "restat", + "retarder", + "retenta", + "retibus", + "retinemus", + "retinetur", + "retinuit", + "retractanda", + "retractarem", + "retractarentur", + "retractatur", + "retranseo", + "retribuet", + "retrusa", + "rideat", + "ridentem", + "ridiculum", + "rogantem", + "rogeris", + "rogo", + "ruga", + "ruinas", + "ruminando", + "rupisti", + "rursus", + "rutilet", + "sacerdos", + "sacramenta", + "sacramenti", + "sacramentis", + "sacramento", + "sacrificatori", + "sacrificium", + "sacrifico", + "sacrilega", + "saeculi", + "saeculum", + "saepe", + "saepius", + "salubritatis", + "salus", + "salute", + "salutem", + "saluti", + "salutis", + "salvi", + "salvus", + "sana", + "sanabis", + "sanare", + "sanari", + "sanas", + "sanaturi", + "sanctae", + "sancte", + "sancti", + "sanctis", + "sanctuarium", + "sane", + "sanes", + "sanguine", + "sanum", + "sapere", + "sapiat", + "sapida", + "sapientiae", + "sapientiorem", + "sapit", + "sapor", + "sapores", + "sarcina", + "sat", + "satago", + "saties", + "satietas", + "satietate", + "satietatis", + "satis", + "saturantur", + "saturari", + "saucio", + "saucium", + "sciam", + "scientiae", + "scierim", + "scio", + "scire", + "scirem", + "scirent", + "sciret", + "sciri", + "scis", + "scit", + "sciunt", + "scribentur", + "scrutamur", + "se", + "secreta", + "secreti", + "secreto", + "sectantur", + "sectatores", + "sectatur", + "secum", + "secundum", + "secura", + "securior", + "securus", + "sed", + "sedem", + "sedentem", + "sedet", + "sedibus", + "seducam", + "seductionibus", + "semel", + "semper", + "sempiterna", + "senectute", + "sensarum", + "sensibus", + "sensifico", + "sensis", + "sensu", + "sensum", + "sensus", + "sensusque", + "sententia", + "sententiam", + "sententiis", + "sentiebat", + "sentiens", + "sentientem", + "sentio", + "sentire", + "sentitur", + "sentiunt", + "seorsum", + "separatum", + "separavit", + "sepelivit", + "sequatur", + "sequentes", + "sequi", + "sequitur", + "serie", + "sermo", + "sero", + "servata", + "servi", + "serviam", + "serviant", + "serviendo", + "servientes", + "servirent", + "servis", + "servitutem", + "serviunt", + "servo", + "sese", + "seu", + "severitate", + "si", + "sibi", + "sibimet", + "sic", + "sicubi", + "sicut", + "sicuti", + "sidera", + "siderum", + "signa", + "significantur", + "significaret", + "significat", + "significationem", + "significatur", + "signum", + "silente", + "silentio", + "silva", + "sim", + "simile", + "similes", + "similia", + "similis", + "similitudine", + "similitudinem", + "similitudines", + "simillimum", + "simplicem", + "simul", + "simulque", + "simus", + "sine", + "singillatim", + "singula", + "sinis", + "sint", + "sinu", + "sinus", + "sit", + "sitio", + "sitis", + "sive", + "sobrios", + "socialiter", + "socias", + "societatis", + "sociorum", + "sola", + "solae", + "solam", + "solebat", + "solem", + "solet", + "soli", + "solis", + "solitis", + "solitudinem", + "solo", + "solum", + "solus", + "somnis", + "somno", + "sonant", + "sonare", + "sonaret", + "sonat", + "sonet", + "soni", + "sonis", + "sono", + "sonorum", + "sonos", + "sonuerit", + "sonuerunt", + "sonum", + "sonus", + "sopitur", + "soporem", + "soporis", + "spargant", + "spargens", + "spargit", + "sparsa", + "sparsis", + "spatiatus", + "spatiis", + "spe", + "speciem", + "species", + "spectaculis", + "spectandum", + "specto", + "speculum", + "spem", + "sperans", + "spernat", + "spes", + "spiritum", + "spiritus", + "splendeat", + "splendorem", + "splenduisti", + "stat", + "statim", + "statuit", + "stelio", + "stellas", + "stet", + "stilo", + "stipendium", + "strepitu", + "stupor", + "sua", + "suae", + "suam", + "suarum", + "suaveolentiam", + "suavi", + "suavia", + "suavis", + "suavitas", + "suavitatem", + "suavium", + "sub", + "subdita", + "subditi", + "subditus", + "subduntur", + "subeundam", + "subinde", + "subintrat", + "subire", + "subiugaverant", + "sublevas", + "subrepsit", + "subsidium", + "subtrahatur", + "succurrat", + "sudoris", + "sufficiat", + "sufficiens", + "suffragatio", + "suffragia", + "suggeruntur", + "suggestionibus", + "suggestionum", + "sui", + "suis", + "sum", + "sumendi", + "sumpturus", + "sumus", + "sunt", + "suo", + "super", + "superbam", + "superbi", + "superbia", + "superbiae", + "superbiam", + "superbis", + "superindui", + "supervacuanea", + "suppetat", + "supplicii", + "supra", + "surdis", + "surditatem", + "surgam", + "surgere", + "suspensus", + "suspirat", + "suspirent", + "sustinere", + "tacet", + "tacite", + "tactus", + "tale", + "tali", + "talia", + "talibus", + "talium", + "tam", + "tamdiu", + "tamen", + "tamenetsi", + "tametsi", + "tamquam", + "tandem", + "tangendo", + "tangunt", + "tanta", + "tantarum", + "tanto", + "tantulum", + "tantum", + "te", + "tecum", + "tegitur", + "temperata", + "templi", + "tempore", + "temporis", + "temporum", + "temptamur", + "temptandi", + "temptari", + "temptat", + "temptatio", + "temptatione", + "temptationem", + "temptationes", + "temptationibus", + "temptationis", + "temptationum", + "temptatum", + "temptatur", + "temptaverunt", + "temptetur", + "tempus", + "tenacius", + "teneam", + "teneant", + "teneat", + "tenebant", + "tenebatur", + "tenebrae", + "tenebris", + "tenebrosi", + "tenendi", + "tenent", + "teneo", + "teneor", + "teneretur", + "teneri", + "tenet", + "tenetur", + "tenuissimas", + "tenuiter", + "teque", + "terra", + "terrae", + "terram", + "tertio", + "tertium", + "testibus", + "testis", + "tetigi", + "tetigisti", + "texisti", + "theatra", + "thesauri", + "thesauro", + "thesaurus", + "tibi", + "timeamur", + "timent", + "timeo", + "timere", + "timeri", + "timore", + "timuisse", + "tobis", + "toleramus", + "tolerantiam", + "tolerare", + "tolerari", + "tolerat", + "toleret", + "tot", + "tota", + "totiens", + "totis", + "totius", + "toto", + "totum", + "tradidisti", + "trahunt", + "traicit", + "traiecta", + "transactam", + "transcendi", + "transeam", + "transeatur", + "transeo", + "transfigurans", + "transgredientibus", + "transibo", + "transierunt", + "transire", + "transisse", + "transit", + "transitu", + "transitus", + "tremore", + "tremorem", + "tria", + "tribuere", + "tribuis", + "triplici", + "tristis", + "tristitia", + "tristitiam", + "trium", + "tu", + "tua", + "tuae", + "tuam", + "tuas", + "tuetur", + "tui", + "tuis", + "tum", + "tunc", + "tundentes", + "tuo", + "tuorum", + "tuos", + "turbantur", + "turibulis", + "turpibus", + "turpis", + "turpitudines", + "tutiusque", + "tutor", + "tutum", + "tuum", + "tuus", + "typho", + "ubi", + "ubique", + "ubiubi", + "ulla", + "ullis", + "ullo", + "ulterius", + "umbrarum", + "umquam", + "una", + "unde", + "undique", + "ungentorum", + "unico", + "unicus", + "universus", + "unum", + "unus", + "urunt", + "uspiam", + "usque", + "usui", + "usum", + "usurpant", + "ut", + "utcumque", + "utendi", + "uterque", + "utilitate", + "utilitatem", + "utimur", + "utinam", + "utique", + "utrique", + "utriusque", + "utroque", + "utrubique", + "utrum", + "utrumque", + "vae", + "valde", + "valeam", + "valeant", + "valent", + "valentes", + "valeo", + "valerem", + "valerent", + "valeret", + "vales", + "valet", + "valetudinis", + "valida", + "vana", + "vanae", + "vanescit", + "vanias", + "vanitatem", + "vanitatis", + "vanus", + "varia", + "variando", + "varias", + "variis", + "vasis", + "vegetas", + "vehementer", + "vel", + "velim", + "velint", + "velit", + "velle", + "vellem", + "vellemus", + "vellent", + "velut", + "veluti", + "venatio", + "veni", + "venio", + "venit", + "veniunt", + "venter", + "ventos", + "ventre", + "ventrem", + "ventris", + "vera", + "verae", + "verax", + "verba", + "verbis", + "verbo", + "verborum", + "verbum", + "vere", + "veris", + "veritas", + "veritate", + "veritatem", + "vero", + "verum", + "verus", + "vestibus", + "vestigio", + "vestra", + "vetare", + "vi", + "via", + "viae", + "viam", + "vicinior", + "vicit", + "victima", + "victor", + "victoria", + "victoriam", + "vide", + "videam", + "videant", + "videat", + "videbam", + "videbat", + "videmus", + "videndi", + "videndo", + "videns", + "vident", + "video", + "videor", + "videre", + "viderem", + "videri", + "viderunt", + "vides", + "videt", + "videtur", + "vidi", + "vigilans", + "vigilantem", + "vigilantes", + "vigilanti", + "vim", + "vindicandi", + "vindicavit", + "violari", + "violis", + "viribus", + "virtus", + "vis", + "visa", + "visco", + "visione", + "visionum", + "vita", + "vitae", + "vitaliter", + "vitam", + "vituperante", + "vituperare", + "vituperari", + "vituperatio", + "vituperetur", + "viva", + "vivam", + "vivant", + "vivarum", + "vivat", + "vivendum", + "vivente", + "viventis", + "vivere", + "vivifico", + "vivit", + "vivunt", + "vix", + "vobiscum", + "vocant", + "vocantes", + "vocantur", + "vocasti", + "vocatur", + "voce", + "vocem", + "vocibus", + "vocis", + "volatibus", + "volebant", + "volens", + "volito", + "volo", + "voluerit", + "voluero", + "volui", + "voluisti", + "voluit", + "volumus", + "volunt", + "voluntas", + "voluntate", + "voluptaria", + "voluptas", + "voluptate", + "voluptatem", + "voluptates", + "voluptatibus", + "voluptatis", + "voluptatum", + "volvere", + "vos", + "vox", + "vulnera", + "vult", + "vultu", +} diff --git a/util/fake/location.go b/util/fake/location.go new file mode 100644 index 00000000..8724fa06 --- /dev/null +++ b/util/fake/location.go @@ -0,0 +1,143 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "fmt" + "strings" +) + +var names = []string{"Home", "Work", "Business", "Personal"} + +var streets = []string{"Avenue", "Boulevard", "Center", "Circle", "Court", "Drive", "Extension", "Glen", "Grove", "Heights", "Highway", "Junction", "Key", "Lane", "Loop", "Manor", "Mill", "Park", "Parkway", "Pass", "Path", "Pike", "Place", "Plaza", "Point", "Ridge", "River", "Road", "Square", "Street", "Terrace", "Trail", "Turnpike", "View", "Way"} + +var states = []string{"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"} + +var counties = []string{"Bath and North East Somerset", "Aberdeenshire", "Anglesey", "Angus", "Bedford", "Blackburn with Darwen", "Blackpool", "Bournemouth", "Bracknell Forest", "Brighton & Hove", "Bristol", "Buckinghamshire", "Cambridgeshire", "Carmarthenshire", "Central Bedfordshire", "Ceredigion", "Cheshire East", "Cheshire West and Chester", "Clackmannanshire", "Conwy", "Cornwall", "County Antrim", "County Armagh", "County Down", "County Durham", "County Fermanagh", "County Londonderry", "County Tyrone", "Cumbria", "Darlington", "Denbighshire", "Derby", "Derbyshire", "Devon", "Dorset", "Dumfries and Galloway", "Dundee", "East Lothian", "East Riding of Yorkshire", "East Sussex", "Edinburgh", "Essex", "Falkirk", "Fife", "Flintshire", "Gloucestershire", "Greater London", "Greater Manchester", "Gwent", "Gwynedd", "Halton", "Hampshire", "Hartlepool", "Herefordshire", "Hertfordshire", "Highlands", "Hull", "Isle of Wight", "Isles of Scilly", "Kent", "Lancashire", "Leicester", "Leicestershire", "Lincolnshire", "Lothian", "Luton", "Medway", "Merseyside", "Mid Glamorgan", "Middlesbrough", "Milton Keynes", "Monmouthshire", "Moray", "Norfolk", "North East Lincolnshire", "North Lincolnshire", "North Somerset", "North Yorkshire", "Northamptonshire", "Northumberland", "Nottingham", "Nottinghamshire", "Oxfordshire", "Pembrokeshire", "Perth and Kinross", "Peterborough", "Plymouth", "Poole", "Portsmouth", "Powys", "Reading", "Redcar and Cleveland", "Rutland", "Scottish Borders", "Shropshire", "Slough", "Somerset", "South Glamorgan", "South Gloucestershire", "South Yorkshire", "Southampton", "Southend-on-Sea", "Staffordshire", "Stirlingshire", "Stockton-on-Tees", "Stoke-on-Trent", "Strathclyde", "Suffolk", "Surrey", "Swindon", "Telford and Wrekin", "Thurrock", "Torbay", "Tyne and Wear", "Warrington", "Warwickshire", "West Berkshire", "West Glamorgan", "West Lothian", "West Midlands", "West Sussex", "West Yorkshire", "Western Isles", "Wiltshire", "Windsor and Maidenhead", "Wokingham", "Worcestershire", "Wrexham", "York"} + +var countries = []string{"Afghanistan", "Åland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua & Barbuda", "Argentina", "Armenia", "Aruba", "Ascension Island", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia & Herzegovina", "Botswana", "Brazil", "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Canary Islands", "Cape Verde", "Caribbean Netherlands", "Cayman Islands", "Central African Republic", "Ceuta & Melilla", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo - Brazzaville", "Congo - Kinshasa", "Cook Islands", "Costa Rica", "Côte d'Ivoire", "Croatia", "Cuba", "Curaçao", "Cyprus", "Czech Republic", "Denmark", "Diego Garcia", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Honduras", "Hong Kong SAR China", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kosovo", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau SAR China", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar (Burma)", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Palestinian Territories", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar", "Réunion", "Romania", "Russia", "Rwanda", "Samoa", "San Marino", "São Tomé and Príncipe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Sint Maarten", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia & South Sandwich Islands", "South Korea", "South Sudan", "Spain", "Sri Lanka", "St. Barthélemy", "St. Helena", "St. Kitts & Nevis", "St. Lucia", "St. Martin", "St. Pierre & Miquelon", "St. Vincent & Grenadines", "Sudan", "Suriname", "Svalbard & Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad & Tobago", "Tristan da Cunha", "Tunisia", "Turkey", "Turkmenistan", "Turks & Caicos Islands", "Tuvalu", "U.S. Outlying Islands", "U.S. Virgin Islands", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "Uruguay", "Uzbekistan", "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis & Futuna", "Western Sahara", "Yemen", "Zambia", "Zimbabwe"} + +func LocationName() string { + return New().LocationName() +} + +func (f *Faker) LocationName() string { + return names[f.r.Intn(len(names))] +} + +func LocationAddress() string { + return New().LocationAddress() +} + +func (f *Faker) LocationAddress() string { + return fmt.Sprintf("%d %s", + f.IntegerBetween(1, 250), + f.LocationStreet(), + ) +} + +func LocationStreet() string { + return New().LocationStreet() +} + +func (f *Faker) LocationStreet() string { + return fmt.Sprintf("%s %s", + strings.Title(f.Word()), + streets[f.r.Intn(len(streets))], + ) +} + +func LocationCity() string { + return New().LocationCity() +} + +func (f *Faker) LocationCity() string { + return strings.Title(f.Word()) +} + +func LocationState() string { + return New().LocationState() +} + +func (f *Faker) LocationState() string { + return states[f.r.Intn(len(states))] +} + +func LocationCounty() string { + return New().LocationCounty() +} + +func (f *Faker) LocationCounty() string { + return counties[f.r.Intn(len(counties))] +} + +func LocationZipcode() string { + return New().LocationZipcode() +} + +func (f *Faker) LocationZipcode() string { + return fmt.Sprintf("%s%s %d", + f.CharUpper(), + f.CharUpper(), + f.IntegerBetween(10000, 99999), + ) +} + +func LocationPostcode() string { + return New().LocationPostcode() +} + +func (f *Faker) LocationPostcode() string { + return fmt.Sprintf("%s%s%d %d%s%s", + f.CharUpper(), + f.CharUpper(), + f.IntegerBetween(0, 20), + f.IntegerBetween(0, 99), + f.CharUpper(), + f.CharUpper(), + ) +} + +func LocationCountry() string { + return New().LocationCountry() +} + +func (f *Faker) LocationCountry() string { + return countries[f.r.Intn(len(countries))] +} + +func LocationAltitude() float64 { + return New().LocationAltitude() +} + +func (f *Faker) LocationAltitude() float64 { + return f.r.Float64() * 8848 +} + +func LocationLatitude() float64 { + return New().LocationLatitude() +} + +func (f *Faker) LocationLatitude() float64 { + return f.r.Float64()*180 - 90 +} + +func LocationLongitude() float64 { + return New().LocationLongitude() +} + +func (f *Faker) LocationLongitude() float64 { + return f.r.Float64()*360 - 180 +} diff --git a/util/fake/lorem.go b/util/fake/lorem.go new file mode 100644 index 00000000..cabe1342 --- /dev/null +++ b/util/fake/lorem.go @@ -0,0 +1,130 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "strings" +) + +func (f *Faker) rand() int { + r := f.r.Float32() * 100 + switch { + case r < 1.939: + return 1 + case r < 19.01: + return 2 + case r < 38.00: + return 3 + case r < 50.41: + return 4 + case r < 61.00: + return 5 + case r < 70.09: + return 6 + case r < 78.97: + return 7 + case r < 85.65: + return 8 + case r < 90.87: + return 9 + case r < 95.05: + return 10 + case r < 97.27: + return 11 + case r < 98.67: + return 12 + case r < 100.0: + return 13 + } + return 2 +} + +func (f *Faker) word(size int) string { + if size < 1 { + size = 1 + } + if size > 13 { + size = 13 + } + for n := f.r.Int() % len(latin); ; n++ { + if n >= len(latin)-1 { + n = 0 + } + if len(latin[n]) == size { + return latin[n] + } + } + return "" +} + +func Lorem() string { + return New().Lorem() +} + +func (f *Faker) Lorem() string { + return f.word(f.IntegerBetween(4, 13)) +} + +func Sentence() string { + return New().Sentence() +} + +func (f *Faker) Sentence() string { + return f.SentenceBetween(5, 22) +} + +func SentenceBetween(beg, end int) string { + return New().SentenceBetween(beg, end) +} + +func (f *Faker) SentenceBetween(beg, end int) string { + s := f.IntegerBetween(beg, end) + w := []string{} + for i, c := 0, 0; i < s; i++ { + if i == 0 { + w = append(w, strings.Title(f.word(f.rand()))) + } else { + w = append(w, f.word(f.rand())) + } + if c >= 2 || i <= 2 || i >= s-1 { + continue + } + if f.r.Int()%s == 0 { + w[i-1] += "," + c++ + } + } + return strings.Join(w, " ") + "." +} + +func Paragraph() string { + return New().Paragraph() +} + +func (f *Faker) Paragraph() string { + return f.ParagraphBetween(3, 7) +} + +func ParagraphBetween(beg, end int) string { + return New().ParagraphBetween(beg, end) +} + +func (f *Faker) ParagraphBetween(beg, end int) string { + w := []string{} + for i := 0; i < f.IntegerBetween(beg, end); i++ { + w = append(w, f.Sentence()) + } + return strings.Join(w, " ") +} diff --git a/util/fake/number.go b/util/fake/number.go new file mode 100644 index 00000000..6be75faf --- /dev/null +++ b/util/fake/number.go @@ -0,0 +1,47 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +func Integer() int { + return New().Integer() +} + +func (f *Faker) Integer() int { + return f.r.Int() +} + +func IntegerBetween(beg, end int) int { + return New().IntegerBetween(beg, end) +} + +func (f *Faker) IntegerBetween(beg, end int) int { + return f.r.Intn(end-beg) + beg +} + +func Decimal() float64 { + return New().Decimal() +} + +func (f *Faker) Decimal() float64 { + return f.r.NormFloat64() +} + +func DecimalBetween(beg, end float64) float64 { + return New().DecimalBetween(beg, end) +} + +func (f *Faker) DecimalBetween(beg, end float64) float64 { + return f.r.Float64()*(end-beg) + beg +} diff --git a/util/fake/person.go b/util/fake/person.go new file mode 100644 index 00000000..9c09b2ec --- /dev/null +++ b/util/fake/person.go @@ -0,0 +1,112 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "fmt" + "strings" +) + +var gender = []string{"Male", "Female"} + +var male = []string{"James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Charles", "Thomas", "Christopher", "Daniel", "Matthew", "George", "Donald", "Anthony", "Paul", "Mark", "Edward", "Steven", "Kenneth", "Andrew", "Brian", "Joshua", "Kevin", "Ronald", "Timothy", "Jason", "Jeffrey", "Frank", "Gary", "Ryan", "Nicholas", "Eric", "Stephen", "Jacob", "Larry", "Jonathan", "Scott", "Raymond", "Justin", "Brandon", "Gregory", "Samuel", "Benjamin", "Patrick", "Jack", "Henry", "Walter", "Dennis", "Jerry", "Alexander", "Peter", "Tyler", "Douglas", "Harold", "Aaron", "Jose", "Adam", "Arthur", "Zachary", "Carl", "Nathan", "Albert", "Kyle", "Lawrence", "Joe", "Willie", "Gerald", "Roger", "Keith", "Jeremy", "Terry", "Harry", "Ralph", "Sean", "Jesse", "Roy", "Louis", "Billy", "Austin", "Bruce", "Eugene", "Christian", "Bryan", "Wayne", "Russell", "Howard", "Fred", "Ethan", "Jordan", "Philip", "Alan", "Juan", "Randy", "Vincent", "Bobby", "Dylan", "Johnny", "Phillip", "Victor", "Clarence", "Ernest", "Martin", "Craig", "Stanley", "Shawn", "Travis", "Bradley", "Leonard", "Earl", "Gabriel", "Jimmy", "Francis", "Todd", "Noah", "Danny", "Dale", "Cody", "Carlos", "Allen", "Frederick", "Logan", "Curtis", "Alex", "Joel", "Luis", "Norman", "Marvin", "Glenn", "Tony", "Nathaniel", "Rodney", "Melvin", "Alfred", "Steve", "Cameron", "Chad", "Edwin", "Caleb", "Evan", "Antonio", "Lee", "Herbert", "Jeffery", "Isaac", "Derek", "Ricky", "Marcus", "Theodore", "Elijah", "Luke", "Jesus", "Eddie", "Troy", "Mike", "Dustin", "Ray", "Adrian", "Bernard", "Leroy", "Angel", "Randall", "Wesley", "Ian", "Jared", "Mason", "Hunter", "Calvin", "Oscar", "Clifford", "Jay", "Shane", "Ronnie", "Barry", "Lucas", "Corey", "Manuel", "Leo", "Tommy", "Warren", "Jackson", "Isaiah", "Connor", "Don", "Dean", "Jon", "Julian", "Miguel", "Bill", "Lloyd", "Charlie", "Mitchell", "Leon", "Jerome", "Darrell", "Jeremiah", "Alvin", "Brett", "Seth", "Floyd", "Jim", "Blake", "Micheal", "Gordon", "Trevor", "Lewis", "Erik", "Edgar", "Vernon", "Devin", "Gavin", "Jayden", "Chris", "Clyde", "Tom", "Derrick", "Mario", "Brent", "Marc", "Herman", "Chase", "Dominic", "Ricardo", "Franklin", "Maurice", "Max", "Aiden", "Owen", "Lester", "Gilbert", "Elmer", "Gene", "Francisco", "Glen", "Cory", "Garrett", "Clayton", "Sam", "Jorge", "Chester", "Alejandro", "Jeff", "Harvey", "Milton", "Cole", "Ivan", "Andre", "Duane", "Landon"} + +var female = []string{"Mary", "Emma", "Elizabeth", "Minnie", "Margaret", "Ida", "Alice", "Bertha", "Sarah", "Annie", "Clara", "Ella", "Florence", "Cora", "Martha", "Laura", "Nellie", "Grace", "Carrie", "Maude", "Mabel", "Bessie", "Jennie", "Gertrude", "Julia", "Hattie", "Edith", "Mattie", "Rose", "Catherine", "Lillian", "Ada", "Lillie", "Helen", "Jessie", "Louise", "Ethel", "Lula", "Myrtle", "Eva", "Frances", "Lena", "Lucy", "Edna", "Maggie", "Pearl", "Daisy", "Fannie", "Josephine", "Dora", "Rosa", "Katherine", "Agnes", "Marie", "Nora", "May", "Mamie", "Blanche", "Stella", "Ellen", "Nancy", "Effie", "Sallie", "Nettie", "Della", "Lizzie", "Flora", "Susie", "Maud", "Mae", "Etta", "Harriet", "Sadie", "Caroline", "Katie", "Lydia", "Elsie", "Kate", "Susan", "Mollie", "Alma", "Addie", "Georgia", "Eliza", "Lulu", "Nannie", "Lottie", "Amanda", "Belle", "Charlotte", "Rebecca", "Ruth", "Viola", "Olive", "Amelia", "Hannah", "Jane", "Virginia", "Emily", "Matilda", "Irene", "Kathryn", "Esther", "Willie", "Henrietta", "Ollie", "Amy", "Rachel", "Sara", "Estella", "Theresa", "Augusta", "Ora", "Pauline", "Josie", "Lola", "Sophia", "Leona", "Anne", "Mildred", "Ann", "Beulah", "Callie", "Lou", "Delia", "Eleanor", "Barbara", "Iva", "Louisa", "Maria", "Mayme", "Evelyn", "Estelle", "Nina", "Betty", "Marion", "Bettie", "Dorothy", "Luella", "Inez", "Lela", "Rosie", "Allie", "Millie", "Janie", "Cornelia", "Victoria", "Ruby", "Winifred", "Alta", "Celia", "Christine", "Beatrice", "Birdie", "Harriett", "Mable", "Myra", "Sophie", "Tillie", "Isabel", "Sylvia", "Carolyn", "Isabelle", "Leila", "Sally", "Ina", "Essie", "Bertie", "Nell", "Alberta", "Katharine", "Lora", "Rena", "Mina", "Rhoda", "Mathilda", "Abbie", "Eula", "Dollie", "Hettie", "Eunice", "Fanny", "Ola", "Lenora", "Adelaide", "Christina", "Lelia", "Nelle", "Sue", "Johanna", "Lilly", "Lucinda", "Minerva", "Lettie", "Roxie", "Cynthia", "Helena", "Hilda", "Hulda", "Bernice", "Genevieve", "Jean", "Cordelia", "Marian", "Francis", "Jeanette", "Adeline", "Gussie", "Leah", "Lois", "Lura", "Mittie", "Hallie", "Isabella", "Olga", "Phoebe", "Teresa", "Hester", "Lida", "Lina", "Winnie", "Claudia", "Marguerite", "Vera", "Cecelia", "Bess", "Emilie", "Rosetta", "Verna", "Myrtie", "Cecilia", "Elva", "Olivia", "Ophelia", "Georgie", "Elnora", "Violet", "Adele", "Lily", "Linnie", "Loretta", "Madge", "Polly", "Virgie", "Eugenia", "Lucile", "Lucille", "Mabelle", "Rosalie"} + +var surnames = []string{"Smith", "Johnson", "Williams", "Jones", "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Anderson", "Thomas", "Jackson", "White", "Harris", "Martin", "Thompson", "Garcia", "Martinez", "Robinson", "Clark", "Rodriguez", "Lewis", "Lee", "Walker", "Hall", "Allen", "Young", "Hernandez", "King", "Wright", "Lopez", "Hill", "Scott", "Green", "Adams", "Baker", "Gonzalez", "Nelson", "Carter", "Mitchell", "Perez", "Roberts", "Turner", "Phillips", "Campbell", "Parker", "Evans", "Edwards", "Collins", "Stewart", "Sanchez", "Morris", "Rogers", "Reed", "Cook", "Morgan", "Bell", "Murphy", "Bailey", "Rivera", "Cooper", "Richardson", "Cox", "Howard", "Ward", "Torres", "Peterson", "Gray", "Ramirez", "James", "Watson", "Brooks", "Kelly", "Sanders", "Price", "Bennett", "Wood", "Barnes", "Ross", "Henderson", "Coleman", "Jenkins", "Perry", "Powell", "Long", "Patterson", "Hughes", "Flores", "Washington", "Butler", "Simmons", "Foster", "Gonzales", "Bryant", "Alexander", "Russell", "Griffin", "Diaz", "Hayes", "Myers", "Ford", "Hamilton", "Graham", "Sullivan", "Wallace", "Woods", "Cole", "West", "Jordan", "Owens", "Reynolds", "Fisher", "Ellis", "Harrison", "Gibson", "McDonald", "Cruz", "Marshall", "Ortiz", "Gomez", "Murray", "Freeman", "Wells", "Webb", "Simpson", "Stevens", "Tucker", "Porter", "Hunter", "Hicks", "Crawford", "Henry", "Boyd", "Mason", "Morales", "Kennedy", "Warren", "Dixon", "Ramos", "Reyes", "Burns", "Gordon", "Shaw", "Holmes", "Rice", "Robertson", "Hunt", "Black", "Daniels", "Palmer", "Mills", "Nichols", "Grant", "Knight", "Ferguson", "Rose", "Stone", "Hawkins", "Dunn", "Perkins", "Hudson", "Spencer", "Gardner", "Stephens", "Payne", "Pierce", "Berry", "Matthews", "Arnold", "Wagner", "Willis", "Ray", "Watkins", "Olson", "Carroll", "Duncan", "Snyder", "Hart", "Cunningham", "Bradley", "Lane", "Andrews", "Ruiz", "Harper", "Fox", "Riley", "Armstrong", "Carpenter", "Weaver", "Greene", "Lawrence", "Elliott", "Chavez", "Sims", "Austin", "Peters", "Kelley", "Franklin", "Lawson", "Fields", "Gutierrez", "Ryan", "Schmidt", "Carr", "Vasquez", "Castillo", "Wheeler", "Chapman", "Oliver", "Montgomery", "Richards", "Williamson", "Johnston", "Banks", "Meyer", "Bishop", "McCoy", "Howell", "Alvarez", "Morrison", "Hansen", "Fernandez", "Garza", "Harvey", "Little", "Burton", "Stanley", "Nguyen", "George", "Jacobs", "Reid", "Kim", "Fuller", "Lynch", "Dean", "Gilbert", "Garrett", "Romero", "Welch", "Larson", "Frazier", "Burke", "Hanson", "Day", "Mendoza", "Moreno", "Bowman", "Medina", "Fowler", "Brewer", "Hoffman", "Carlson", "Silva", "Pearson", "Holland", "Douglas", "Fleming", "Jensen", "Vargas", "Byrd", "Davidson", "Hopkins", "May", "Terry", "Herrera", "Wade", "Soto", "Walters", "Curtis", "Neal", "Caldwell", "Lowe", "Jennings", "Barnett", "Graves", "Jimenez", "Horton", "Shelton", "Barrett", "Obrien", "Castro", "Sutton", "Gregory", "McKinney", "Lucas", "Miles", "Craig", "Rodriquez", "Chambers", "Holt", "Lambert", "Fletcher", "Watts", "Bates", "Hale", "Rhodes", "Pena", "Beck", "Newman", "Haynes", "McDaniel", "Mendez", "Bush", "Vaughn", "Parks", "Dawson", "Santiago", "Norris", "Hardy", "Love", "Steele", "Curry", "Powers", "Schultz", "Barker", "Guzman", "Page", "Munoz", "Ball", "Keller", "Chandler", "Weber", "Leonard", "Walsh", "Lyons", "Ramsey", "Wolfe", "Schneider", "Mullins", "Benson", "Sharp", "Bowen", "Daniel", "Barber", "Cummings", "Hines", "Baldwin", "Griffith", "Valdez", "Hubbard", "Salazar", "Reeves", "Warner", "Stevenson", "Burgess", "Santos", "Tate", "Cross", "Garner", "Mann", "Mack", "Moss", "Thornton", "Dennis", "McGee", "Farmer", "Delgado", "Aguilar", "Vega", "Glover", "Manning", "Cohen", "Harmon", "Rodgers", "Robbins", "Newton", "Todd", "Blair", "Higgins", "Ingram", "Reese", "Cannon", "Strickland", "Townsend", "Potter", "Goodwin", "Walton", "Rowe", "Hampton", "Ortega", "Patton", "Swanson", "Joseph", "Francis", "Goodman", "Maldonado", "Yates", "Becker", "Erickson", "Hodges", "Rios", "Conner", "Adkins", "Webster", "Norman", "Malone", "Hammond", "Flowers", "Cobb", "Moody", "Quinn", "Blake", "Maxwell", "Pope", "Floyd", "Osborne", "Paul", "McCarthy", "Guerrero", "Lindsey", "Estrada", "Sandoval", "Gibbs", "Tyler", "Gross", "Fitzgerald", "Stokes", "Doyle", "Sherman", "Saunders", "Wise", "Colon", "Gill", "Alvarado", "Greer", "Padilla", "Simon", "Waters", "Nunez", "Ballard", "Schwartz", "McBride", "Houston", "Christensen", "Klein", "Pratt", "Briggs", "Parsons", "McLaughlin", "Zimmerman", "French", "Buchanan", "Moran", "Copeland", "Roy", "Pittman", "Brady", "McCormick", "Holloway", "Brock", "Poole", "Frank", "Logan", "Owen", "Bass", "Marsh", "Drake", "Wong", "Jefferson", "Park", "Morton", "Abbott", "Sparks", "Patrick", "Norton", "Huff", "Clayton", "Massey", "Lloyd", "Figueroa", "Carson", "Bowers", "Roberson", "Barton", "Tran", "Lamb", "Harrington", "Casey", "Boone", "Cortez", "Clarke", "Mathis", "Singleton", "Wilkins", "Cain", "Bryan", "Underwood", "Hogan", "McKenzie", "Collier", "Luna", "Phelps", "McGuire", "Allison", "Bridges", "Wilkerson", "Nash", "Summers", "Atkins"} + +var jobtitles = []string{"Airline Pilot", "Academic Team", "Accountant", "Account Executive", "Actor", "Actuary", "Acquisition Analyst", "Administrative Asst.", "Administrative Analyst", "Administrator", "Advertising Director", "Aerospace Engineer", "Agent", "Agricultural Inspector", "Agricultural Scientist", "Air Traffic Controller", "Animal Trainer", "Anthropologist", "Appraiser", "Architect", "Art Director", "Artist", "Astronomer", "Athletic Coach", "Auditor", "Author", "Baker", "Banker", "Bankruptcy Attorney", "Benefits Manager", "Biologist", "Bio-feedback Specialist", "Biomedical Engineer", "Biotechnical Researcher", "Broadcaster", "Broker", "Building Manager", "Building Contractor", "Building Inspector", "Business Analyst", "Business Planner", "Business Manager", "Buyer", "Call Center Manager", "Career Counselor", "Cash Manager", "Ceramic Engineer", "Chief Executive Officer", "Chief Operation Officer", "Chef", "Chemical Engineer", "Chemist", "Child Care Manager", "Chief Medical Officer", "Chiropractor", "Cinematographer", "City Housing Manager", "City Manager", "Civil Engineer", "Claims Manager", "Clinical Research Assistant", "Collections Manager.", "Compliance Manager", "Comptroller", "Computer Manager", "Commercial Artist", "Communications Affairs Director", "Communications Director", "Communications Engineer", "Compensation Analyst", "Computer Programmer", "Computer Ops. Manager", "Computer Engineer", "Computer Operator", "Computer Graphics Specialist", "Construction Engineer", "Construction Manager", "Consultant", "Consumer Relations Manager", "Contract Administrator", "Copyright Attorney", "Copywriter", "Corporate Planner", "Corrections Officer", "Cosmetologist", "Credit Analyst", "Cruise Director", "Chief Information Officer", "Chief Technology Officer", "Customer Service Manager", "Cryptologist", "Dancer", "Data Security Manager", "Database Manager", "Day Care Instructor", "Dentist", "Designer", "Design Engineer", "Desktop Publisher", "Developer", "Development Officer", "Diamond Merchant", "Dietitian", "Direct Marketer", "Director", "Distribution Manager", "Diversity Manager", "Economist", "EEO Compliance Manager", "Editor", "Education Adminator", "Electrical Engineer", "Electro Optical Engineer", "Electronics Engineer", "Embassy Management", "Employment Agent", "Engineer Technician", "Entrepreneur", "Environmental Analyst", "Environmental Attorney", "Environmental Engineer", "Environmental Specialist", "Escrow Officer", "Estimator", "Executive Assistant", "Executive Director", "Executive Recruiter", "Facilities Manager", "Family Counselor", "Fashion Events Manager", "Fashion Merchandiser", "Fast Food Manager", "Film Producer", "Film Production Assistant", "Financial Analyst", "Financial Planner", "Financier", "Fine Artist", "Wildlife Specialist", "Fitness Consultant", "Flight Attendant", "Flight Engineer", "Floral Designer", "Food & Beverage Director", "Food Service Manager", "Forestry Technician", "Franchise Management", "Franchise Sales", "Fraud Investigator", "Freelance Writer", "Fund Raiser", "General Manager", "Geologist", "General Counsel", "Geriatric Specialist", "Gerontologist", "Glamour Photographer", "Golf Club Manager", "Gourmet Chef", "Graphic Designer", "Grounds Keeper", "Hazardous Waste Manager", "Health Care Manager", "Health Therapist", "Health Service Administrator", "Hearing Officer", "Home Economist", "Horticulturist", "Hospital Administrator", "Hotel Manager", "Human Resources Manager", "Importer", "Industrial Designer", "Industrial Engineer", "Information Director", "Inside Sales", "Insurance Adjuster", "Interior Decorator", "Internal Controls Director", "International Acct.", "International Courier", "International Lawyer", "Interpreter", "Investigator", "Investment Banker", "Investment Manager", "IT Architect", "IT Project Manager", "IT Systems Analyst", "Jeweler", "Joint Venture Manager", "Journalist", "Labor Negotiator", "Labor Organizer", "Labor Relations Manager", "Lab Services Director", "Lab Technician", "Land Developer", "Landscape Architect", "Law Enforcement Officer", "Lawyer", "Lead Software Engineer", "Lead Software Test Engineer", "Leasing Manager", "Legal Secretary", "Library Manager", "Litigation Attorney", "Loan Officer", "Lobbyist", "Logistics Manager", "Maintenance Manager", "Management Consultant", "Managed Care Director", "Managing Partner", "Manufacturing Director", "Manpower Planner", "Marine Biologist", "Market Res. Analyst", "Marketing Director", "Materials Manager", "Mathematician", "Membership Chairman", "Mechanic", "Mechanical Engineer", "Media Buyer", "Medical Investor", "Medical Secretary", "Medical Technician", "Mental Health Counselor", "Merchandiser", "Metallurgical Engineering", "Meteorologist", "Microbiologist", "MIS Manager", "Motion Picture Director", "Multimedia Director", "Musician", "Network Administrator", "Network Specialist", "Network Operator", "New Product Manager", "Novelist", "Nuclear Engineer", "Nuclear Specialist", "Nutritionist", "Nursing Administrator", "Occupational Therapist", "Oceanographer", "Office Manager", "Operations Manager", "Operations Research Director", "Optical Technician", "Optometrist", "Organizational Development Manager", "Outplacement Specialist", "Paralegal", "Park Ranger", "Patent Attorney", "Payroll Specialist", "Personnel Specialist", "Petroleum Engineer", "Pharmacist", "Photographer", "Physical Therapist", "Physician", "Physician Assistant", "Physicist", "Planning Director", "Podiatrist", "Political Analyst", "Political Scientist", "Politician", "Portfolio Manager", "Preschool Management", "Preschool Teacher", "Principal", "Private Banker", "Private Investigator", "Probation Officer", "Process Engineer", "Producer", "Product Manager", "Product Engineer", "Production Engineer", "Production Planner", "Professional Athlete", "Professional Coach", "Professor", "Project Engineer", "Project Manager", "Program Manager", "Property Manager", "Public Administrator", "Public Safety Director", "PR Specialist", "Publisher", "Purchasing Agent", "Publishing Director", "Quality Assurance Specialist", "Quality Control Engineer", "Quality Control Inspector", "Radiology Manager", "Railroad Engineer", "Real Estate Broker", "Recreational Director", "Recruiter", "Redevelopment Specialist", "Regulatory Affairs Manager", "Registered Nurse", "Rehabilitation Counselor", "Relocation Manager", "Reporter", "Research Specialist", "Restaurant Manager", "Retail Store Manager", "Risk Analyst", "Safety Engineer", "Sales Engineer", "Sales Trainer", "Sales Promotion Manager", "Sales Representative", "Sales Manager", "Service Manager", "Sanitation Engineer", "Scientific Programmer", "Scientific Writer", "Securities Analyst", "Security Consultant", "Security Director", "Seminar Presenter", "Ship's Officer", "Singer", "Social Director", "Social Program Planner", "Social Research", "Social Scientist", "Social Worker", "Sociologist", "Software Developer", "Software Engineer", "Software Test Engineer", "Soil Scientist", "Special Events Manager", "Special Education Teacher", "Special Projects Director", "Speech Pathologist", "Speech Writer", "Sports Event Manager", "Statistician", "Store Manager", "Strategic Alliance Director", "Strategic Planning Director", "Stress Reduction Specialist", "Stockbroker", "Surveyor", "Structural Engineer", "Superintendent", "Supply Chain Director", "System Engineer", "Systems Analyst", "Systems Programmer", "System Administrator", "Tax Specialist", "Teacher", "Technical Support Specialist", "Technical Illustrator", "Technical Writer", "Technology Director", "Telecom Analyst", "Telemarketer", "Theatrical Director", "Title Examiner", "Tour Escort", "Tour Guide Director", "Traffic Manager", "Trainer Translator", "Transportation Manager", "Travel Agent", "Treasurer", "TV Programmer", "Underwriter", "Union Representative", "University Administrator", "University Dean", "Urban Planner", "Veterinarian", "Vendor Relations Director", "Viticulturist", "Warehouse Manager"} + +func PersonEmail() string { + return New().PersonEmail() +} + +func (f *Faker) PersonEmail() string { + return fmt.Sprintf("%s.%s@%s", + strings.ToLower(f.PersonFirstname()), + strings.ToLower(f.PersonLastname()), + f.Domain(), + ) +} + +func PersonPhone() string { + return New().PersonPhone() +} + +func (f *Faker) PersonPhone() string { + return fmt.Sprintf("%05d %03d %03d", + f.IntegerBetween(0, 9999), + f.IntegerBetween(0, 999), + f.IntegerBetween(0, 999), + ) +} + +func PersonGender() string { + return New().PersonGender() +} + +func (f *Faker) PersonGender() string { + return gender[f.r.Intn(len(gender))] +} + +func PersonFullname() string { + return New().PersonFullname() +} + +func (f *Faker) PersonFullname() string { + return f.PersonFirstname() + " " + f.PersonLastname() +} + +func PersonFirstname() string { + return New().PersonFirstname() +} + +func (f *Faker) PersonFirstname() string { + switch 0.5 <= f.r.Float64() { + case true: + return male[f.r.Intn(len(male))] + case false: + return female[f.r.Intn(len(female))] + } + return "" +} + +func PersonLastname() string { + return New().PersonLastname() +} + +func (f *Faker) PersonLastname() string { + return surnames[f.r.Intn(len(surnames))] +} + +func PersonUsername() string { + return New().PersonUsername() +} + +func (f *Faker) PersonUsername() string { + return fmt.Sprintf("%s.%s%d", + strings.ToLower(f.PersonFirstname()), + strings.ToLower(f.PersonLastname()), + f.IntegerBetween(1, 999), + ) +} + +func PersonJobtitle() string { + return New().PersonJobtitle() +} + +func (f *Faker) PersonJobtitle() string { + return jobtitles[f.r.Intn(len(jobtitles))] +} diff --git a/util/fake/string.go b/util/fake/string.go new file mode 100644 index 00000000..0d7fffff --- /dev/null +++ b/util/fake/string.go @@ -0,0 +1,87 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "bytes" + "fmt" +) + +func String() string { + return New().String() +} + +func (f *Faker) String() string { + var b bytes.Buffer + for i := 0; i < f.IntegerBetween(1, 100); i++ { + b.WriteString(f.Alphanum()) + } + return b.String() +} + +func StringLength(size int) string { + return New().StringLength(size) +} + +func (f *Faker) StringLength(size int) string { + var b bytes.Buffer + for i := 0; i < size; i++ { + b.WriteString(f.Alphanum()) + } + return b.String() +} + +func StringBetween(beg, end int) string { + return New().StringBetween(beg, end) +} + +func (f *Faker) StringBetween(beg, end int) string { + var b bytes.Buffer + for i := 0; i < f.IntegerBetween(beg, end); i++ { + b.WriteString(f.Alphanum()) + } + return b.String() +} + +func Syllable() string { + return New().Syllable() +} + +func (f *Faker) Syllable() string { + if f.Bool() { + switch f.Bool() { + case true: + return fmt.Sprintf("%s%s", f.CharVowel(), f.CharConsonant()) + case false: + return fmt.Sprintf("%s%s", f.CharConsonant(), f.CharVowel()) + } + } + return fmt.Sprintf("%s%s%s", f.CharConsonant(), f.CharVowel(), f.CharConsonant()) +} + +func Word() string { + return New().Word() +} + +func (f *Faker) Word() string { + var str [4]string + for i := 0; i < 4; i++ { + str[i] = "" + } + for i := 0; i < f.IntegerBetween(2, 4); i++ { + str[i] = f.Syllable() + } + return fmt.Sprintf("%s%s%s%s", str[0], str[1], str[2], str[3]) +} diff --git a/util/fake/time.go b/util/fake/time.go new file mode 100644 index 00000000..fbd25a5f --- /dev/null +++ b/util/fake/time.go @@ -0,0 +1,39 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "math" + "time" +) + +func Time() time.Time { + return New().Time() +} + +func (f *Faker) Time() time.Time { + n := int64(f.IntegerBetween(0, math.MaxInt64)) + return time.Unix(0, n) +} + +func TimeBetween(beg, end time.Time) time.Time { + return New().TimeBetween(beg, end) +} +func (f *Faker) TimeBetween(beg, end time.Time) time.Time { + b := int(beg.UnixNano()) + e := int(end.UnixNano()) + n := int64(f.IntegerBetween(b, e)) + return time.Unix(0, n) +} diff --git a/util/fake/uuid.go b/util/fake/uuid.go new file mode 100644 index 00000000..9e1a1147 --- /dev/null +++ b/util/fake/uuid.go @@ -0,0 +1,27 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "github.com/satori/go.uuid" +) + +func Uuid() string { + return uuid.NewV4().String() +} + +func (f *Faker) Uuid() string { + return uuid.NewV4().String() +} diff --git a/util/fake/web.go b/util/fake/web.go new file mode 100644 index 00000000..20a2f7bc --- /dev/null +++ b/util/fake/web.go @@ -0,0 +1,60 @@ +// Copyright © 2016 Abcum Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fake + +import ( + "fmt" +) + +var tlds = []string{"com", "org", "edu", "gov", "co.uk", "net", "io", "ac", "ad", "ae", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", "as", "at", "au", "aw", "ax", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", "bq", "br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl", "cm", "cn", "co", "cr", "cu", "cv", "cw", "cx", "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gb", "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", "id", "ie", "il", "im", "in", "io", "iq", "ir", "is", "it", "je", "jm", "jo", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc", "md", "me", "mg", "mh", "mk", "ml", "mm", "mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "mz", "na", "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "ps", "pt", "pw", "py", "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "ss", "st", "su", "sv", "sx", "sy", "sz", "tc", "td", "tf", "tg", "th", "tj", "tk", "tl", "tm", "tn", "to", "tp", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws", "ye", "yt", "za", "zm", "zw"} + +func Avatar() string { + return New().Avatar() +} + +func (f *Faker) Avatar() string { + return fmt.Sprintf("%s%d", + "https://www.gravatar.com/avatar/", + f.StringLength(32), + ) +} + +func Domain() string { + return New().Domain() +} + +func (f *Faker) Domain() string { + return f.Word() + "." + f.Tld() +} + +func Tld() string { + return New().Tld() +} + +func (f *Faker) Tld() string { + return tlds[f.r.Intn(len(tlds))] +} + +func Url() string { + return New().Url() +} + +func (f *Faker) Url() string { + return fmt.Sprintf("https://%s/%s/%s", + f.Domain(), + f.Word(), + f.Word(), + ) +}