123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?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;
- }
- }
|