plexorganizrnginxsonarrradarrdashboardcouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallemby
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
5.1 KiB
194 lines
5.1 KiB
<?php
|
|
/**
|
|
* @author Mark van der Velden <mark@dynom.nl>
|
|
*/
|
|
|
|
namespace Faker\Test\Provider;
|
|
|
|
use Faker;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Class ProviderOverrideTest
|
|
*
|
|
* @package Faker\Test\Provider
|
|
*
|
|
* This class tests a large portion of all locale specific providers. It does not test the entire stack, because each
|
|
* locale specific provider (can) has specific implementations. The goal of this test is to test the common denominator
|
|
* and to try to catch possible invalid multi-byte sequences.
|
|
*/
|
|
class ProviderOverrideTest extends TestCase
|
|
{
|
|
/**
|
|
* Constants with regular expression patterns for testing the output.
|
|
*
|
|
* Regular expressions are sensitive for malformed strings (e.g.: strings with incorrect encodings) so by using
|
|
* PCRE for the tests, even though they seem fairly pointless, we test for incorrect encodings also.
|
|
*/
|
|
const TEST_STRING_REGEX = '/.+/u';
|
|
|
|
/**
|
|
* Slightly more specific for e-mail, the point isn't to properly validate e-mails.
|
|
*/
|
|
const TEST_EMAIL_REGEX = '/^(.+)@(.+)$/ui';
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testAddress($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->city);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->postcode);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->address);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->country);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testCompany($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->company);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testDateTime($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->century);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->timezone);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testInternet($locale = null)
|
|
{
|
|
if ($locale && $locale !== 'en_US' && !class_exists('Transliterator')) {
|
|
$this->markTestSkipped('Transliterator class not available (intl extension)');
|
|
}
|
|
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->userName);
|
|
|
|
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->email);
|
|
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->safeEmail);
|
|
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->freeEmail);
|
|
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->companyEmail);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testPerson($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->name);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->title);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->firstName);
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->lastName);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testPhoneNumber($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->phoneNumber);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
* @param string $locale
|
|
*/
|
|
public function testUserAgent($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->userAgent);
|
|
}
|
|
|
|
|
|
/**
|
|
* @dataProvider localeDataProvider
|
|
*
|
|
* @param null $locale
|
|
* @param string $locale
|
|
*/
|
|
public function testUuid($locale = null)
|
|
{
|
|
$faker = Faker\Factory::create($locale);
|
|
|
|
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->uuid);
|
|
}
|
|
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function localeDataProvider()
|
|
{
|
|
$locales = $this->getAllLocales();
|
|
$data = array();
|
|
|
|
foreach ($locales as $locale) {
|
|
$data[] = array(
|
|
$locale
|
|
);
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns all locales as array values
|
|
*
|
|
* @return array
|
|
*/
|
|
private function getAllLocales()
|
|
{
|
|
static $locales = array();
|
|
|
|
if ( ! empty($locales)) {
|
|
return $locales;
|
|
}
|
|
|
|
// Finding all PHP files in the xx_XX directories
|
|
$providerDir = __DIR__ .'/../../../src/Faker/Provider';
|
|
foreach (glob($providerDir .'/*_*/*.php') as $file) {
|
|
$localisation = basename(dirname($file));
|
|
|
|
if (isset($locales[ $localisation ])) {
|
|
continue;
|
|
}
|
|
|
|
$locales[ $localisation ] = $localisation;
|
|
}
|
|
|
|
return $locales;
|
|
}
|
|
}
|
|
|