Laravel version update

Laravel version update
This commit is contained in:
Manish Verma
2018-08-06 18:48:58 +05:30
parent d143048413
commit 126fbb0255
13678 changed files with 1031482 additions and 778530 deletions

View File

@@ -0,0 +1,306 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\Iban;
use PHPUnit\Framework\TestCase;
class IbanTest extends TestCase
{
public function checksumProvider()
{
return array(
array('AL47212110090000000235698741', '47'),
array('AD1200012030200359100100', '12'),
array('AT611904300234573201', '61'),
array('AZ21NABZ00000000137010001944', '21'),
array('BH67BMAG00001299123456', '67'),
array('BE68539007547034', '68'),
array('BA391290079401028494', '39'),
array('BR7724891749412660603618210F3', '77'),
array('BG80BNBG96611020345678', '80'),
array('CR0515202001026284066', '05'),
array('HR1210010051863000160', '12'),
array('CY17002001280000001200527600', '17'),
array('CZ6508000000192000145399', '65'),
array('DK5000400440116243', '50'),
array('DO28BAGR00000001212453611324', '28'),
array('EE382200221020145685', '38'),
array('FO6264600001631634', '62'),
array('FI2112345600000785', '21'),
array('FR1420041010050500013M02606', '14'),
array('GE29NB0000000101904917', '29'),
array('DE89370400440532013000', '89'),
array('GI75NWBK000000007099453', '75'),
array('GR1601101250000000012300695', '16'),
array('GL8964710001000206', '89'),
array('GT82TRAJ01020000001210029690', '82'),
array('HU42117730161111101800000000', '42'),
array('IS140159260076545510730339', '14'),
array('IE29AIBK93115212345678', '29'),
array('IL620108000000099999999', '62'),
array('IT60X0542811101000000123456', '60'),
array('KZ86125KZT5004100100', '86'),
array('KW81CBKU0000000000001234560101', '81'),
array('LV80BANK0000435195001', '80'),
array('LB62099900000001001901229114', '62'),
array('LI21088100002324013AA', '21'),
array('LT121000011101001000', '12'),
array('LU280019400644750000', '28'),
array('MK07250120000058984', '07'),
array('MT84MALT011000012345MTLCAST001S', '84'),
array('MR1300020001010000123456753', '13'),
array('MU17BOMM0101101030300200000MUR', '17'),
array('MD24AG000225100013104168', '24'),
array('MC5811222000010123456789030', '58'),
array('ME25505000012345678951', '25'),
array('NL91ABNA0417164300', '91'),
array('NO9386011117947', '93'),
array('PK36SCBL0000001123456702', '36'),
array('PL61109010140000071219812874', '61'),
array('PS92PALS000000000400123456702', '92'),
array('PT50000201231234567890154', '50'),
array('QA58DOHB00001234567890ABCDEFG', '58'),
array('RO49AAAA1B31007593840000', '49'),
array('SM86U0322509800000000270100', '86'),
array('SA0380000000608010167519', '03'),
array('RS35260005601001611379', '35'),
array('SK3112000000198742637541', '31'),
array('SI56263300012039086', '56'),
array('ES9121000418450200051332', '91'),
array('SE4550000000058398257466', '45'),
array('CH9300762011623852957', '93'),
array('TN5910006035183598478831', '59'),
array('TR330006100519786457841326', '33'),
array('AE070331234567890123456', '07'),
array('GB29NWBK60161331926819', '29'),
array('VG96VPVG0000012345678901', '96'),
array('YY24KIHB12476423125915947930915268', '24'),
array('ZZ25VLQT382332233206588011313776421', '25'),
);
}
/**
* @dataProvider checksumProvider
*/
public function testChecksum($iban, $checksum)
{
$this->assertEquals($checksum, Iban::checksum($iban), $iban);
}
public function validatorProvider()
{
return array(
array('AL47212110090000000235698741', true),
array('AD1200012030200359100100', true),
array('AT611904300234573201', true),
array('AZ21NABZ00000000137010001944', true),
array('BH67BMAG00001299123456', true),
array('BE68539007547034', true),
array('BA391290079401028494', true),
array('BR7724891749412660603618210F3', true),
array('BG80BNBG96611020345678', true),
array('CR0515202001026284066', true),
array('HR1210010051863000160', true),
array('CY17002001280000001200527600', true),
array('CZ6508000000192000145399', true),
array('DK5000400440116243', true),
array('DO28BAGR00000001212453611324', true),
array('EE382200221020145685', true),
array('FO6264600001631634', true),
array('FI2112345600000785', true),
array('FR1420041010050500013M02606', true),
array('GE29NB0000000101904917', true),
array('DE89370400440532013000', true),
array('GI75NWBK000000007099453', true),
array('GR1601101250000000012300695', true),
array('GL8964710001000206', true),
array('GT82TRAJ01020000001210029690', true),
array('HU42117730161111101800000000', true),
array('IS140159260076545510730339', true),
array('IE29AIBK93115212345678', true),
array('IL620108000000099999999', true),
array('IT60X0542811101000000123456', true),
array('KZ86125KZT5004100100', true),
array('KW81CBKU0000000000001234560101', true),
array('LV80BANK0000435195001', true),
array('LB62099900000001001901229114', true),
array('LI21088100002324013AA', true),
array('LT121000011101001000', true),
array('LU280019400644750000', true),
array('MK07250120000058984', true),
array('MT84MALT011000012345MTLCAST001S', true),
array('MR1300020001010000123456753', true),
array('MU17BOMM0101101030300200000MUR', true),
array('MD24AG000225100013104168', true),
array('MC5811222000010123456789030', true),
array('ME25505000012345678951', true),
array('NL91ABNA0417164300', true),
array('NO9386011117947', true),
array('PK36SCBL0000001123456702', true),
array('PL61109010140000071219812874', true),
array('PS92PALS000000000400123456702', true),
array('PT50000201231234567890154', true),
array('QA58DOHB00001234567890ABCDEFG', true),
array('RO49AAAA1B31007593840000', true),
array('SM86U0322509800000000270100', true),
array('SA0380000000608010167519', true),
array('RS35260005601001611379', true),
array('SK3112000000198742637541', true),
array('SI56263300012039086', true),
array('ES9121000418450200051332', true),
array('SE4550000000058398257466', true),
array('CH9300762011623852957', true),
array('TN5910006035183598478831', true),
array('TR330006100519786457841326', true),
array('AE070331234567890123456', true),
array('GB29NWBK60161331926819', true),
array('VG96VPVG0000012345678901', true),
array('YY24KIHB12476423125915947930915268', true),
array('ZZ25VLQT382332233206588011313776421', true),
array('AL4721211009000000023569874', false),
array('AD120001203020035910010', false),
array('AT61190430023457320', false),
array('AZ21NABZ0000000013701000194', false),
array('BH67BMAG0000129912345', false),
array('BE6853900754703', false),
array('BA39129007940102849', false),
array('BR7724891749412660603618210F', false),
array('BG80BNBG9661102034567', false),
array('CR051520200102628406', false),
array('HR121001005186300016', false),
array('CY1700200128000000120052760', false),
array('CZ650800000019200014539', false),
array('DK500040044011624', false),
array('DO28BAGR0000000121245361132', false),
array('EE38220022102014568', false),
array('FO626460000163163', false),
array('FI2112345600000780', false),
array('FR1420041010050500013M0260', false),
array('GE29NB000000010190491', false),
array('DE8937040044053201300', false),
array('GI75NWBK00000000709945', false),
array('GR160110125000000001230069', false),
array('GL896471000100020', false),
array('GT82TRAJ0102000000121002969', false),
array('HU4211773016111110180000000', false),
array('IS14015926007654551073033', false),
array('IE29AIBK9311521234567', false),
array('IL62010800000009999999', false),
array('IT60X054281110100000012345', false),
array('KZ86125KZT500410010', false),
array('KW81CBKU000000000000123456010', false),
array('LV80BANK000043519500', false),
array('LB6209990000000100190122911', false),
array('LI21088100002324013A', false),
array('LT12100001110100100', false),
array('LU28001940064475000', false),
array('MK0725012000005898', false),
array('MT84MALT011000012345MTLCAST001', false),
array('MR130002000101000012345675', false),
array('MU17BOMM0101101030300200000MU', false),
array('MD24AG00022510001310416', false),
array('MC58112220000101234567890', false),
array('ME2550500001234567895', false),
array('NL91ABNA041716430', false),
array('NO938601111794', false),
array('PK36SCBL000000112345670', false),
array('PL6110901014000007121981287', false),
array('PS92PALS00000000040012345670', false),
array('PT5000020123123456789015', false),
array('QA58DOHB00001234567890ABCDEF', false),
array('RO49AAAA1B3100759384000', false),
array('SM86U032250980000000027010', false),
array('SA038000000060801016751', false),
array('RS3526000560100161137', false),
array('SK311200000019874263754', false),
array('SI5626330001203908', false),
array('ES912100041845020005133', false),
array('SE455000000005839825746', false),
array('CH930076201162385295', false),
array('TN591000603518359847883', false),
array('TR33000610051978645784132', false),
array('AE07033123456789012345', false),
array('GB29NWBK6016133192681', false),
array('VG96VPVG000001234567890', false),
array('YY24KIHB1247642312591594793091526', false),
array('ZZ25VLQT38233223320658801131377642', false),
);
}
/**
* @dataProvider validatorProvider
*/
public function testIsValid($iban, $isValid)
{
$this->assertEquals($isValid, Iban::isValid($iban), $iban);
}
public function alphaToNumberProvider()
{
return array(
array('A', 10),
array('B', 11),
array('C', 12),
array('D', 13),
array('E', 14),
array('F', 15),
array('G', 16),
array('H', 17),
array('I', 18),
array('J', 19),
array('K', 20),
array('L', 21),
array('M', 22),
array('N', 23),
array('O', 24),
array('P', 25),
array('Q', 26),
array('R', 27),
array('S', 28),
array('T', 29),
array('U', 30),
array('V', 31),
array('W', 32),
array('X', 33),
array('Y', 34),
array('Z', 35),
);
}
/**
* @dataProvider alphaToNumberProvider
*/
public function testAlphaToNumber($letter, $number)
{
$this->assertEquals($number, Iban::alphaToNumber($letter), $letter);
}
public function mod97Provider()
{
// Large numbers
$return = array(
array('123456789123456789', 7),
array('111222333444555666', 73),
array('4242424242424242424242', 19),
array('271828182845904523536028', 68),
);
// 0-200
for ($i = 0; $i < 200; $i++) {
$return[] = array((string)$i, $i % 97);
}
return $return;
}
/**
* @dataProvider mod97Provider
*/
public function testMod97($number, $result)
{
$this->assertEquals($result, Iban::mod97($number), $number);
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\Inn;
use PHPUnit\Framework\TestCase;
class InnTest extends TestCase
{
public function checksumProvider()
{
return array(
array('143525744', '4'),
array('500109285', '3'),
array('500109285', '3'),
array('500109285', '3'),
array('027615723', '1')
);
}
/**
* @dataProvider checksumProvider
*/
public function testChecksum($inn, $checksum)
{
$this->assertEquals($checksum, Inn::checksum($inn), $inn);
}
public function validatorProvider()
{
return array(
array('5902179757', true),
array('5408294405', true),
array('2724164617', true),
array('0726000515', true),
array('6312123552', true),
array('1111111111', false),
array('0123456789', false),
);
}
/**
* @dataProvider validatorProvider
*/
public function testIsValid($inn, $isValid)
{
$this->assertEquals($isValid, Inn::isValid($inn), $inn);
}
}

View File

@@ -0,0 +1,72 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\Luhn;
use PHPUnit\Framework\TestCase;
class LuhnTest extends TestCase
{
public function checkDigitProvider()
{
return array(
array('7992739871', '3'),
array('3852000002323', '7'),
array('37144963539843', '1'),
array('561059108101825', '0'),
array('601100099013942', '4'),
array('510510510510510', '0'),
array(7992739871, '3'),
array(3852000002323, '7'),
array('37144963539843', '1'),
array('561059108101825', '0'),
array('601100099013942', '4'),
array('510510510510510', '0')
);
}
/**
* @dataProvider checkDigitProvider
*/
public function testComputeCheckDigit($partialNumber, $checkDigit)
{
$this->assertInternalType('string', $checkDigit);
$this->assertEquals($checkDigit, Luhn::computeCheckDigit($partialNumber));
}
public function validatorProvider()
{
return array(
array('79927398710', false),
array('79927398711', false),
array('79927398712', false),
array('79927398713', true),
array('79927398714', false),
array('79927398715', false),
array('79927398716', false),
array('79927398717', false),
array('79927398718', false),
array('79927398719', false),
array(79927398713, true),
array(79927398714, false),
);
}
/**
* @dataProvider validatorProvider
*/
public function testIsValid($number, $isValid)
{
$this->assertEquals($isValid, Luhn::isValid($number));
}
/**
* @expectedException InvalidArgumentException
* @expectedExceptionMessage Argument should be an integer.
*/
public function testGenerateLuhnNumberWithInvalidPrefix()
{
Luhn::generateLuhnNumber('abc');
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\TCNo;
use PHPUnit\Framework\TestCase;
class TCNoTest extends TestCase
{
public function checksumProvider()
{
return array(
array('553006348', '82'),
array('350630743', '78'),
array('550600932', '88'),
array('487932947', '70'),
array('168113862', '40')
);
}
/**
* @dataProvider checksumProvider
* @param $tcNo
* @param $checksum
*/
public function testChecksum($tcNo, $checksum)
{
$this->assertEquals($checksum, TCNo::checksum($tcNo), $tcNo);
}
public function validatorProvider()
{
return array(
array('22978160678', true),
array('26480045324', true),
array('47278360658', true),
array('34285002510', true),
array('19874561012', true),
array('11111111111', false),
array('11234567899', false),
);
}
/**
* @dataProvider validatorProvider
* @param $tcNo
* @param $isValid
*/
public function testIsValid($tcNo, $isValid)
{
$this->assertEquals($isValid, TCNo::isValid($tcNo), $tcNo);
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace Faker\Test;
use Faker\DefaultGenerator;
use PHPUnit\Framework\TestCase;
class DefaultGeneratorTest extends TestCase
{
public function testGeneratorReturnsNullByDefault()
{
$generator = new DefaultGenerator;
$this->assertNull($generator->value);
}
public function testGeneratorReturnsDefaultValueForAnyPropertyGet()
{
$generator = new DefaultGenerator(123);
$this->assertSame(123, $generator->foo);
$this->assertNotNull($generator->bar);
}
public function testGeneratorReturnsDefaultValueForAnyMethodCall()
{
$generator = new DefaultGenerator(123);
$this->assertSame(123, $generator->foobar());
}
}

View File

@@ -0,0 +1,148 @@
<?php
namespace Faker\Test;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class GeneratorTest extends TestCase
{
public function testAddProviderGivesPriorityToNewlyAddedProvider()
{
$generator = new Generator;
$generator->addProvider(new FooProvider());
$generator->addProvider(new BarProvider());
$this->assertEquals('barfoo', $generator->format('fooFormatter'));
}
public function testGetFormatterReturnsCallable()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertInternalType('callable', $generator->getFormatter('fooFormatter'));
}
public function testGetFormatterReturnsCorrectFormatter()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$expected = array($provider, 'fooFormatter');
$this->assertEquals($expected, $generator->getFormatter('fooFormatter'));
}
/**
* @expectedException InvalidArgumentException
*/
public function testGetFormatterThrowsExceptionOnIncorrectProvider()
{
$generator = new Generator;
$generator->getFormatter('fooFormatter');
}
/**
* @expectedException InvalidArgumentException
*/
public function testGetFormatterThrowsExceptionOnIncorrectFormatter()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$generator->getFormatter('barFormatter');
}
public function testFormatCallsFormatterOnProvider()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertEquals('foobar', $generator->format('fooFormatter'));
}
public function testFormatTransfersArgumentsToFormatter()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertEquals('bazfoo', $generator->format('fooFormatterWithArguments', array('foo')));
}
public function testParseReturnsSameStringWhenItContainsNoCurlyBraces()
{
$generator = new Generator();
$this->assertEquals('fooBar#?', $generator->parse('fooBar#?'));
}
public function testParseReturnsStringWithTokensReplacedByFormatters()
{
$generator = new Generator();
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertEquals('This is foobar a text with foobar', $generator->parse('This is {{fooFormatter}} a text with {{ fooFormatter }}'));
}
public function testMagicGetCallsFormat()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertEquals('foobar', $generator->fooFormatter);
}
public function testMagicCallCallsFormat()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertEquals('foobar', $generator->fooFormatter());
}
public function testMagicCallCallsFormatWithArguments()
{
$generator = new Generator;
$provider = new FooProvider();
$generator->addProvider($provider);
$this->assertEquals('bazfoo', $generator->fooFormatterWithArguments('foo'));
}
public function testSeed()
{
$generator = new Generator;
$generator->seed(0);
$mtRandWithSeedZero = mt_rand();
$generator->seed(0);
$this->assertEquals($mtRandWithSeedZero, mt_rand(), 'seed(0) should be deterministic.');
$generator->seed();
$mtRandWithoutSeed = mt_rand();
$this->assertNotEquals($mtRandWithSeedZero, $mtRandWithoutSeed, 'seed() should be different than seed(0)');
$generator->seed();
$this->assertNotEquals($mtRandWithoutSeed, mt_rand(), 'seed() should not be deterministic.');
$generator->seed('10');
$this->assertTrue(true, 'seeding with a non int value doesn\'t throw an exception');
}
}
class FooProvider
{
public function fooFormatter()
{
return 'foobar';
}
public function fooFormatterWithArguments($value = '')
{
return 'baz' . $value;
}
}
class BarProvider
{
public function fooFormatter()
{
return 'barfoo';
}
}

View File

@@ -0,0 +1,47 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testLatitude()
{
$latitude = $this->faker->latitude();
$this->assertInternalType('float', $latitude);
$this->assertGreaterThanOrEqual(-90, $latitude);
$this->assertLessThanOrEqual(90, $latitude);
}
public function testLongitude()
{
$longitude = $this->faker->longitude();
$this->assertInternalType('float', $longitude);
$this->assertGreaterThanOrEqual(-180, $longitude);
$this->assertLessThanOrEqual(180, $longitude);
}
public function testCoordinate()
{
$coordinate = $this->faker->localCoordinates();
$this->assertInternalType('array', $coordinate);
$this->assertInternalType('float', $coordinate['latitude']);
$this->assertGreaterThanOrEqual(-90, $coordinate['latitude']);
$this->assertLessThanOrEqual(90, $coordinate['latitude']);
$this->assertInternalType('float', $coordinate['longitude']);
$this->assertGreaterThanOrEqual(-180, $coordinate['longitude']);
$this->assertLessThanOrEqual(180, $coordinate['longitude']);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Barcode;
use PHPUnit\Framework\TestCase;
class BarcodeTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Barcode($faker));
$faker->seed(0);
$this->faker = $faker;
}
public function testEan8()
{
$code = $this->faker->ean8();
$this->assertRegExp('/^\d{8}$/i', $code);
$codeWithoutChecksum = substr($code, 0, -1);
$checksum = substr($code, -1);
$this->assertEquals(TestableBarcode::eanChecksum($codeWithoutChecksum), $checksum);
}
public function testEan13()
{
$code = $this->faker->ean13();
$this->assertRegExp('/^\d{13}$/i', $code);
$codeWithoutChecksum = substr($code, 0, -1);
$checksum = substr($code, -1);
$this->assertEquals(TestableBarcode::eanChecksum($codeWithoutChecksum), $checksum);
}
}
class TestableBarcode extends Barcode
{
public static function eanChecksum($input)
{
return parent::eanChecksum($input);
}
}

View File

@@ -0,0 +1,572 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Base as BaseProvider;
use PHPUnit\Framework\TestCase;
use Traversable;
class BaseTest extends TestCase
{
public function testRandomDigitReturnsInteger()
{
$this->assertInternalType('integer', BaseProvider::randomDigit());
}
public function testRandomDigitReturnsDigit()
{
$this->assertGreaterThanOrEqual(0, BaseProvider::randomDigit());
$this->assertLessThan(10, BaseProvider::randomDigit());
}
public function testRandomDigitNotNullReturnsNotNullDigit()
{
$this->assertGreaterThan(0, BaseProvider::randomDigitNotNull());
$this->assertLessThan(10, BaseProvider::randomDigitNotNull());
}
public function testRandomDigitNotReturnsValidDigit()
{
for ($i = 0; $i <= 9; $i++) {
$this->assertGreaterThanOrEqual(0, BaseProvider::randomDigitNot($i));
$this->assertLessThan(10, BaseProvider::randomDigitNot($i));
$this->assertNotSame(BaseProvider::randomDigitNot($i), $i);
}
}
/**
* @expectedException \InvalidArgumentException
*/
public function testRandomNumberThrowsExceptionWhenCalledWithAMax()
{
BaseProvider::randomNumber(5, 200);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testRandomNumberThrowsExceptionWhenCalledWithATooHighNumberOfDigits()
{
BaseProvider::randomNumber(10);
}
public function testRandomNumberReturnsInteger()
{
$this->assertInternalType('integer', BaseProvider::randomNumber());
$this->assertInternalType('integer', BaseProvider::randomNumber(5, false));
}
public function testRandomNumberReturnsDigit()
{
$this->assertGreaterThanOrEqual(0, BaseProvider::randomNumber(3));
$this->assertLessThan(1000, BaseProvider::randomNumber(3));
}
public function testRandomNumberAcceptsStrictParamToEnforceNumberSize()
{
$this->assertEquals(5, strlen((string) BaseProvider::randomNumber(5, true)));
}
public function testNumberBetween()
{
$min = 5;
$max = 6;
$this->assertGreaterThanOrEqual($min, BaseProvider::numberBetween($min, $max));
$this->assertGreaterThanOrEqual(BaseProvider::numberBetween($min, $max), $max);
}
public function testNumberBetweenAcceptsZeroAsMax()
{
$this->assertEquals(0, BaseProvider::numberBetween(0, 0));
}
public function testRandomFloat()
{
$min = 4;
$max = 10;
$nbMaxDecimals = 8;
$result = BaseProvider::randomFloat($nbMaxDecimals, $min, $max);
$parts = explode('.', $result);
$this->assertInternalType('float', $result);
$this->assertGreaterThanOrEqual($min, $result);
$this->assertLessThanOrEqual($max, $result);
$this->assertLessThanOrEqual($nbMaxDecimals, strlen($parts[1]));
}
public function testRandomLetterReturnsString()
{
$this->assertInternalType('string', BaseProvider::randomLetter());
}
public function testRandomLetterReturnsSingleLetter()
{
$this->assertEquals(1, strlen(BaseProvider::randomLetter()));
}
public function testRandomLetterReturnsLowercaseLetter()
{
$lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz';
$this->assertNotFalse(strpos($lowercaseLetters, BaseProvider::randomLetter()));
}
public function testRandomAsciiReturnsString()
{
$this->assertInternalType('string', BaseProvider::randomAscii());
}
public function testRandomAsciiReturnsSingleCharacter()
{
$this->assertEquals(1, strlen(BaseProvider::randomAscii()));
}
public function testRandomAsciiReturnsAsciiCharacter()
{
$lowercaseLetters = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
$this->assertNotFalse(strpos($lowercaseLetters, BaseProvider::randomAscii()));
}
public function testRandomElementReturnsNullWhenArrayEmpty()
{
$this->assertNull(BaseProvider::randomElement(array()));
}
public function testRandomElementReturnsNullWhenCollectionEmpty()
{
$this->assertNull(BaseProvider::randomElement(new Collection(array())));
}
public function testRandomElementReturnsElementFromArray()
{
$elements = array('23', 'e', 32, '#');
$this->assertContains(BaseProvider::randomElement($elements), $elements);
}
public function testRandomElementReturnsElementFromAssociativeArray()
{
$elements = array('tata' => '23', 'toto' => 'e', 'tutu' => 32, 'titi' => '#');
$this->assertContains(BaseProvider::randomElement($elements), $elements);
}
public function testRandomElementReturnsElementFromCollection()
{
$collection = new Collection(array('one', 'two', 'three'));
$this->assertContains(BaseProvider::randomElement($collection), $collection);
}
public function testShuffleReturnsStringWhenPassedAStringArgument()
{
$this->assertInternalType('string', BaseProvider::shuffle('foo'));
}
public function testShuffleReturnsArrayWhenPassedAnArrayArgument()
{
$this->assertInternalType('array', BaseProvider::shuffle(array(1, 2, 3)));
}
/**
* @expectedException \InvalidArgumentException
*/
public function testShuffleThrowsExceptionWhenPassedAnInvalidArgument()
{
BaseProvider::shuffle(false);
}
public function testShuffleArraySupportsEmptyArrays()
{
$this->assertEquals(array(), BaseProvider::shuffleArray(array()));
}
public function testShuffleArrayReturnsAnArrayOfTheSameSize()
{
$array = array(1, 2, 3, 4, 5);
$this->assertSameSize($array, BaseProvider::shuffleArray($array));
}
public function testShuffleArrayReturnsAnArrayWithSameElements()
{
$array = array(2, 4, 6, 8, 10);
$shuffleArray = BaseProvider::shuffleArray($array);
$this->assertContains(2, $shuffleArray);
$this->assertContains(4, $shuffleArray);
$this->assertContains(6, $shuffleArray);
$this->assertContains(8, $shuffleArray);
$this->assertContains(10, $shuffleArray);
}
public function testShuffleArrayReturnsADifferentArrayThanTheOriginal()
{
$arr = array(1, 2, 3, 4, 5);
$shuffledArray = BaseProvider::shuffleArray($arr);
$this->assertNotEquals($arr, $shuffledArray);
}
public function testShuffleArrayLeavesTheOriginalArrayUntouched()
{
$arr = array(1, 2, 3, 4, 5);
BaseProvider::shuffleArray($arr);
$this->assertEquals($arr, array(1, 2, 3, 4, 5));
}
public function testShuffleStringSupportsEmptyStrings()
{
$this->assertEquals('', BaseProvider::shuffleString(''));
}
public function testShuffleStringReturnsAnStringOfTheSameSize()
{
$string = 'abcdef';
$this->assertEquals(strlen($string), strlen(BaseProvider::shuffleString($string)));
}
public function testShuffleStringReturnsAnStringWithSameElements()
{
$string = 'acegi';
$shuffleString = BaseProvider::shuffleString($string);
$this->assertContains('a', $shuffleString);
$this->assertContains('c', $shuffleString);
$this->assertContains('e', $shuffleString);
$this->assertContains('g', $shuffleString);
$this->assertContains('i', $shuffleString);
}
public function testShuffleStringReturnsADifferentStringThanTheOriginal()
{
$string = 'abcdef';
$shuffledString = BaseProvider::shuffleString($string);
$this->assertNotEquals($string, $shuffledString);
}
public function testShuffleStringLeavesTheOriginalStringUntouched()
{
$string = 'abcdef';
BaseProvider::shuffleString($string);
$this->assertEquals($string, 'abcdef');
}
public function testNumerifyReturnsSameStringWhenItContainsNoHashSign()
{
$this->assertEquals('fooBar?', BaseProvider::numerify('fooBar?'));
}
public function testNumerifyReturnsStringWithHashSignsReplacedByDigits()
{
$this->assertRegExp('/foo\dBa\dr/', BaseProvider::numerify('foo#Ba#r'));
}
public function testNumerifyReturnsStringWithPercentageSignsReplacedByDigits()
{
$this->assertRegExp('/foo\dBa\dr/', BaseProvider::numerify('foo%Ba%r'));
}
public function testNumerifyReturnsStringWithPercentageSignsReplacedByNotNullDigits()
{
$this->assertNotEquals('0', BaseProvider::numerify('%'));
}
public function testNumerifyCanGenerateALargeNumberOfDigits()
{
$largePattern = str_repeat('#', 20); // definitely larger than PHP_INT_MAX on all systems
$this->assertEquals(20, strlen(BaseProvider::numerify($largePattern)));
}
public function testLexifyReturnsSameStringWhenItContainsNoQuestionMark()
{
$this->assertEquals('fooBar#', BaseProvider::lexify('fooBar#'));
}
public function testLexifyReturnsStringWithQuestionMarksReplacedByLetters()
{
$this->assertRegExp('/foo[a-z]Ba[a-z]r/', BaseProvider::lexify('foo?Ba?r'));
}
public function testBothifyCombinesNumerifyAndLexify()
{
$this->assertRegExp('/foo[a-z]Ba\dr/', BaseProvider::bothify('foo?Ba#r'));
}
public function testBothifyAsterisk()
{
$this->assertRegExp('/foo([a-z]|\d)Ba([a-z]|\d)r/', BaseProvider::bothify('foo*Ba*r'));
}
public function testBothifyUtf()
{
$utf = 'œ∑´®†¥¨ˆøπ“‘和製╯°□°╯︵ ┻━┻🐵 🙈 ﺚﻣ ﻦﻔﺳ ﺲﻘﻄﺗ ﻮﺑﺎﻠﺘﺣﺪﻳﺩ،, ﺝﺰﻳﺮﺘﻳ ﺏﺎﺴﺘﺧﺩﺎﻣ ﺄﻧ ﺪﻧﻭ. ﺇﺫ ﻪﻧﺍ؟ ﺎﻠﺴﺗﺍﺭ ﻮﺘ';
$this->assertRegExp('/'.$utf.'foo\dB[a-z]a([a-z]|\d)r/u', BaseProvider::bothify($utf.'foo#B?a*r'));
}
public function testAsciifyReturnsSameStringWhenItContainsNoStarSign()
{
$this->assertEquals('fooBar?', BaseProvider::asciify('fooBar?'));
}
public function testAsciifyReturnsStringWithStarSignsReplacedByAsciiChars()
{
$this->assertRegExp('/foo.Ba.r/', BaseProvider::asciify('foo*Ba*r'));
}
public function regexifyBasicDataProvider()
{
return array(
array('azeQSDF1234', 'azeQSDF1234', 'does not change non regex chars'),
array('foo(bar){1}', 'foobar', 'replaces regex characters'),
array('', '', 'supports empty string'),
array('/^foo(bar){1}$/', 'foobar', 'ignores regex delimiters')
);
}
/**
* @dataProvider regexifyBasicDataProvider
*/
public function testRegexifyBasicFeatures($input, $output, $message)
{
$this->assertEquals($output, BaseProvider::regexify($input), $message);
}
public function regexifyDataProvider()
{
return array(
array('\d', 'numbers'),
array('\w', 'letters'),
array('(a|b)', 'alternation'),
array('[aeiou]', 'basic character class'),
array('[a-z]', 'character class range'),
array('[a-z1-9]', 'multiple character class range'),
array('a*b+c?', 'single character quantifiers'),
array('a{2}', 'brackets quantifiers'),
array('a{2,3}', 'min-max brackets quantifiers'),
array('[aeiou]{2,3}', 'brackets quantifiers on basic character class'),
array('[a-z]{2,3}', 'brackets quantifiers on character class range'),
array('(a|b){2,3}', 'brackets quantifiers on alternation'),
array('\.\*\?\+', 'escaped characters'),
array('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}', 'complex regex')
);
}
/**
* @dataProvider regexifyDataProvider
*/
public function testRegexifySupportedRegexSyntax($pattern, $message)
{
$this->assertRegExp('/' . $pattern . '/', BaseProvider::regexify($pattern), 'Regexify supports ' . $message);
}
public function testOptionalReturnsProviderValueWhenCalledWithWeight1()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$this->assertNotNull($faker->optional(100)->randomDigit);
}
public function testOptionalReturnsNullWhenCalledWithWeight0()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$this->assertNull($faker->optional(0)->randomDigit);
}
public function testOptionalAllowsChainingPropertyAccess()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$faker->addProvider(new \ArrayObject(array(1))); // hack because method_exists forbids stubs
$this->assertEquals(1, $faker->optional(100)->count);
$this->assertNull($faker->optional(0)->count);
}
public function testOptionalAllowsChainingMethodCall()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$faker->addProvider(new \ArrayObject(array(1))); // hack because method_exists forbids stubs
$this->assertEquals(1, $faker->optional(100)->count());
$this->assertNull($faker->optional(0)->count());
}
public function testOptionalAllowsChainingProviderCallRandomlyReturnNull()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$values = array();
for ($i=0; $i < 10; $i++) {
$values[]= $faker->optional()->randomDigit;
}
$this->assertContains(null, $values);
$values = array();
for ($i=0; $i < 10; $i++) {
$values[]= $faker->optional(50)->randomDigit;
}
$this->assertContains(null, $values);
}
/**
* @link https://github.com/fzaninotto/Faker/issues/265
*/
public function testOptionalPercentageAndWeight()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$faker->addProvider(new \Faker\Provider\Miscellaneous($faker));
$valuesOld = array();
$valuesNew = array();
for ($i = 0; $i < 10000; ++$i) {
$valuesOld[] = $faker->optional(0.5)->boolean(100);
$valuesNew[] = $faker->optional(50)->boolean(100);
}
$this->assertEquals(
round(array_sum($valuesOld) / 10000, 2),
round(array_sum($valuesNew) / 10000, 2)
);
}
public function testUniqueAllowsChainingPropertyAccess()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$faker->addProvider(new \ArrayObject(array(1))); // hack because method_exists forbids stubs
$this->assertEquals(1, $faker->unique()->count);
}
public function testUniqueAllowsChainingMethodCall()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$faker->addProvider(new \ArrayObject(array(1))); // hack because method_exists forbids stubs
$this->assertEquals(1, $faker->unique()->count());
}
public function testUniqueReturnsOnlyUniqueValues()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$values = array();
for ($i=0; $i < 10; $i++) {
$values[]= $faker->unique()->randomDigit;
}
sort($values);
$this->assertEquals(array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), $values);
}
/**
* @expectedException OverflowException
*/
public function testUniqueThrowsExceptionWhenNoUniqueValueCanBeGenerated()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
for ($i=0; $i < 11; $i++) {
$faker->unique()->randomDigit;
}
}
public function testUniqueCanResetUniquesWhenPassedTrueAsArgument()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$values = array();
for ($i=0; $i < 10; $i++) {
$values[]= $faker->unique()->randomDigit;
}
$values[]= $faker->unique(true)->randomDigit;
for ($i=0; $i < 9; $i++) {
$values[]= $faker->unique()->randomDigit;
}
sort($values);
$this->assertEquals(array(0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9), $values);
}
public function testValidAllowsChainingPropertyAccess()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$this->assertLessThan(10, $faker->valid()->randomDigit);
}
public function testValidAllowsChainingMethodCall()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$this->assertLessThan(10, $faker->valid()->numberBetween(5, 9));
}
public function testValidReturnsOnlyValidValues()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$values = array();
$evenValidator = function($digit) {
return $digit % 2 === 0;
};
for ($i=0; $i < 50; $i++) {
$values[$faker->valid($evenValidator)->randomDigit] = true;
}
$uniqueValues = array_keys($values);
sort($uniqueValues);
$this->assertEquals(array(0, 2, 4, 6, 8), $uniqueValues);
}
/**
* @expectedException OverflowException
*/
public function testValidThrowsExceptionWhenNoValidValueCanBeGenerated()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$evenValidator = function($digit) {
return $digit % 2 === 0;
};
for ($i=0; $i < 11; $i++) {
$faker->valid($evenValidator)->randomElement(array(1, 3, 5, 7, 9));
}
}
/**
* @expectedException InvalidArgumentException
*/
public function testValidThrowsExceptionWhenParameterIsNotCollable()
{
$faker = new \Faker\Generator();
$faker->addProvider(new \Faker\Provider\Base($faker));
$faker->valid(12)->randomElement(array(1, 3, 5, 7, 9));
}
/**
* @expectedException LengthException
* @expectedExceptionMessage Cannot get 2 elements, only 1 in array
*/
public function testRandomElementsThrowsWhenRequestingTooManyKeys()
{
BaseProvider::randomElements(array('foo'), 2);
}
public function testRandomElements()
{
$this->assertCount(1, BaseProvider::randomElements(), 'Should work without any input');
$empty = BaseProvider::randomElements(array(), 0);
$this->assertInternalType('array', $empty);
$this->assertCount(0, $empty);
$shuffled = BaseProvider::randomElements(array('foo', 'bar', 'baz'), 3);
$this->assertContains('foo', $shuffled);
$this->assertContains('bar', $shuffled);
$this->assertContains('baz', $shuffled);
$allowDuplicates = BaseProvider::randomElements(array('foo', 'bar'), 3, true);
$this->assertCount(3, $allowDuplicates);
$this->assertContainsOnly('string', $allowDuplicates);
}
}
class Collection extends \ArrayObject
{
}

View File

@@ -0,0 +1,74 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Biased;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class BiasedTest extends TestCase
{
const MAX = 10;
const NUMBERS = 25000;
protected $generator;
protected $results = array();
protected function setUp()
{
$this->generator = new Generator();
$this->generator->addProvider(new Biased($this->generator));
$this->results = array_fill(1, self::MAX, 0);
}
public function performFake($function)
{
for($i = 0; $i < self::NUMBERS; $i++) {
$this->results[$this->generator->biasedNumberBetween(1, self::MAX, $function)]++;
}
}
public function testUnbiased()
{
$this->performFake(array('\Faker\Provider\Biased', 'unbiased'));
// assert that all numbers are near the expected unbiased value
foreach ($this->results as $number => $amount) {
// integral
$assumed = (1 / self::MAX * $number) - (1 / self::MAX * ($number - 1));
// calculate the fraction of the whole area
$assumed /= 1;
$this->assertGreaterThan(self::NUMBERS * $assumed * .95, $amount, "Value was more than 5 percent under the expected value");
$this->assertLessThan(self::NUMBERS * $assumed * 1.05, $amount, "Value was more than 5 percent over the expected value");
}
}
public function testLinearHigh()
{
$this->performFake(array('\Faker\Provider\Biased', 'linearHigh'));
foreach ($this->results as $number => $amount) {
// integral
$assumed = 0.5 * pow(1 / self::MAX * $number, 2) - 0.5 * pow(1 / self::MAX * ($number - 1), 2);
// calculate the fraction of the whole area
$assumed /= pow(1, 2) * .5;
$this->assertGreaterThan(self::NUMBERS * $assumed * .9, $amount, "Value was more than 10 percent under the expected value");
$this->assertLessThan(self::NUMBERS * $assumed * 1.1, $amount, "Value was more than 10 percent over the expected value");
}
}
public function testLinearLow()
{
$this->performFake(array('\Faker\Provider\Biased', 'linearLow'));
foreach ($this->results as $number => $amount) {
// integral
$assumed = -0.5 * pow(1 / self::MAX * $number, 2) - -0.5 * pow(1 / self::MAX * ($number - 1), 2);
// shift the graph up
$assumed += 1 / self::MAX;
// calculate the fraction of the whole area
$assumed /= pow(1, 2) * .5;
$this->assertGreaterThan(self::NUMBERS * $assumed * .9, $amount, "Value was more than 10 percent under the expected value");
$this->assertLessThan(self::NUMBERS * $assumed * 1.1, $amount, "Value was more than 10 percent over the expected value");
}
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Color;
use PHPUnit\Framework\TestCase;
class ColorTest extends TestCase
{
public function testHexColor()
{
$this->assertRegExp('/^#[a-f0-9]{6}$/i', Color::hexColor());
}
public function testSafeHexColor()
{
$this->assertRegExp('/^#[a-f0-9]{6}$/i', Color::safeHexColor());
}
public function testRgbColorAsArray()
{
$this->assertEquals(3, count(Color::rgbColorAsArray()));
}
public function testRgbColor()
{
$regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])';
$this->assertRegExp('/^' . $regexp . ',' . $regexp . ',' . $regexp . '$/i', Color::rgbColor());
}
public function testRgbCssColor()
{
$regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])';
$this->assertRegExp('/^rgb\(' . $regexp . ',' . $regexp . ',' . $regexp . '\)$/i', Color::rgbCssColor());
}
public function testRgbaCssColor()
{
$regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])';
$regexpAlpha = '([01]?(\.\d+)?)';
$this->assertRegExp('/^rgba\(' . $regexp . ',' . $regexp . ',' . $regexp . ',' . $regexpAlpha . '\)$/i', Color::rgbaCssColor());
}
public function testSafeColorName()
{
$this->assertRegExp('/^[\w]+$/', Color::safeColorName());
}
public function testColorName()
{
$this->assertRegExp('/^[\w]+$/', Color::colorName());
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Company;
use Faker\Provider\Lorem;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$faker->addProvider(new Lorem($faker));
$this->faker = $faker;
}
public function testJobTitle()
{
$jobTitle = $this->faker->jobTitle();
$pattern = '/^[A-Za-z]+$/';
$this->assertRegExp($pattern, $jobTitle);
}
}

View File

@@ -0,0 +1,282 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\DateTime as DateTimeProvider;
use PHPUnit\Framework\TestCase;
class DateTimeTest extends TestCase
{
public function setUp()
{
$this->defaultTz = 'UTC';
DateTimeProvider::setDefaultTimezone($this->defaultTz);
}
public function tearDown()
{
DateTimeProvider::setDefaultTimezone();
}
public function testPreferDefaultTimezoneOverSystemTimezone()
{
/**
* Set the system timezone to something *other* than the timezone used
* in setUp().
*/
$originalSystemTimezone = date_default_timezone_get();
$systemTimezone = 'Antarctica/Vostok';
date_default_timezone_set($systemTimezone);
/**
* Get a new date/time value and assert that it prefers the default
* timezone over the system timezone.
*/
$date = DateTimeProvider::dateTime();
$this->assertNotSame($systemTimezone, $date->getTimezone()->getName());
$this->assertSame($this->defaultTz, $date->getTimezone()->getName());
/**
* Restore the system timezone.
*/
date_default_timezone_set($originalSystemTimezone);
}
public function testUseSystemTimezoneWhenDefaultTimezoneIsNotSet()
{
/**
* Set the system timezone to something *other* than the timezone used
* in setUp() *and* reset the default timezone.
*/
$originalSystemTimezone = date_default_timezone_get();
$originalDefaultTimezone = DateTimeProvider::getDefaultTimezone();
$systemTimezone = 'Antarctica/Vostok';
date_default_timezone_set($systemTimezone);
DateTimeProvider::setDefaultTimezone();
/**
* Get a new date/time value and assert that it uses the system timezone
* and not the system timezone.
*/
$date = DateTimeProvider::dateTime();
$this->assertSame($systemTimezone, $date->getTimezone()->getName());
$this->assertNotSame($this->defaultTz, $date->getTimezone()->getName());
/**
* Restore the system timezone.
*/
date_default_timezone_set($originalSystemTimezone);
}
public function testUnixTime()
{
$timestamp = DateTimeProvider::unixTime();
$this->assertInternalType('int', $timestamp);
$this->assertGreaterThanOrEqual(0, $timestamp);
$this->assertLessThanOrEqual(time(), $timestamp);
}
public function testDateTime()
{
$date = DateTimeProvider::dateTime();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('@0'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeWithTimezone()
{
$date = DateTimeProvider::dateTime('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeAD()
{
$date = DateTimeProvider::dateTimeAD();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('0000-01-01 00:00:00'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisCentury()
{
$date = DateTimeProvider::dateTimeThisCentury();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-100 year'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisDecade()
{
$date = DateTimeProvider::dateTimeThisDecade();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-10 year'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisYear()
{
$date = DateTimeProvider::dateTimeThisYear();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-1 year'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisMonth()
{
$date = DateTimeProvider::dateTimeThisMonth();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-1 month'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisCenturyWithTimezone()
{
$date = DateTimeProvider::dateTimeThisCentury('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeThisDecadeWithTimezone()
{
$date = DateTimeProvider::dateTimeThisDecade('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeThisYearWithTimezone()
{
$date = DateTimeProvider::dateTimeThisYear('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeThisMonthWithTimezone()
{
$date = DateTimeProvider::dateTimeThisMonth('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testIso8601()
{
$date = DateTimeProvider::iso8601();
$this->assertRegExp('/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-Z](\d{4})?$/', $date);
$this->assertGreaterThanOrEqual(new \DateTime('@0'), new \DateTime($date));
$this->assertLessThanOrEqual(new \DateTime(), new \DateTime($date));
}
public function testDate()
{
$date = DateTimeProvider::date();
$this->assertRegExp('/^\d{4}-\d{2}-\d{2}$/', $date);
$this->assertGreaterThanOrEqual(new \DateTime('@0'), new \DateTime($date));
$this->assertLessThanOrEqual(new \DateTime(), new \DateTime($date));
}
public function testTime()
{
$date = DateTimeProvider::time();
$this->assertRegExp('/^\d{2}:\d{2}:\d{2}$/', $date);
}
/**
*
* @dataProvider providerDateTimeBetween
*/
public function testDateTimeBetween($start, $end)
{
$date = DateTimeProvider::dateTimeBetween($start, $end);
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime($start), $date);
$this->assertLessThanOrEqual(new \DateTime($end), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function providerDateTimeBetween()
{
return array(
array('-1 year', false),
array('-1 year', null),
array('-1 day', '-1 hour'),
array('-1 day', 'now'),
);
}
/**
*
* @dataProvider providerDateTimeInInterval
*/
public function testDateTimeInInterval($start, $interval = "+5 days", $isInFuture)
{
$date = DateTimeProvider::dateTimeInInterval($start, $interval);
$this->assertInstanceOf('\DateTime', $date);
$_interval = \DateInterval::createFromDateString($interval);
$_start = new \DateTime($start);
if ($isInFuture) {
$this->assertGreaterThanOrEqual($_start, $date);
$this->assertLessThanOrEqual($_start->add($_interval), $date);
} else {
$this->assertLessThanOrEqual($_start, $date);
$this->assertGreaterThanOrEqual($_start->add($_interval), $date);
}
}
public function providerDateTimeInInterval()
{
return array(
array('-1 year', '+5 days', true),
array('-1 day', '-1 hour', false),
array('-1 day', '+1 hour', true),
);
}
public function testFixedSeedWithMaximumTimestamp()
{
$max = '2118-03-01 12:00:00';
mt_srand(1);
$unixTime = DateTimeProvider::unixTime($max);
$datetimeAD = DateTimeProvider::dateTimeAD($max);
$dateTime1 = DateTimeProvider::dateTime($max);
$dateTimeBetween = DateTimeProvider::dateTimeBetween('2014-03-01 06:00:00', $max);
$date = DateTimeProvider::date('Y-m-d', $max);
$time = DateTimeProvider::time('H:i:s', $max);
$iso8601 = DateTimeProvider::iso8601($max);
$dateTimeThisCentury = DateTimeProvider::dateTimeThisCentury($max);
$dateTimeThisDecade = DateTimeProvider::dateTimeThisDecade($max);
$dateTimeThisMonth = DateTimeProvider::dateTimeThisMonth($max);
$amPm = DateTimeProvider::amPm($max);
$dayOfMonth = DateTimeProvider::dayOfMonth($max);
$dayOfWeek = DateTimeProvider::dayOfWeek($max);
$month = DateTimeProvider::month($max);
$monthName = DateTimeProvider::monthName($max);
$year = DateTimeProvider::year($max);
$dateTimeThisYear = DateTimeProvider::dateTimeThisYear($max);
mt_srand();
//regenerate Random Date with same seed and same maximum end timestamp
mt_srand(1);
$this->assertEquals($unixTime, DateTimeProvider::unixTime($max));
$this->assertEquals($datetimeAD, DateTimeProvider::dateTimeAD($max));
$this->assertEquals($dateTime1, DateTimeProvider::dateTime($max));
$this->assertEquals($dateTimeBetween, DateTimeProvider::dateTimeBetween('2014-03-01 06:00:00', $max));
$this->assertEquals($date, DateTimeProvider::date('Y-m-d', $max));
$this->assertEquals($time, DateTimeProvider::time('H:i:s', $max));
$this->assertEquals($iso8601, DateTimeProvider::iso8601($max));
$this->assertEquals($dateTimeThisCentury, DateTimeProvider::dateTimeThisCentury($max));
$this->assertEquals($dateTimeThisDecade, DateTimeProvider::dateTimeThisDecade($max));
$this->assertEquals($dateTimeThisMonth, DateTimeProvider::dateTimeThisMonth($max));
$this->assertEquals($amPm, DateTimeProvider::amPm($max));
$this->assertEquals($dayOfMonth, DateTimeProvider::dayOfMonth($max));
$this->assertEquals($dayOfWeek, DateTimeProvider::dayOfWeek($max));
$this->assertEquals($month, DateTimeProvider::month($max));
$this->assertEquals($monthName, DateTimeProvider::monthName($max));
$this->assertEquals($year, DateTimeProvider::year($max));
$this->assertEquals($dateTimeThisYear, DateTimeProvider::dateTimeThisYear($max));
mt_srand();
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\HtmlLorem;
use PHPUnit\Framework\TestCase;
class HtmlLoremTest extends TestCase
{
public function testProvider()
{
$faker = new Generator();
$faker->addProvider(new HtmlLorem($faker));
$node = $faker->randomHtml(6, 10);
$this->assertStringStartsWith("<html>", $node);
$this->assertStringEndsWith("</html>\n", $node);
}
public function testRandomHtmlReturnsValidHTMLString(){
$faker = new Generator();
$faker->addProvider(new HtmlLorem($faker));
$node = $faker->randomHtml(6, 10);
$dom = new \DOMDocument();
$error = $dom->loadHTML($node);
$this->assertTrue($error);
}
}

View File

@@ -0,0 +1,76 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Image;
use PHPUnit\Framework\TestCase;
class ImageTest extends TestCase
{
public function testImageUrlUses640x680AsTheDefaultSize()
{
$this->assertRegExp('#^https://lorempixel.com/640/480/#', Image::imageUrl());
}
public function testImageUrlAcceptsCustomWidthAndHeight()
{
$this->assertRegExp('#^https://lorempixel.com/800/400/#', Image::imageUrl(800, 400));
}
public function testImageUrlAcceptsCustomCategory()
{
$this->assertRegExp('#^https://lorempixel.com/800/400/nature/#', Image::imageUrl(800, 400, 'nature'));
}
public function testImageUrlAcceptsCustomText()
{
$this->assertRegExp('#^https://lorempixel.com/800/400/nature/Faker#', Image::imageUrl(800, 400, 'nature', false, 'Faker'));
}
public function testImageUrlAddsARandomGetParameterByDefault()
{
$url = Image::imageUrl(800, 400);
$splitUrl = preg_split('/\?/', $url);
$this->assertEquals(count($splitUrl), 2);
$this->assertRegexp('#\d{5}#', $splitUrl[1]);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testUrlWithDimensionsAndBadCategory()
{
Image::imageUrl(800, 400, 'bullhonky');
}
public function testDownloadWithDefaults()
{
$url = "http://lorempixel.com/";
$curlPing = curl_init($url);
curl_setopt($curlPing, CURLOPT_TIMEOUT, 5);
curl_setopt($curlPing, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curlPing, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($curlPing);
$httpCode = curl_getinfo($curlPing, CURLINFO_HTTP_CODE);
curl_close($curlPing);
if ($httpCode < 200 | $httpCode > 300) {
$this->markTestSkipped("LoremPixel is offline, skipping image download");
}
$file = Image::image(sys_get_temp_dir());
$this->assertFileExists($file);
if (function_exists('getimagesize')) {
list($width, $height, $type, $attr) = getimagesize($file);
$this->assertEquals(640, $width);
$this->assertEquals(480, $height);
$this->assertEquals(constant('IMAGETYPE_JPEG'), $type);
} else {
$this->assertEquals('jpg', pathinfo($file, PATHINFO_EXTENSION));
}
if (file_exists($file)) {
unlink($file);
}
}
}

View File

@@ -0,0 +1,167 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Company;
use Faker\Provider\Internet;
use Faker\Provider\Lorem;
use Faker\Provider\Person;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Lorem($faker));
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function localeDataProvider()
{
$providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
$localePaths = array_filter(glob($providerPath . '/*', GLOB_ONLYDIR));
foreach ($localePaths as $path) {
$parts = explode('/', $path);
$locales[] = array($parts[count($parts) - 1]);
}
return $locales;
}
/**
* @link http://stackoverflow.com/questions/12026842/how-to-validate-an-email-address-in-php
*
* @dataProvider localeDataProvider
*/
public function testEmailIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD';
$emailAddress = $this->faker->email();
$this->assertRegExp($pattern, $emailAddress);
}
/**
* @dataProvider localeDataProvider
*/
public function testUsernameIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^[A-Za-z0-9]+([._][A-Za-z0-9]+)*$/';
$username = $this->faker->username();
$this->assertRegExp($pattern, $username);
}
/**
* @dataProvider localeDataProvider
*/
public function testDomainnameIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^[a-z]+(\.[a-z]+)+$/';
$domainName = $this->faker->domainName();
$this->assertRegExp($pattern, $domainName);
}
/**
* @dataProvider localeDataProvider
*/
public function testDomainwordIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^[a-z]+$/';
$domainWord = $this->faker->domainWord();
$this->assertRegExp($pattern, $domainWord);
}
public function loadLocalProviders($locale)
{
$providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
if (file_exists($providerPath.'/'.$locale.'/Internet.php')) {
$internet = "\\Faker\\Provider\\$locale\\Internet";
$this->faker->addProvider(new $internet($this->faker));
}
if (file_exists($providerPath.'/'.$locale.'/Person.php')) {
$person = "\\Faker\\Provider\\$locale\\Person";
$this->faker->addProvider(new $person($this->faker));
}
if (file_exists($providerPath.'/'.$locale.'/Company.php')) {
$company = "\\Faker\\Provider\\$locale\\Company";
$this->faker->addProvider(new $company($this->faker));
}
}
public function testPasswordIsValid()
{
$this->assertRegexp('/^.{6}$/', $this->faker->password(6, 6));
}
public function testSlugIsValid()
{
$pattern = '/^[a-z0-9-]+$/';
$slug = $this->faker->slug();
$this->assertSame(preg_match($pattern, $slug), 1);
}
public function testUrlIsValid()
{
$url = $this->faker->url();
$this->assertNotFalse(filter_var($url, FILTER_VALIDATE_URL));
}
public function testLocalIpv4()
{
$this->assertNotFalse(filter_var(Internet::localIpv4(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
}
public function testIpv4()
{
$this->assertNotFalse(filter_var($this->faker->ipv4(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
}
public function testIpv4NotLocalNetwork()
{
$this->assertNotRegExp('/\A0\./', $this->faker->ipv4());
}
public function testIpv4NotBroadcast()
{
$this->assertNotEquals('255.255.255.255', $this->faker->ipv4());
}
public function testIpv6()
{
$this->assertNotFalse(filter_var($this->faker->ipv6(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
}
public function testMacAddress()
{
$this->assertRegExp('/^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$/i', Internet::macAddress());
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Faker\Test\Provider;
use Faker\Factory;
use PHPUnit\Framework\TestCase;
class LocalizationTest extends TestCase
{
public function testLocalizedNameProvidersDoNotThrowErrors()
{
foreach (glob(__DIR__ . '/../../../src/Faker/Provider/*/Person.php') as $localizedPerson) {
preg_match('#/([a-zA-Z_]+)/Person\.php#', $localizedPerson, $matches);
$faker = Factory::create($matches[1]);
$this->assertNotNull($faker->name(), 'Localized Name Provider ' . $matches[1] . ' does not throw errors');
}
}
public function testLocalizedAddressProvidersDoNotThrowErrors()
{
foreach (glob(__DIR__ . '/../../../src/Faker/Provider/*/Address.php') as $localizedAddress) {
preg_match('#/([a-zA-Z_]+)/Address\.php#', $localizedAddress, $matches);
$faker = Factory::create($matches[1]);
$this->assertNotNull($faker->address(), 'Localized Address Provider ' . $matches[1] . ' does not throw errors');
}
}
}

View File

@@ -0,0 +1,109 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Lorem;
use PHPUnit\Framework\TestCase;
class LoremTest extends TestCase
{
/**
* @expectedException \InvalidArgumentException
*/
public function testTextThrowsExceptionWhenAskedTextSizeLessThan5()
{
Lorem::text(4);
}
public function testTextReturnsWordsWhenAskedSizeLessThan25()
{
$this->assertEquals('Word word word word.', TestableLorem::text(24));
}
public function testTextReturnsSentencesWhenAskedSizeLessThan100()
{
$this->assertEquals('This is a test sentence. This is a test sentence. This is a test sentence.', TestableLorem::text(99));
}
public function testTextReturnsParagraphsWhenAskedSizeGreaterOrEqualThanThan100()
{
$this->assertEquals('This is a test paragraph. It has three sentences. Exactly three.', TestableLorem::text(100));
}
public function testSentenceWithZeroNbWordsReturnsEmptyString()
{
$this->assertEquals('', Lorem::sentence(0));
}
public function testSentenceWithNegativeNbWordsReturnsEmptyString()
{
$this->assertEquals('', Lorem::sentence(-1));
}
public function testParagraphWithZeroNbSentencesReturnsEmptyString()
{
$this->assertEquals('', Lorem::paragraph(0));
}
public function testParagraphWithNegativeNbSentencesReturnsEmptyString()
{
$this->assertEquals('', Lorem::paragraph(-1));
}
public function testSentenceWithPositiveNbWordsReturnsAtLeastOneWord()
{
$sentence = Lorem::sentence(1);
$this->assertGreaterThan(1, strlen($sentence));
$this->assertGreaterThanOrEqual(1, count(explode(' ', $sentence)));
}
public function testParagraphWithPositiveNbSentencesReturnsAtLeastOneWord()
{
$paragraph = Lorem::paragraph(1);
$this->assertGreaterThan(1, strlen($paragraph));
$this->assertGreaterThanOrEqual(1, count(explode(' ', $paragraph)));
}
public function testWordssAsText()
{
$words = TestableLorem::words(2, true);
$this->assertEquals('word word', $words);
}
public function testSentencesAsText()
{
$sentences = TestableLorem::sentences(2, true);
$this->assertEquals('This is a test sentence. This is a test sentence.', $sentences);
}
public function testParagraphsAsText()
{
$paragraphs = TestableLorem::paragraphs(2, true);
$expected = "This is a test paragraph. It has three sentences. Exactly three.\n\nThis is a test paragraph. It has three sentences. Exactly three.";
$this->assertEquals($expected, $paragraphs);
}
}
class TestableLorem extends Lorem
{
public static function word()
{
return 'word';
}
public static function sentence($nbWords = 5, $variableNbWords = true)
{
return 'This is a test sentence.';
}
public static function paragraph($nbSentences = 3, $variableNbSentences = true)
{
return 'This is a test paragraph. It has three sentences. Exactly three.';
}
}

View File

@@ -0,0 +1,59 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Miscellaneous;
use PHPUnit\Framework\TestCase;
class MiscellaneousTest extends TestCase
{
public function testBoolean()
{
$this->assertContains(Miscellaneous::boolean(), array(true, false));
}
public function testMd5()
{
$this->assertRegExp('/^[a-z0-9]{32}$/', Miscellaneous::md5());
}
public function testSha1()
{
$this->assertRegExp('/^[a-z0-9]{40}$/', Miscellaneous::sha1());
}
public function testSha256()
{
$this->assertRegExp('/^[a-z0-9]{64}$/', Miscellaneous::sha256());
}
public function testLocale()
{
$this->assertRegExp('/^[a-z]{2,3}_[A-Z]{2}$/', Miscellaneous::locale());
}
public function testCountryCode()
{
$this->assertRegExp('/^[A-Z]{2}$/', Miscellaneous::countryCode());
}
public function testCountryISOAlpha3()
{
$this->assertRegExp('/^[A-Z]{3}$/', Miscellaneous::countryISOAlpha3());
}
public function testLanguage()
{
$this->assertRegExp('/^[a-z]{2}$/', Miscellaneous::languageCode());
}
public function testCurrencyCode()
{
$this->assertRegExp('/^[A-Z]{3}$/', Miscellaneous::currencyCode());
}
public function testEmoji()
{
$this->assertRegExp('/^[\x{1F600}-\x{1F637}]$/u', Miscellaneous::emoji());
}
}

View File

@@ -0,0 +1,209 @@
<?php
namespace Faker\Test\Provider;
use Faker\Calculator\Iban;
use Faker\Calculator\Luhn;
use Faker\Generator;
use Faker\Provider\Base as BaseProvider;
use Faker\Provider\DateTime as DateTimeProvider;
use Faker\Provider\Payment as PaymentProvider;
use Faker\Provider\Person as PersonProvider;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new BaseProvider($faker));
$faker->addProvider(new DateTimeProvider($faker));
$faker->addProvider(new PersonProvider($faker));
$faker->addProvider(new PaymentProvider($faker));
$this->faker = $faker;
}
public function localeDataProvider()
{
$providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
$localePaths = array_filter(glob($providerPath . '/*', GLOB_ONLYDIR));
foreach ($localePaths as $path) {
$parts = explode('/', $path);
$locales[] = array($parts[count($parts) - 1]);
}
return $locales;
}
public function loadLocalProviders($locale)
{
$providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
if (file_exists($providerPath.'/'.$locale.'/Payment.php')) {
$payment = "\\Faker\\Provider\\$locale\\Payment";
$this->faker->addProvider(new $payment($this->faker));
}
}
public function testCreditCardTypeReturnsValidVendorName()
{
$this->assertContains($this->faker->creditCardType, array('Visa', 'Visa Retired', 'MasterCard', 'American Express', 'Discover Card'));
}
public function creditCardNumberProvider()
{
return array(
array('Discover Card', '/^6011\d{12}$/'),
array('Visa', '/^4\d{15}$/'),
array('Visa Retired', '/^4\d{12}$/'),
array('MasterCard', '/^(5[1-5]|2[2-7])\d{14}$/')
);
}
/**
* @dataProvider creditCardNumberProvider
*/
public function testCreditCardNumberReturnsValidCreditCardNumber($type, $regexp)
{
$cardNumber = $this->faker->creditCardNumber($type);
$this->assertRegExp($regexp, $cardNumber);
$this->assertTrue(Luhn::isValid($cardNumber));
}
public function testCreditCardNumberCanFormatOutput()
{
$this->assertRegExp('/^6011-\d{4}-\d{4}-\d{4}$/', $this->faker->creditCardNumber('Discover Card', true));
}
public function testCreditCardExpirationDateReturnsValidDateByDefault()
{
$expirationDate = $this->faker->creditCardExpirationDate;
$this->assertTrue(intval($expirationDate->format('U')) > strtotime('now'));
$this->assertTrue(intval($expirationDate->format('U')) < strtotime('+36 months'));
}
public function testRandomCard()
{
$cardDetails = $this->faker->creditCardDetails;
$this->assertEquals(count($cardDetails), 4);
$this->assertEquals(array('type', 'number', 'name', 'expirationDate'), array_keys($cardDetails));
}
protected $ibanFormats = array(
'AD' => '/^AD\d{2}\d{4}\d{4}[A-Z0-9]{12}$/',
'AE' => '/^AE\d{2}\d{3}\d{16}$/',
'AL' => '/^AL\d{2}\d{8}[A-Z0-9]{16}$/',
'AT' => '/^AT\d{2}\d{5}\d{11}$/',
'AZ' => '/^AZ\d{2}[A-Z]{4}[A-Z0-9]{20}$/',
'BA' => '/^BA\d{2}\d{3}\d{3}\d{8}\d{2}$/',
'BE' => '/^BE\d{2}\d{3}\d{7}\d{2}$/',
'BG' => '/^BG\d{2}[A-Z]{4}\d{4}\d{2}[A-Z0-9]{8}$/',
'BH' => '/^BH\d{2}[A-Z]{4}[A-Z0-9]{14}$/',
'BR' => '/^BR\d{2}\d{8}\d{5}\d{10}[A-Z]{1}[A-Z0-9]{1}$/',
'CH' => '/^CH\d{2}\d{5}[A-Z0-9]{12}$/',
'CR' => '/^CR\d{2}\d{3}\d{14}$/',
'CY' => '/^CY\d{2}\d{3}\d{5}[A-Z0-9]{16}$/',
'CZ' => '/^CZ\d{2}\d{4}\d{6}\d{10}$/',
'DE' => '/^DE\d{2}\d{8}\d{10}$/',
'DK' => '/^DK\d{2}\d{4}\d{9}\d{1}$/',
'DO' => '/^DO\d{2}[A-Z0-9]{4}\d{20}$/',
'EE' => '/^EE\d{2}\d{2}\d{2}\d{11}\d{1}$/',
'ES' => '/^ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}$/',
'FI' => '/^FI\d{2}\d{6}\d{7}\d{1}$/',
'FR' => '/^FR\d{2}\d{5}\d{5}[A-Z0-9]{11}\d{2}$/',
'GB' => '/^GB\d{2}[A-Z]{4}\d{6}\d{8}$/',
'GE' => '/^GE\d{2}[A-Z]{2}\d{16}$/',
'GI' => '/^GI\d{2}[A-Z]{4}[A-Z0-9]{15}$/',
'GR' => '/^GR\d{2}\d{3}\d{4}[A-Z0-9]{16}$/',
'GT' => '/^GT\d{2}[A-Z0-9]{4}[A-Z0-9]{20}$/',
'HR' => '/^HR\d{2}\d{7}\d{10}$/',
'HU' => '/^HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}$/',
'IE' => '/^IE\d{2}[A-Z]{4}\d{6}\d{8}$/',
'IL' => '/^IL\d{2}\d{3}\d{3}\d{13}$/',
'IS' => '/^IS\d{2}\d{4}\d{2}\d{6}\d{10}$/',
'IT' => '/^IT\d{2}[A-Z]{1}\d{5}\d{5}[A-Z0-9]{12}$/',
'KW' => '/^KW\d{2}[A-Z]{4}\d{22}$/',
'KZ' => '/^KZ\d{2}\d{3}[A-Z0-9]{13}$/',
'LB' => '/^LB\d{2}\d{4}[A-Z0-9]{20}$/',
'LI' => '/^LI\d{2}\d{5}[A-Z0-9]{12}$/',
'LT' => '/^LT\d{2}\d{5}\d{11}$/',
'LU' => '/^LU\d{2}\d{3}[A-Z0-9]{13}$/',
'LV' => '/^LV\d{2}[A-Z]{4}[A-Z0-9]{13}$/',
'MC' => '/^MC\d{2}\d{5}\d{5}[A-Z0-9]{11}\d{2}$/',
'MD' => '/^MD\d{2}[A-Z0-9]{2}[A-Z0-9]{18}$/',
'ME' => '/^ME\d{2}\d{3}\d{13}\d{2}$/',
'MK' => '/^MK\d{2}\d{3}[A-Z0-9]{10}\d{2}$/',
'MR' => '/^MR\d{2}\d{5}\d{5}\d{11}\d{2}$/',
'MT' => '/^MT\d{2}[A-Z]{4}\d{5}[A-Z0-9]{18}$/',
'MU' => '/^MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}$/',
'NL' => '/^NL\d{2}[A-Z]{4}\d{10}$/',
'NO' => '/^NO\d{2}\d{4}\d{6}\d{1}$/',
'PK' => '/^PK\d{2}[A-Z]{4}[A-Z0-9]{16}$/',
'PL' => '/^PL\d{2}\d{8}\d{16}$/',
'PS' => '/^PS\d{2}[A-Z]{4}[A-Z0-9]{21}$/',
'PT' => '/^PT\d{2}\d{4}\d{4}\d{11}\d{2}$/',
'RO' => '/^RO\d{2}[A-Z]{4}[A-Z0-9]{16}$/',
'RS' => '/^RS\d{2}\d{3}\d{13}\d{2}$/',
'SA' => '/^SA\d{2}\d{2}[A-Z0-9]{18}$/',
'SE' => '/^SE\d{2}\d{3}\d{16}\d{1}$/',
'SI' => '/^SI\d{2}\d{5}\d{8}\d{2}$/',
'SK' => '/^SK\d{2}\d{4}\d{6}\d{10}$/',
'SM' => '/^SM\d{2}[A-Z]{1}\d{5}\d{5}[A-Z0-9]{12}$/',
'TN' => '/^TN\d{2}\d{2}\d{3}\d{13}\d{2}$/',
'TR' => '/^TR\d{2}\d{5}\d{1}[A-Z0-9]{16}$/',
'VG' => '/^VG\d{2}[A-Z]{4}\d{16}$/',
);
/**
* @dataProvider localeDataProvider
*/
public function testBankAccountNumber($locale)
{
$parts = explode('_', $locale);
$countryCode = array_pop($parts);
if (!isset($this->ibanFormats[$countryCode])) {
// No IBAN format available
return;
}
$this->loadLocalProviders($locale);
try {
$iban = $this->faker->bankAccountNumber;
} catch (\InvalidArgumentException $e) {
// Not implemented, nothing to test
$this->markTestSkipped("bankAccountNumber not implemented for $locale");
return;
}
// Test format
$this->assertRegExp($this->ibanFormats[$countryCode], $iban);
// Test checksum
$this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
}
public function ibanFormatProvider()
{
$return = array();
foreach ($this->ibanFormats as $countryCode => $regex) {
$return[] = array($countryCode, $regex);
}
return $return;
}
/**
* @dataProvider ibanFormatProvider
*/
public function testIban($countryCode, $regex)
{
$iban = $this->faker->iban($countryCode);
// Test format
$this->assertRegExp($regex, $iban);
// Test checksum
$this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Person;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* @dataProvider firstNameProvider
*/
public function testFirstName($gender, $expected)
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->assertContains($faker->firstName($gender), $expected);
}
public function firstNameProvider()
{
return array(
array(null, array('John', 'Jane')),
array('foobar', array('John', 'Jane')),
array('male', array('John')),
array('female', array('Jane')),
);
}
public function testFirstNameMale()
{
$this->assertContains(Person::firstNameMale(), array('John'));
}
public function testFirstNameFemale()
{
$this->assertContains(Person::firstNameFemale(), array('Jane'));
}
/**
* @dataProvider titleProvider
*/
public function testTitle($gender, $expected)
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->assertContains($faker->title($gender), $expected);
}
public function titleProvider()
{
return array(
array(null, array('Mr.', 'Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.')),
array('foobar', array('Mr.', 'Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.')),
array('male', array('Mr.', 'Dr.', 'Prof.')),
array('female', array('Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.')),
);
}
public function testTitleMale()
{
$this->assertContains(Person::titleMale(), array('Mr.', 'Dr.', 'Prof.'));
}
public function testTitleFemale()
{
$this->assertContains(Person::titleFemale(), array('Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.'));
}
public function testLastNameReturnsDoe()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->assertEquals($faker->lastName(), 'Doe');
}
public function testNameReturnsFirstNameAndLastName()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->assertContains($faker->name(), array('John Doe', 'Jane Doe'));
$this->assertContains($faker->name('foobar'), array('John Doe', 'Jane Doe'));
$this->assertContains($faker->name('male'), array('John Doe'));
$this->assertContains($faker->name('female'), array('Jane Doe'));
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Calculator\Luhn;
use Faker\Provider\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumberFormat()
{
$number = $this->faker->e164PhoneNumber();
$this->assertRegExp('/^\+[0-9]{11,}$/', $number);
}
public function testImeiReturnsValidNumber()
{
$imei = $this->faker->imei();
$this->assertTrue(Luhn::isValid($imei));
}
}

View File

@@ -0,0 +1,194 @@
<?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;
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\en_US\Text;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
public function testTextMaxLength()
{
$generator = new Generator();
$generator->addProvider(new Text($generator));
$generator->seed(0);
$lengths = array(10, 20, 50, 70, 90, 120, 150, 200, 500);
foreach ($lengths as $length) {
$this->assertLessThan($length, $generator->realText($length));
}
}
/**
* @expectedException \InvalidArgumentException
*/
public function testTextMaxIndex()
{
$generator = new Generator();
$generator->addProvider(new Text($generator));
$generator->seed(0);
$generator->realText(200, 11);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testTextMinIndex()
{
$generator = new Generator();
$generator->addProvider(new Text($generator));
$generator->seed(0);
$generator->realText(200, 0);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testTextMinLength()
{
$generator = new Generator();
$generator->addProvider(new Text($generator));
$generator->seed(0);
$generator->realText(9);
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\UserAgent;
use PHPUnit\Framework\TestCase;
class UserAgentTest extends TestCase
{
public function testRandomUserAgent()
{
$this->assertNotNull(UserAgent::userAgent());
}
public function testFirefoxUserAgent()
{
$this->stringContains(' Firefox/', UserAgent::firefox());
}
public function testSafariUserAgent()
{
$this->stringContains('Safari/', UserAgent::safari());
}
public function testInternetExplorerUserAgent()
{
$this->assertStringStartsWith('Mozilla/5.0 (compatible; MSIE ', UserAgent::internetExplorer());
}
public function testOperaUserAgent()
{
$this->assertStringStartsWith('Opera/', UserAgent::opera());
}
public function testChromeUserAgent()
{
$this->stringContains('(KHTML, like Gecko) Chrome/', UserAgent::chrome());
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Uuid as BaseProvider;
use PHPUnit\Framework\TestCase;
class UuidTest extends TestCase
{
public function testUuidReturnsUuid()
{
$uuid = BaseProvider::uuid();
$this->assertTrue($this->isUuid($uuid));
}
public function testUuidExpectedSeed()
{
if (pack('L', 0x6162797A) == pack('N', 0x6162797A)) {
$this->markTestSkipped('Big Endian');
}
$faker = new Generator();
$faker->seed(123);
$this->assertEquals("8e2e0c84-50dd-367c-9e66-f3ab455c78d6", BaseProvider::uuid());
$this->assertEquals("073eb60a-902c-30ab-93d0-a94db371f6c8", BaseProvider::uuid());
}
protected function isUuid($uuid)
{
return is_string($uuid) && (bool) preg_match('/^[a-f0-9]{8,8}-(?:[a-f0-9]{4,4}-){3,3}[a-f0-9]{12,12}$/i', $uuid);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\ar_JO;
use Faker\Generator;
use Faker\Provider\fi_FI\Person;
use Faker\Provider\fi_FI\Internet;
use Faker\Provider\fi_FI\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\ar_SA;
use Faker\Generator;
use Faker\Provider\ar_SA\Person;
use Faker\Provider\ar_SA\Internet;
use Faker\Provider\ar_SA\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Faker\Test\Provider\at_AT;
use Faker\Generator;
use Faker\Provider\at_AT\Payment;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testVatIsValid()
{
$vat = $this->faker->vat();
$unspacedVat = $this->faker->vat(false);
$this->assertRegExp('/^(AT U\d{8})$/', $vat);
$this->assertRegExp('/^(ATU\d{8})$/', $unspacedVat);
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Faker\Test\Provider\bg_BG;
use Faker\Generator;
use Faker\Provider\bg_BG\Payment;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testVatIsValid()
{
$vat = $this->faker->vat();
$unspacedVat = $this->faker->vat(false);
$this->assertRegExp('/^(BG \d{9,10})$/', $vat);
$this->assertRegExp('/^(BG\d{9,10})$/', $unspacedVat);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider\bn_BD;
use Faker\Generator;
use Faker\Provider\bn_BD\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testIfFirstNameMaleCanReturnData()
{
$firstNameMale = $this->faker->firstNameMale();
$this->assertNotEmpty($firstNameMale);
}
public function testIfFirstNameFemaleCanReturnData()
{
$firstNameFemale = $this->faker->firstNameFemale();
$this->assertNotEmpty($firstNameFemale);
}
}
?>

View File

@@ -0,0 +1,47 @@
<?php
namespace Faker\Test\Provider\cs_CZ;
use Faker\Generator;
use Faker\Provider\cs_CZ\Person;
use Faker\Provider\Miscellaneous;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function testBirthNumber()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Miscellaneous($faker));
for ($i = 0; $i < 1000; $i++) {
$birthNumber = $faker->birthNumber();
$birthNumber = str_replace('/', '', $birthNumber);
// check date
$year = intval(substr($birthNumber, 0, 2), 10);
$month = intval(substr($birthNumber, 2, 2), 10);
$day = intval(substr($birthNumber, 4, 2), 10);
// make 4 digit year from 2 digit representation
$year += $year < 54 ? 2000 : 1900;
// adjust special cases for month
if ($month > 50) $month -= 50;
if ($year >= 2004 && $month > 20) $month -= 20;
$this->assertTrue(checkdate($month, $day, $year), "Birth number $birthNumber: date $year/$month/$day is invalid.");
// check CRC if presented
if (strlen($birthNumber) == 10) {
$crc = intval(substr($birthNumber, -1), 10);
$refCrc = intval(substr($birthNumber, 0, -1), 10) % 11;
if ($refCrc == 10) {
$refCrc = 0;
}
$this->assertEquals($crc, $refCrc, "Birth number $birthNumber: checksum $crc doesn't match expected $refCrc.");
}
}
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\da_DK;
use Faker\Generator;
use Faker\Provider\da_DK\Person;
use Faker\Provider\da_DK\Internet;
use Faker\Provider\da_DK\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\de_AT;
use Faker\Generator;
use Faker\Provider\de_AT\Person;
use Faker\Provider\de_AT\Internet;
use Faker\Provider\de_AT\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Faker\Test\Provider\de_AT;
use Faker\Generator;
use Faker\Provider\de_AT\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumberFormat()
{
$number = $this->faker->phoneNumber;
$this->assertRegExp('/^06\d{2} \d{7}|\+43 \d{4} \d{4}(-\d{2})?$/', $number);
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace Faker\Test\Provider\de_CH;
use Faker\Generator;
use Faker\Provider\de_CH\Address;
use Faker\Provider\de_CH\Person;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function canton ()
{
$canton = $this->faker->canton();
$this->assertInternalType('array', $canton);
$this->assertCount(1, $canton);
foreach ($canton as $cantonShort => $cantonName){
$this->assertInternalType('string', $cantonShort);
$this->assertEquals(2, strlen($cantonShort));
$this->assertInternalType('string', $cantonName);
$this->assertGreaterThan(2, strlen($cantonName));
}
}
/**
* @test
*/
public function cantonName ()
{
$cantonName = $this->faker->cantonName();
$this->assertInternalType('string', $cantonName);
$this->assertGreaterThan(2, strlen($cantonName));
}
/**
* @test
*/
public function cantonShort ()
{
$cantonShort = $this->faker->cantonShort();
$this->assertInternalType('string', $cantonShort);
$this->assertEquals(2, strlen($cantonShort));
}
/**
* @test
*/
public function address (){
$address = $this->faker->address();
$this->assertInternalType('string', $address);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Test\Provider\de_CH;
use Faker\Generator;
use Faker\Provider\de_CH\Person;
use Faker\Provider\de_CH\Internet;
use Faker\Provider\de_CH\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function emailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\de_CH;
use Faker\Generator;
use Faker\Provider\de_CH\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumber()
{
$this->assertRegExp('/^0\d{2} ?\d{3} ?\d{2} ?\d{2}|\+41 ?(\(0\))?\d{2} ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->phoneNumber());
}
public function testMobileNumber()
{
$this->assertRegExp('/^07[56789] ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->mobileNumber());
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\de_DE;
use Faker\Generator;
use Faker\Provider\de_DE\Person;
use Faker\Provider\de_DE\Internet;
use Faker\Provider\de_DE\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Test\Provider\el_GR;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
private $textClass;
public function setUp()
{
$this->textClass = new \ReflectionClass('Faker\Provider\el_GR\Text');
}
protected function getMethod($name) {
$method = $this->textClass->getMethod($name);
$method->setAccessible(true);
return $method;
}
/** @test */
function testItShouldAppendEndPunctToTheEndOfString()
{
$this->assertSame(
'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ '))
);
$this->assertSame(
'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ—'))
);
$this->assertSame(
'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ,'))
);
$this->assertSame(
'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ!.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ! '))
);
$this->assertSame(
'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ; '))
);
$this->assertSame(
'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ: '))
);
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace Faker\Provider\en_AU;
use Faker\Generator;
use Faker\Provider\en_AU\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testCityPrefix()
{
$cityPrefix = $this->faker->cityPrefix();
$this->assertNotEmpty($cityPrefix);
$this->assertInternalType('string', $cityPrefix);
$this->assertRegExp('/[A-Z][a-z]+/', $cityPrefix);
}
public function testStreetSuffix()
{
$streetSuffix = $this->faker->streetSuffix();
$this->assertNotEmpty($streetSuffix);
$this->assertInternalType('string', $streetSuffix);
$this->assertRegExp('/[A-Z][a-z]+/', $streetSuffix);
}
public function testState()
{
$state = $this->faker->state();
$this->assertNotEmpty($state);
$this->assertInternalType('string', $state);
$this->assertRegExp('/[A-Z][a-z]+/', $state);
}
}
?>

View File

@@ -0,0 +1,69 @@
<?php
namespace Faker\Provider\en_CA;
use Faker\Generator;
use Faker\Provider\en_CA\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
/**
* Test the validity of province
*/
public function testProvince()
{
$province = $this->faker->province();
$this->assertNotEmpty($province);
$this->assertInternalType('string', $province);
$this->assertRegExp('/[A-Z][a-z]+/', $province);
}
/**
* Test the validity of province abbreviation
*/
public function testProvinceAbbr()
{
$provinceAbbr = $this->faker->provinceAbbr();
$this->assertNotEmpty($provinceAbbr);
$this->assertInternalType('string', $provinceAbbr);
$this->assertRegExp('/^[A-Z]{2}$/', $provinceAbbr);
}
/**
* Test the validity of postcode letter
*/
public function testPostcodeLetter()
{
$postcodeLetter = $this->faker->randomPostcodeLetter();
$this->assertNotEmpty($postcodeLetter);
$this->assertInternalType('string', $postcodeLetter);
$this->assertRegExp('/^[A-Z]{1}$/', $postcodeLetter);
}
/**
* Test the validity of Canadian postcode
*/
public function testPostcode()
{
$postcode = $this->faker->postcode();
$this->assertNotEmpty($postcode);
$this->assertInternalType('string', $postcode);
$this->assertRegExp('/^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/', $postcode);
}
}
?>

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Provider\en_GB;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
/**
*
*/
public function testPostcode()
{
$postcode = $this->faker->postcode();
$this->assertNotEmpty($postcode);
$this->assertInternalType('string', $postcode);
$this->assertRegExp('@^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$@i', $postcode);
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Provider\en_IN;
use Faker\Generator;
use Faker\Provider\en_IN\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testCity()
{
$city = $this->faker->city();
$this->assertNotEmpty($city);
$this->assertInternalType('string', $city);
$this->assertRegExp('/[A-Z][a-z]+/', $city);
}
public function testCountry()
{
$country = $this->faker->country();
$this->assertNotEmpty($country);
$this->assertInternalType('string', $country);
$this->assertRegExp('/[A-Z][a-z]+/', $country);
}
public function testLocalityName()
{
$localityName = $this->faker->localityName();
$this->assertNotEmpty($localityName);
$this->assertInternalType('string', $localityName);
$this->assertRegExp('/[A-Z][a-z]+/', $localityName);
}
public function testAreaSuffix()
{
$areaSuffix = $this->faker->areaSuffix();
$this->assertNotEmpty($areaSuffix);
$this->assertInternalType('string', $areaSuffix);
$this->assertRegExp('/[A-Z][a-z]+/', $areaSuffix);
}
}
?>

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Provider\ng_NG;
use Faker\Generator;
use Faker\Provider\en_NG\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
/**
*
*/
public function testPostcodeIsNotEmptyAndIsValid()
{
$postcode = $this->faker->postcode();
$this->assertNotEmpty($postcode);
$this->assertInternalType('string', $postcode);
}
/**
* Test the name of the Nigerian State/County
*/
public function testCountyIsAValidString()
{
$county = $this->faker->county;
$this->assertNotEmpty($county);
$this->assertInternalType('string', $county);
}
/**
* Test the name of the Nigerian Region in a State.
*/
public function testRegionIsAValidString()
{
$region = $this->faker->region;
$this->assertNotEmpty($region);
$this->assertInternalType('string', $region);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\ng_NG;
use Faker\Generator;
use Faker\Provider\en_NG\Person;
use Faker\Provider\en_NG\Internet;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
$this->assertNotEmpty($email);
$this->assertInternalType('string', $email);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider\ng_NG;
use Faker\Generator;
use Faker\Provider\en_NG\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testPersonNameIsAValidString()
{
$name = $this->faker->name;
$this->assertNotEmpty($name);
$this->assertInternalType('string', $name);
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace Faker\Test\Provider\ng_NG;
use Faker\Generator;
use Faker\Provider\en_NG\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumberReturnsPhoneNumberWithOrWithoutCountryCode()
{
$phoneNumber = $this->faker->phoneNumber();
$this->assertNotEmpty($phoneNumber);
$this->assertInternalType('string', $phoneNumber);
$this->assertRegExp('/^(0|(\+234))\s?[789][01]\d\s?(\d{3}\s?\d{4})/', $phoneNumber);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Test\Provider\en_NZ;
use Faker\Generator;
use Faker\Provider\en_NZ\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testIfPhoneNumberCanReturnData()
{
$number = $this->faker->phoneNumber;
$this->assertNotEmpty($number);
}
public function phoneNumberFormat()
{
$number = $this->faker->phoneNumber;
$this->assertRegExp('/(^\([0]\d{1}\))(\d{7}$)|(^\([0][2]\d{1}\))(\d{6,8}$)|([0][8][0][0])([\s])(\d{5,8}$)/', $number);
}
}
?>

View File

@@ -0,0 +1,50 @@
<?php
namespace Faker\Test\Provider\en_PH;
use Faker\Generator;
use Faker\Provider\en_PH\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testProvince()
{
$province = $this->faker->province();
$this->assertNotEmpty($province);
$this->assertInternalType('string', $province);
}
public function testCity()
{
$city = $this->faker->city();
$this->assertNotEmpty($city);
$this->assertInternalType('string', $city);
}
public function testMunicipality()
{
$municipality = $this->faker->municipality();
$this->assertNotEmpty($municipality);
$this->assertInternalType('string', $municipality);
}
public function testBarangay()
{
$barangay = $this->faker->barangay();
$this->assertInternalType('string', $barangay);
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Faker\Test\Provider\en_SG;
use Faker\Factory;
use Faker\Provider\en_SG\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
public function setUp()
{
$faker = Factory::create('en_SG');
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testStreetNumber()
{
$this->assertRegExp('/^\d{2,3}$/', $this->faker->streetNumber());
}
public function testBlockNumber()
{
$this->assertRegExp('/^Blk\s*\d{2,3}[A-H]*$/i', $this->faker->blockNumber());
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Faker\Test\Provider\en_SG;
use Faker\Factory;
use Faker\Provider\en_SG\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
private $faker;
public function setUp()
{
$this->faker = Factory::create('en_SG');
$this->faker->seed(1);
$this->faker->addProvider(new PhoneNumber($this->faker));
}
// http://en.wikipedia.org/wiki/Telephone_numbers_in_Singapore#Numbering_plan
// y means 0 to 8 only
// x means 0 to 9
public function testMobilePhoneNumberStartWith9Returns9yxxxxxx()
{
$startsWith9 = false;
while (!$startsWith9) {
$mobileNumber = $this->faker->mobileNumber();
$startsWith9 = preg_match('/^(\+65|65)?\s*9/', $mobileNumber);
}
$this->assertRegExp('/^(\+65|65)?\s*9\s*[0-8]{3}\s*\d{4}$/', $mobileNumber);
}
// http://en.wikipedia.org/wiki/Telephone_numbers_in_Singapore#Numbering_plan
// z means 1 to 9 only
// x means 0 to 9
public function testMobilePhoneNumberStartWith7Or8Returns7Or8zxxxxxx()
{
$startsWith7Or8 = false;
while (!$startsWith7Or8) {
$mobileNumber = $this->faker->mobileNumber();
$startsWith7Or8 = preg_match('/^(\+65|65)?\s*[7-8]/', $mobileNumber);
}
$this->assertRegExp('/^(\+65|65)?\s*[7-8]\s*[1-9]{3}\s*\d{4}$/', $mobileNumber);
}
}

View File

@@ -0,0 +1,53 @@
<?php
namespace Faker\Test\Provider\en_UG;
use Faker\Generator;
use Faker\Provider\en_UG\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function testCityName()
{
$city = $this->faker->cityName();
$this->assertNotEmpty($city);
$this->assertInternalType('string', $city);
}
/**
* @test
*/
public function testDistrict()
{
$district = $this->faker->district();
$this->assertNotEmpty($district);
$this->assertInternalType('string', $district);
}
/**
* @test
*/
public function testRegion()
{
$region = $this->faker->region();
$this->assertNotEmpty($region);
$this->assertInternaltype('string', $region);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\en_US;
use Faker\Provider\en_US\Company;
use Faker\Generator;
class CompanyTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
/**
* @link https://stackoverflow.com/questions/4242433/regex-for-ein-number-and-ssn-number-format-in-jquery/35471665#35471665
*/
public function testEin()
{
$number = $this->faker->ein;
// should be in the format ##-#######, with a valid prefix
$this->assertRegExp('/^(0[1-6]||1[0-6]|2[0-7]|[35]\d|[468][0-8]|7[1-7]|9[0-58-9])-\d{7}$/', $number);
}
}

View File

@@ -0,0 +1,85 @@
<?php
namespace Faker\Provider\en_US;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testBankAccountNumber()
{
$accNo = $this->faker->bankAccountNumber;
$this->assertTrue(ctype_digit($accNo));
$this->assertLessThanOrEqual(17, strlen($accNo));
}
public function testBankRoutingNumber()
{
$routingNo = $this->faker->bankRoutingNumber;
$this->assertRegExp('/^\d{9}$/', $routingNo);
$this->assertEquals(Payment::calculateRoutingNumberChecksum($routingNo), $routingNo[8]);
}
public function routingNumberProvider()
{
return array(
array('122105155'),
array('082000549'),
array('121122676'),
array('122235821'),
array('102101645'),
array('102000021'),
array('123103729'),
array('071904779'),
array('081202759'),
array('074900783'),
array('104000029'),
array('073000545'),
array('101000187'),
array('042100175'),
array('083900363'),
array('091215927'),
array('091300023'),
array('091000022'),
array('081000210'),
array('101200453'),
array('092900383'),
array('104000029'),
array('121201694'),
array('107002312'),
array('091300023'),
array('041202582'),
array('042000013'),
array('123000220'),
array('091408501'),
array('064000059'),
array('124302150'),
array('125000105'),
array('075000022'),
array('307070115'),
array('091000022'),
);
}
/**
* @dataProvider routingNumberProvider
*/
public function testCalculateRoutingNumberChecksum($routingNo)
{
$this->assertEquals($routingNo[8], Payment::calculateRoutingNumberChecksum($routingNo), $routingNo);
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace Faker\Test\Provider\en_US;
use Faker\Provider\en_US\Person;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testSsn()
{
for ($i = 0; $i < 100; $i++) {
$number = $this->faker->ssn;
// should be in the format ###-##-####
$this->assertRegExp('/^[0-9]{3}-[0-9]{2}-[0-9]{4}$/', $number);
$parts = explode("-", $number);
// first part must be between 001 and 899, excluding 666
$this->assertNotEquals(666, $parts[0]);
$this->assertGreaterThan(0, $parts[0]);
$this->assertLessThan(900, $parts[0]);
// second part must be between 01 and 99
$this->assertGreaterThan(0, $parts[1]);
$this->assertLessThan(100, $parts[1]);
// the third part must be between 0001 and 9999
$this->assertGreaterThan(0, $parts[2]);
$this->assertLessThan(10000, $parts[2]);
}
}
}

View File

@@ -0,0 +1,85 @@
<?php
namespace Faker\Test\Provider\en_US;
use Faker\Generator;
use Faker\Provider\en_US\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumber()
{
for ($i = 0; $i < 100; $i++) {
$number = $this->faker->phoneNumber;
$baseNumber = preg_replace('/ *x.*$/', '', $number); // Remove possible extension
$digits = array_values(array_filter(str_split($baseNumber), 'ctype_digit'));
// Prefix '1' allowed
if (count($digits) === 11) {
$this->assertEquals('1', $digits[0]);
$digits = array_slice($digits, 1);
}
// 10 digits
$this->assertEquals(10, count($digits));
// Last two digits of area code cannot be identical
$this->assertNotEquals($digits[1], $digits[2]);
// Last two digits of exchange code cannot be 1
if ($digits[4] === 1) {
$this->assertNotEquals($digits[4], $digits[5]);
}
// Test format
$this->assertRegExp('/^(\+?1)?([ -.]*\d{3}[ -.]*| *\(\d{3}\) *)\d{3}[-.]?\d{4}$/', $baseNumber);
}
}
public function testTollFreeAreaCode()
{
$this->assertContains($this->faker->tollFreeAreaCode, array(800, 822, 833, 844, 855, 866, 877, 888, 880, 887, 889));
}
public function testTollFreePhoneNumber()
{
for ($i = 0; $i < 100; $i++) {
$number = $this->faker->tollFreePhoneNumber;
$digits = array_values(array_filter(str_split($number), 'ctype_digit'));
// Prefix '1' allowed
if (count($digits) === 11) {
$this->assertEquals('1', $digits[0]);
$digits = array_slice($digits, 1);
}
// 10 digits
$this->assertEquals(10, count($digits));
$areaCode = $digits[0] . $digits[1] . $digits[2];
$this->assertContains($areaCode, array('800', '822', '833', '844', '855', '866', '877', '888', '880', '887', '889'));
// Last two digits of exchange code cannot be 1
if ($digits[4] === 1) {
$this->assertNotEquals($digits[4], $digits[5]);
}
// Test format
$this->assertRegExp('/^(\+?1)?([ -.]*\d{3}[ -.]*| *\(\d{3}\) *)\d{3}[-.]?\d{4}$/', $number);
}
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\Company;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testGenerateValidCompanyNumber()
{
$companyRegNo = $this->faker->companyNumber();
$this->assertEquals(14, strlen($companyRegNo));
$this->assertRegExp('#^\d{4}/\d{6}/\d{2}$#', $companyRegNo);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\Person;
use Faker\Provider\en_ZA\Internet;
use Faker\Provider\en_ZA\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,69 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\Person;
use Faker\Provider\DateTime;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new DateTime($faker));
$this->faker = $faker;
}
public function testIdNumberWithDefaults()
{
$idNumber = $this->faker->idNumber();
$this->assertEquals(13, strlen($idNumber));
$this->assertRegExp('#^\d{13}$#', $idNumber);
$this->assertInternalType('string', $idNumber);
}
public function testIdNumberForMales()
{
$idNumber = $this->faker->idNumber(new \DateTime(), true, 'male');
$genderDigit = substr($idNumber, 6, 1);
$this->assertContains($genderDigit, array('5', '6', '7', '8', '9'));
}
public function testIdNumberForFemales()
{
$idNumber = $this->faker->idNumber(new \DateTime(), true, 'female');
$genderDigit = substr($idNumber, 6, 1);
$this->assertContains($genderDigit, array('0', '1', '2', '3', '4'));
}
public function testLicenceCode()
{
$validLicenceCodes = array('A', 'A1', 'B', 'C', 'C1', 'C2', 'EB', 'EC', 'EC1', 'I', 'L', 'L1');
$this->assertContains($this->faker->licenceCode, $validLicenceCodes);
}
public function testMaleTitles()
{
$validMaleTitles = array('Mr.', 'Dr.', 'Prof.', 'Rev.', 'Hon.');
$this->assertContains(Person::titleMale(), $validMaleTitles);
}
public function testFemaleTitles()
{
$validateFemaleTitles = array('Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.', 'Rev.', 'Hon.');
$this->assertContains(Person::titleFemale(), $validateFemaleTitles);
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumber()
{
for ($i = 0; $i < 10; $i++) {
$number = $this->faker->phoneNumber;
$digits = array_values(array_filter(str_split($number), 'ctype_digit'));
// 10 digits
if($digits[0] = 2 && $digits[1] == 7) {
$this->assertLessThanOrEqual(11, count($digits));
} else {
$this->assertGreaterThanOrEqual(10, count($digits));
}
}
}
public function testTollFreePhoneNumber()
{
for ($i = 0; $i < 10; $i++) {
$number = $this->faker->tollFreeNumber;
$digits = array_values(array_filter(str_split($number), 'ctype_digit'));
if (count($digits) === 11) {
$this->assertEquals('0', $digits[0]);
}
$areaCode = $digits[0] . $digits[1] . $digits[2] . $digits[3];
$this->assertContains($areaCode, array('0800', '0860', '0861', '0862'));
}
}
public function testCellPhoneNumber()
{
for ($i = 0; $i < 10; $i++) {
$number = $this->faker->mobileNumber;
$digits = array_values(array_filter(str_split($number), 'ctype_digit'));
if($digits[0] = 2 && $digits[1] == 7) {
$this->assertLessThanOrEqual(11, count($digits));
} else {
$this->assertGreaterThanOrEqual(10, count($digits));
}
$this->assertRegExp('/^(\+27|27)?(\()?0?([6][0-4]|[7][1-9]|[8][1-9])(\))?( |-|\.|_)?(\d{3})( |-|\.|_)?(\d{4})/', $number);
}
}
}

View File

@@ -0,0 +1,61 @@
<?php
namespace Faker\Test\Provider\es_ES;
use Faker\Generator;
use Faker\Provider\es_ES\Payment;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testVAT()
{
$vat = $this->faker->vat();
$this->assertTrue($this->isValidCIF($vat));
}
/**
* Validation taken from https://github.com/amnesty/drupal-nif-nie-cif-validator/
* @link https://github.com/amnesty/drupal-nif-nie-cif-validator/blob/master/includes/nif-nie-cif.php
*/
function isValidCIF($docNumber)
{
$fixedDocNumber = strtoupper($docNumber);
return $this->isValidCIFFormat($fixedDocNumber);
}
function isValidCIFFormat($docNumber)
{
return $this->respectsDocPattern($docNumber, '/^[PQSNWR][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z0-9]/')
||
$this->respectsDocPattern($docNumber, '/^[ABCDEFGHJUV][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/');
}
function respectsDocPattern($givenString, $pattern)
{
$isValid = FALSE;
$fixedString = strtoupper($givenString);
if (is_int(substr($fixedString, 0, 1))) {
$fixedString = substr("000000000" . $givenString, -9);
}
if (preg_match($pattern, $fixedString)) {
$isValid = TRUE;
}
return $isValid;
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Faker\Test\Provider\es_ES;
use Faker\Generator;
use Faker\Provider\es_ES\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->seed(1);
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testDNI()
{
$dni = $this->faker->dni;
$this->assertTrue($this->isValidDNI($dni));
}
// validation taken from http://kiwwito.com/php-function-for-spanish-dni-nie-validation/
public function isValidDNI($string)
{
if (strlen($string) != 9 ||
preg_match('/^[XYZ]?([0-9]{7,8})([A-Z])$/i', $string, $matches) !== 1) {
return false;
}
$map = 'TRWAGMYFPDXBNJZSQVHLCKE';
list(, $number, $letter) = $matches;
return strtoupper($letter) === $map[((int) $number) % 23];
}
public function testLicenceCode()
{
$validLicenceCodes = array('AM', 'A1', 'A2', 'A','B', 'B+E', 'C1', 'C1+E', 'C', 'C+E', 'D1', 'D1+E', 'D', 'D+E');
$this->assertContains($this->faker->licenceCode, $validLicenceCodes);
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Faker\Test\Provider\es_ES;
use Faker\Generator;
use Faker\Provider\es_ES\Text;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Text($faker));
$this->faker = $faker;
}
public function testText()
{
$this->assertNotSame('', $this->faker->realtext(200, 2));
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Faker\Test\Provider\es_PE;
use Faker\Generator;
use Faker\Provider\es_PE\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->seed(1);
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testDNI()
{
$dni = $this->faker->dni;
$this->assertRegExp('/\A[0-9]{8}\Z/', $dni);
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* Created by Domingo Oropeza <dioh_@hotmail.com> for Faker
* Date: 01/09/2017
* Time: 09:45 PM
*/
namespace Faker\Test\Provider\es_VE;
use Faker\Generator;
use Faker\Provider\es_VE\Company;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->seed(1);
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
/**
* national Id format validator
*/
public function testNationalId()
{
$pattern = '/^[VJGECP]-?\d{8}-?\d$/';
$rif = $this->faker->taxpayerIdentificationNumber;
$this->assertRegExp($pattern, $rif);
$rif = $this->faker->taxpayerIdentificationNumber('-');
$this->assertRegExp($pattern, $rif);
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* Created by Domingo Oropeza for Faker
* Date: 01/09/2017
* Time: 11:02 PM
*/
namespace Faker\Test\Provider\es_VE;
use Faker\Generator;
use Faker\Provider\es_VE\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->seed(1);
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
/**
* national Id format validator
*/
public function testNationalId()
{
$pattern = '/(?:^V-?\d{5,9}$)|(?:^E-?\d{8,9}$)/';
$cedula = $this->faker->nationalId;
$this->assertRegExp($pattern, $cedula);
$cedula = $this->faker->nationalId('-');
$this->assertRegExp($pattern, $cedula);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\fi_FI;
use Faker\Generator;
use Faker\Provider\fi_FI\Person;
use Faker\Provider\fi_FI\Internet;
use Faker\Provider\fi_FI\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,82 @@
<?php
namespace Faker\Test\Provider\fi_FI;
use Faker\Generator;
use Faker\Provider\DateTime;
use Faker\Provider\fi_FI\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/** @var Generator */
protected $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new DateTime($faker));
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function provideSeedAndExpectedReturn()
{
return array(
array(1, '1800-01-01', '010100+5207'),
array(2, '1930-08-08', '080830-508R'),
array(3, '1999-12-31', '311299-409D'),
array(4, '2000-01-01', '010100A039P'),
array(5, '2015-06-17', '170615A690X')
);
}
/**
* @dataProvider provideSeedAndExpectedReturn
*/
public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected)
{
$faker = $this->faker;
$faker->seed($seed);
$pin = $faker->personalIdentityNumber(\DateTime::createFromFormat('Y-m-d', $birthdate));
$this->assertEquals($expected, $pin);
}
public function testPersonalIdentityNumberGeneratesCompliantNumbers()
{
if (strtotime('1800-01-01 00:00:00')) {
$min="1900";
$max="2099";
for ($i = 0; $i < 10; $i++) {
$birthdate = $this->faker->dateTimeBetween('1800-01-01 00:00:00', '1899-12-31 23:59:59');
$pin = $this->faker->personalIdentityNumber($birthdate, NULL, true);
$this->assertRegExp('/^[0-9]{6}\+[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
}
} else { // timestamp limit for 32-bit computer
$min="1902";
$max="2037";
}
for ($i = 0; $i < 10; $i++) {
$birthdate = $this->faker->dateTimeBetween("$min-01-01 00:00:00", '1999-12-31 23:59:59');
$pin = $this->faker->personalIdentityNumber($birthdate);
$this->assertRegExp('/^[0-9]{6}-[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
}
for ($i = 0; $i < 10; $i++) {
$birthdate = $this->faker->dateTimeBetween('2000-01-01 00:00:00', "$max-12-31 23:59:59");
$pin = $this->faker->personalIdentityNumber($birthdate);
$this->assertRegExp('/^[0-9]{6}A[0-9]{3}[0-9ABCDEFHJKLMNPRSTUVWXY]$/', $pin);
}
}
public function testPersonalIdentityNumberGeneratesOddValuesForMales()
{
$pin = $this->faker->personalIdentityNumber(null, 'male');
$this->assertEquals(1, $pin{9} % 2);
}
public function testPersonalIdentityNumberGeneratesEvenValuesForFemales()
{
$pin = $this->faker->personalIdentityNumber(null, 'female');
$this->assertEquals(0, $pin{9} % 2);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider\fr_BE;
use Faker\Generator;
use Faker\Provider\fr_BE\Payment;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testVatIsValid()
{
$vat = $this->faker->vat();
$unspacedVat = $this->faker->vat(false);
$this->assertRegExp('/^(BE 0\d{9})$/', $vat);
$this->assertRegExp('/^(BE0\d{9})$/', $unspacedVat);
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace Faker\Test\Provider\fr_CH;
use Faker\Generator;
use Faker\Provider\fr_CH\Address;
use Faker\Provider\fr_CH\Person;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function canton ()
{
$canton = $this->faker->canton();
$this->assertInternalType('array', $canton);
$this->assertCount(1, $canton);
foreach ($canton as $cantonShort => $cantonName){
$this->assertInternalType('string', $cantonShort);
$this->assertEquals(2, strlen($cantonShort));
$this->assertInternalType('string', $cantonName);
$this->assertGreaterThan(2, strlen($cantonName));
}
}
/**
* @test
*/
public function cantonName ()
{
$cantonName = $this->faker->cantonName();
$this->assertInternalType('string', $cantonName);
$this->assertGreaterThan(2, strlen($cantonName));
}
/**
* @test
*/
public function cantonShort ()
{
$cantonShort = $this->faker->cantonShort();
$this->assertInternalType('string', $cantonShort);
$this->assertEquals(2, strlen($cantonShort));
}
/**
* @test
*/
public function address (){
$address = $this->faker->address();
$this->assertInternalType('string', $address);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Test\Provider\fr_CH;
use Faker\Generator;
use Faker\Provider\fr_CH\Person;
use Faker\Provider\fr_CH\Internet;
use Faker\Provider\fr_CH\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function emailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\fr_CH;
use Faker\Generator;
use Faker\Provider\fr_CH\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumber()
{
$this->assertRegExp('/^0\d{2} ?\d{3} ?\d{2} ?\d{2}|\+41 ?(\(0\))?\d{2} ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->phoneNumber());
}
public function testMobileNumber()
{
$this->assertRegExp('/^07[56789] ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->mobileNumber());
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use Faker\Generator;
use Faker\Provider\fr_FR\Address;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function testSecondaryAddress()
{
$secondaryAdress = $this->faker->secondaryAddress();
$this->assertNotEmpty($secondaryAdress);
$this->assertInternalType('string', $secondaryAdress);
}
}

View File

@@ -0,0 +1,75 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use Faker\Calculator\Luhn;
use Faker\Generator;
use Faker\Provider\fr_FR\Company;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testSiretReturnsAValidSiret()
{
$siret = $this->faker->siret(false);
$this->assertRegExp("/^\d{14}$/", $siret);
$this->assertTrue(Luhn::isValid($siret));
}
public function testSiretReturnsAWellFormattedSiret()
{
$siret = $this->faker->siret();
$this->assertRegExp("/^\d{3}\s\d{3}\s\d{3}\s\d{5}$/", $siret);
$siret = str_replace(' ', '', $siret);
$this->assertTrue(Luhn::isValid($siret));
}
public function testSirenReturnsAValidSiren()
{
$siren = $this->faker->siren(false);
$this->assertRegExp("/^\d{9}$/", $siren);
$this->assertTrue(Luhn::isValid($siren));
}
public function testSirenReturnsAWellFormattedSiren()
{
$siren = $this->faker->siren();
$this->assertRegExp("/^\d{3}\s\d{3}\s\d{3}$/", $siren);
$siren = str_replace(' ', '', $siren);
$this->assertTrue(Luhn::isValid($siren));
}
public function testCatchPhraseReturnsValidCatchPhrase()
{
$this->assertTrue(TestableCompany::isCatchPhraseValid($this->faker->catchPhrase()));
}
public function testIsCatchPhraseValidReturnsFalseWhenAWordsAppearsTwice()
{
$isCatchPhraseValid = TestableCompany::isCatchPhraseValid('La sécurité de rouler en toute sécurité');
$this->assertFalse($isCatchPhraseValid);
}
public function testIsCatchPhraseValidReturnsTrueWhenNoWordAppearsTwice()
{
$isCatchPhraseValid = TestableCompany::isCatchPhraseValid('La sécurité de rouler en toute simplicité');
$this->assertTrue($isCatchPhraseValid);
}
}
class TestableCompany extends Company
{
public static function isCatchPhraseValid($catchPhrase)
{
return parent::isCatchPhraseValid($catchPhrase);
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use Faker\Calculator\Luhn;
use Faker\Generator;
use Faker\Provider\fr_FR\Payment;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testFormattedVat()
{
$vat = $this->faker->vat(true);
$this->assertRegExp("/^FR\s\w{2}\s\d{3}\s\d{3}\s\d{3}$/", $vat);
$vat = str_replace(' ', '', $vat);
$siren = substr($vat, 4, 12);
$this->assertTrue(Luhn::isValid($siren));
$key = (int) substr($siren, 2, 2);
if ($key === 0) {
$this->assertEqual($key, (12 + 3 * ($siren % 97)) % 97);
}
}
public function testUnformattedVat()
{
$vat = $this->faker->vat(false);
$this->assertRegExp("/^FR\w{2}\d{9}$/", $vat);
$siren = substr($vat, 4, 12);
$this->assertTrue(Luhn::isValid($siren));
$key = (int) substr($siren, 2, 2);
if ($key === 0) {
$this->assertEqual($key, (12 + 3 * ($siren % 97)) % 97);
}
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use Faker\Generator;
use Faker\Provider\fr_FR\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testNIRReturnsTheRightGender()
{
$nir = $this->faker->nir(\Faker\Provider\Person::GENDER_MALE);
$this->assertStringStartsWith('1', $nir);
}
public function testNIRReturnsTheRightPattern()
{
$nir = $this->faker->nir;
$this->assertRegExp("/^[12]\d{5}[0-9A-B]\d{8}$/", $nir);
}
public function testNIRFormattedReturnsTheRightPattern()
{
$nir = $this->faker->nir(null, true);
$this->assertRegExp("/^[12]\s\d{2}\s\d{2}\s\d{1}[0-9A-B]\s\d{3}\s\d{3}\s\d{2}$/", $nir);
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use Faker\Generator;
use Faker\Provider\fr_FR\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testMobileNumber()
{
$mobileNumber = $this->faker->mobileNumber();
$this->assertRegExp('/^(\+33 |\+33 \(0\)|0)(6|7)(?:(\s{1})?\d{2}){4}$/', $mobileNumber);
}
public function testMobileNumber07Format()
{
$mobileNumberFormat = $this->faker->phoneNumber07();
$this->assertRegExp('/^([3-9]{1})\d(\d{2}){3}$/', $mobileNumberFormat);
}
public function testMobileNumber07WithSeparatorFormat()
{
$mobileNumberFormat = $this->faker->phoneNumber07WithSeparator();
$this->assertRegExp('/^([3-9]{1})\d( \d{2}){3}$/', $mobileNumberFormat);
}
public function testServiceNumber()
{
$serviceNumber = $this->faker->serviceNumber();
$this->assertRegExp('/^(\+33 |\+33 \(0\)|0)8(?:(\s{1})?\d{2}){4}$/', $serviceNumber);
}
public function testServiceNumberFormat()
{
$serviceNumberFormat = $this->faker->phoneNumber08();
$this->assertRegExp('/^((0|1|2)\d{1}|9[^46])\d{6}$/', $serviceNumberFormat);
}
public function testServiceNumberWithSeparatorFormat()
{
$serviceNumberFormat = $this->faker->phoneNumber08WithSeparator();
$this->assertRegExp('/^((0|1|2)\d{1}|9[^46])( \d{2}){3}$/', $serviceNumberFormat);
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
private $textClass;
public function setUp()
{
$this->textClass = new \ReflectionClass('Faker\Provider\fr_FR\Text');
}
protected function getMethod($name) {
$method = $this->textClass->getMethod($name);
$method->setAccessible(true);
return $method;
}
/** @test */
function testItShouldAppendEndPunctToTheEndOfString()
{
$this->assertSame(
'Que faisaient-elles maintenant? À.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Que faisaient-elles maintenant? À '))
);
$this->assertSame(
'Que faisaient-elles maintenant? À.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Que faisaient-elles maintenant? À— '))
);
$this->assertSame(
'Que faisaient-elles maintenant? À.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Que faisaient-elles maintenant? À,'))
);
$this->assertSame(
'Que faisaient-elles maintenant? À!.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Que faisaient-elles maintenant? À! '))
);
$this->assertSame(
'Que faisaient-elles maintenant? À.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Que faisaient-elles maintenant? À: '))
);
$this->assertSame(
'Que faisaient-elles maintenant? À.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Que faisaient-elles maintenant? À; '))
);
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace Faker\Test\Provider\id_ID;
use Faker\Generator;
use Faker\Provider\id_ID\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testIfFirstNameMaleCanReturnData()
{
$firstNameMale = $this->faker->firstNameMale();
$this->assertNotEmpty($firstNameMale);
}
public function testIfLastNameMaleCanReturnData()
{
$lastNameMale = $this->faker->lastNameMale();
$this->assertNotEmpty($lastNameMale);
}
public function testIfFirstNameFemaleCanReturnData()
{
$firstNameFemale = $this->faker->firstNameFemale();
$this->assertNotEmpty($firstNameFemale);
}
public function testIfLastNameFemaleCanReturnData()
{
$lastNameFemale = $this->faker->lastNameFemale();
$this->assertNotEmpty($lastNameFemale);
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace Faker\Test\Provider\it_CH;
use Faker\Generator;
use Faker\Provider\it_CH\Address;
use Faker\Provider\it_CH\Person;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function canton ()
{
$canton = $this->faker->canton();
$this->assertInternalType('array', $canton);
$this->assertCount(1, $canton);
foreach ($canton as $cantonShort => $cantonName){
$this->assertInternalType('string', $cantonShort);
$this->assertEquals(2, strlen($cantonShort));
$this->assertInternalType('string', $cantonName);
$this->assertGreaterThan(2, strlen($cantonName));
}
}
/**
* @test
*/
public function cantonName ()
{
$cantonName = $this->faker->cantonName();
$this->assertInternalType('string', $cantonName);
$this->assertGreaterThan(2, strlen($cantonName));
}
/**
* @test
*/
public function cantonShort ()
{
$cantonShort = $this->faker->cantonShort();
$this->assertInternalType('string', $cantonShort);
$this->assertEquals(2, strlen($cantonShort));
}
/**
* @test
*/
public function address (){
$address = $this->faker->address();
$this->assertInternalType('string', $address);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Test\Provider\it_CH;
use Faker\Generator;
use Faker\Provider\it_CH\Person;
use Faker\Provider\it_CH\Internet;
use Faker\Provider\it_CH\Company;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new Internet($faker));
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
/**
* @test
*/
public function emailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\it_CH;
use Faker\Generator;
use Faker\Provider\it_CH\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
/**
* @var Faker\Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumber()
{
$this->assertRegExp('/^0\d{2} ?\d{3} ?\d{2} ?\d{2}|\+41 ?(\(0\))?\d{2} ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->phoneNumber());
}
public function testMobileNumber()
{
$this->assertRegExp('/^07[56789] ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->mobileNumber());
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Faker\Test\Provider\it_IT;
use Faker\Generator;
use Faker\Provider\it_IT\Company;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testIfTaxIdCanReturnData()
{
$vatId = $this->faker->vatId();
$this->assertRegExp('/^IT[0-9]{11}$/', $vatId);
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Faker\Test\Provider\it_IT;
use Faker\Generator;
use Faker\Provider\it_IT\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testIfTaxIdCanReturnData()
{
$taxId = $this->faker->taxId();
$this->assertRegExp('/^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/', $taxId);
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace Faker\Test\Provider\ja_JP;
use Faker\Generator;
use Faker\Provider\ja_JP\Internet;
use PHPUnit\Framework\TestCase;
class InternetTest extends TestCase
{
public function testUserName()
{
$faker = new Generator();
$faker->addProvider(new Internet($faker));
$faker->seed(1);
$this->assertEquals('akira72', $faker->userName);
}
public function testDomainName()
{
$faker = new Generator();
$faker->addProvider(new Internet($faker));
$faker->seed(1);
$this->assertEquals('nakajima.com', $faker->domainName);
}
}

View File

@@ -0,0 +1,55 @@
<?php
namespace Faker\Test\Provider\ja_JP;
use Faker\Generator;
use Faker\Provider\ja_JP\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function testKanaNameMaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('アオタ ミノル', $faker->kanaName('male'));
}
public function testKanaNameFemaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('アオタ ミキ', $faker->kanaName('female'));
}
public function testFirstKanaNameMaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('ヒデキ', $faker->firstKanaName('male'));
}
public function testFirstKanaNameFemaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('マアヤ', $faker->firstKanaName('female'));
}
public function testLastKanaNameReturnsNakajima()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('ナカジマ', $faker->lastKanaName);
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Faker\Test\Provider\ja_JP;
use Faker\Generator;
use Faker\Provider\ja_JP\PhoneNumber;
use PHPUnit\Framework\TestCase;
class PhoneNumberTest extends TestCase
{
public function testPhoneNumber()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
for ($i = 0; $i < 10; $i++) {
$phoneNumber = $faker->phoneNumber;
$this->assertNotEmpty($phoneNumber);
$this->assertRegExp('/^0\d{1,4}-\d{1,4}-\d{3,4}$/', $phoneNumber);
}
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Test\Provider\ka_GE;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
private $textClass;
public function setUp()
{
$this->textClass = new \ReflectionClass('Faker\Provider\el_GR\Text');
}
protected function getMethod($name) {
$method = $this->textClass->getMethod($name);
$method->setAccessible(true);
return $method;
}
/** @test */
function testItShouldAppendEndPunctToTheEndOfString()
{
$this->assertSame(
'ჭეშმარიტია. ჩვენც ისე.',
$this->getMethod('appendEnd')->invokeArgs(null, array('ჭეშმარიტია. ჩვენც ისე '))
);
$this->assertSame(
'ჭეშმარიტია. ჩვენც ისე.',
$this->getMethod('appendEnd')->invokeArgs(null, array('ჭეშმარიტია. ჩვენც ისე— '))
);
$this->assertSame(
'ჭეშმარიტია. ჩვენც ისე.',
$this->getMethod('appendEnd')->invokeArgs(null, array('ჭეშმარიტია. ჩვენც ისე, '))
);
$this->assertSame(
'ჭეშმარიტია. ჩვენც ისე!.',
$this->getMethod('appendEnd')->invokeArgs(null, array('ჭეშმარიტია. ჩვენც ისე! '))
);
$this->assertSame(
'ჭეშმარიტია. ჩვენც ისე.',
$this->getMethod('appendEnd')->invokeArgs(null, array('ჭეშმარიტია. ჩვენც ისე; '))
);
$this->assertSame(
'ჭეშმარიტია. ჩვენც ისე.',
$this->getMethod('appendEnd')->invokeArgs(null, array('ჭეშმარიტია. ჩვენც ისე: '))
);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Faker\Test\Provider\kk_KZ;
use Faker\Generator;
use Faker\Provider\kk_KZ\Company;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
/**
* {@inheritdoc}
*/
public function setUp()
{
$this->faker = new Generator();
$this->faker->addProvider(new Company($this->faker));
}
public function testBusinessIdentificationNumberIsValid()
{
$registrationDate = new \DateTime('now');
$businessIdentificationNumber = $this->faker->businessIdentificationNumber($registrationDate);
$registrationDateAsString = $registrationDate->format('ym');
$this->assertRegExp(
"/^(" . $registrationDateAsString . ")([4-6]{1})([0-3]{1})(\\d{6})$/",
$businessIdentificationNumber
);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider\kk_KZ;
use Faker\Generator;
use Faker\Provider\DateTime;
use Faker\Provider\kk_KZ\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* {@inheritdoc}
*/
public function setUp()
{
$this->faker = new Generator();
$this->faker->addProvider(new Person($this->faker));
}
public function testIndividualIdentificationNumberIsValid()
{
$birthDate = DateTime::dateTimeBetween('-30 years', '-10 years');
$individualIdentificationNumber = $this->faker->individualIdentificationNumber($birthDate);
$controlDigit = Person::checkSum($individualIdentificationNumber);
$this->assertSame($controlDigit, (int)substr($individualIdentificationNumber, 11, 1));
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Test\Provider\kk_KZ;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
private $textClass;
public function setUp()
{
$this->textClass = new \ReflectionClass('Faker\Provider\kk_KZ\Text');
}
protected function getMethod($name) {
$method = $this->textClass->getMethod($name);
$method->setAccessible(true);
return $method;
}
/** @test */
function testItShouldAppendEndPunctToTheEndOfString()
{
$this->assertSame(
'Арыстан баб кесенесі - көне Отырар.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Арыстан баб кесенесі - көне Отырар '))
);
$this->assertSame(
'Арыстан баб кесенесі - көне Отырар.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Арыстан баб кесенесі - көне Отырар— '))
);
$this->assertSame(
'Арыстан баб кесенесі - көне Отырар.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Арыстан баб кесенесі - көне Отырар, '))
);
$this->assertSame(
'Арыстан баб кесенесі - көне Отырар!.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Арыстан баб кесенесі - көне Отырар! '))
);
$this->assertSame(
'Арыстан баб кесенесі - көне Отырар.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Арыстан баб кесенесі - көне Отырар: '))
);
$this->assertSame(
'Арыстан баб кесенесі - көне Отырар.',
$this->getMethod('appendEnd')->invokeArgs(null, array('Арыстан баб кесенесі - көне Отырар; '))
);
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Faker\Test\Provider\ko_KR;
use PHPUnit\Framework\TestCase;
class TextTest extends TestCase
{
private $textClass;
public function setUp()
{
$this->textClass = new \ReflectionClass('Faker\Provider\el_GR\Text');
}
protected function getMethod($name) {
$method = $this->textClass->getMethod($name);
$method->setAccessible(true);
return $method;
}
/** @test */
function testItShouldAppendEndPunctToTheEndOfString()
{
$this->assertSame(
'최석(崔晳)으로부터 최후의 편지가.',
$this->getMethod('appendEnd')->invokeArgs(null, array('최석(崔晳)으로부터 최후의 편지가 '))
);
$this->assertSame(
'최석(崔晳)으로부터 최후의 편지가.',
$this->getMethod('appendEnd')->invokeArgs(null, array('최석(崔晳)으로부터 최후의 편지가—'))
);
$this->assertSame(
'최석(崔晳)으로부터 최후의 편지가.',
$this->getMethod('appendEnd')->invokeArgs(null, array('최석(崔晳)으로부터 최후의 편지가,'))
);
$this->assertSame(
'최석(崔晳)으로부터 최후의 편지가!.',
$this->getMethod('appendEnd')->invokeArgs(null, array('최석(崔晳)으로부터 최후의 편지가! '))
);
$this->assertSame(
'최석(崔晳)으로부터 최후의 편지가.',
$this->getMethod('appendEnd')->invokeArgs(null, array('최석(崔晳)으로부터 최후의 편지가: '))
);
$this->assertSame(
'최석(崔晳)으로부터 최후의 편지가.',
$this->getMethod('appendEnd')->invokeArgs(null, array('최석(崔晳)으로부터 최후의 편지가; '))
);
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace Faker\Test\Provider\mn_MN;
use Faker\Generator;
use Faker\Provider\mn_MN\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
public function testName()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertRegExp('/^[А-Я]{1}\.[\w\W]+$/u', $faker->name);
}
public function testIdNumber()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(2);
$this->assertRegExp('/^[А-Я]{2}\d{8}$/u', $faker->idNumber);
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace Faker\Test\Provider\ms_MY;
use Faker\Generator;
use Faker\Provider\ms_MY\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
/**
* @link https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC)
*/
public function testPersonalIdentityCardNumber()
{
$myKadNumber = $this->faker->myKadNumber;
$yy = substr($myKadNumber, 0, 2);
//match any year from 00-99
$this->assertRegExp("/^[0-9]{2}$/", $yy);
$mm = substr($myKadNumber, 2, 2);
//match any month from 01-12
$this->assertRegExp("/^0[1-9]|1[0-2]$/", $mm);
$dd = substr($myKadNumber, 4, 2);
//match any date from 01-31
$this->assertRegExp("/^0[1-9]|1[0-9]|2[0-9]|3[0-1]$/", $dd);
$pb = substr($myKadNumber, 6, 2);
//match any valid place of birth code from 01-59 except 17-20
$this->assertRegExp("/^(0[1-9]|1[0-6])|(2[1-9]|3[0-9]|4[0-9]|5[0-9])$/", $pb);
$nnnn = substr($myKadNumber, 8, 4);
//match any number from 0000-9999
$this->assertRegExp("/^[0-9]{4}$/", $nnnn);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider\nl_BE;
use Faker\Generator;
use Faker\Provider\nl_BE\Payment;
use PHPUnit\Framework\TestCase;
class PaymentTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Payment($faker));
$this->faker = $faker;
}
public function testVatIsValid()
{
$vat = $this->faker->vat();
$unspacedVat = $this->faker->vat(false);
$this->assertRegExp('/^(BE 0\d{9})$/', $vat);
$this->assertRegExp('/^(BE0\d{9})$/', $unspacedVat);
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace Faker\Test\Provider\nl_BE;
use Faker\Generator;
use Faker\Provider\nl_BE\Person;
use PHPUnit\Framework\TestCase;
use Datetime;
/**
* @group Person
*/
class PersonTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testRrnIsValid()
{
$rrn = $this->faker->rrn();
$this->assertEquals(11, strlen($rrn));
$ctrlNumber = substr($rrn, 9, 2);
$calcCtrl = 97 - (substr($rrn, 0, 9) % 97);
$altcalcCtrl = 97 - ((2 . substr($rrn, 0, 9)) % 97);
$this->assertContains($ctrlNumber, array($calcCtrl, $altcalcCtrl));
$middle = substr($rrn, 6, 3);
$this->assertGreaterThan(1, $middle);
$this->assertLessThan(997, $middle);
}
public function testRrnIsMale()
{
$rrn = $this->faker->rrn('male');
$this->assertEquals(substr($rrn, 6, 3) % 2, 1);
}
public function testRrnIsFemale()
{
$rrn = $this->faker->rrn('female');
$this->assertEquals(substr($rrn, 6, 3) % 2, 0);
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Faker\Test\Provider\nl_NL;
use Faker\Generator;
use Faker\Provider\nl_NL\Company;
use PHPUnit\Framework\TestCase;
class CompanyTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testGenerateValidVatNumber()
{
$vatNo = $this->faker->vat();
$this->assertEquals(14, strlen($vatNo));
$this->assertRegExp('/^NL[0-9]{9}B[0-9]{2}$/', $vatNo);
}
public function testGenerateValidBtwNumberAlias()
{
$btwNo = $this->faker->btw();
$this->assertEquals(14, strlen($btwNo));
$this->assertRegExp('/^NL[0-9]{9}B[0-9]{2}$/', $btwNo);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\nl_NL;
use Faker\Generator;
use Faker\Provider\nl_NL\Person;
use PHPUnit\Framework\TestCase;
class PersonTest extends TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testGenerateValidIdNumber()
{
$idNumber = $this->faker->idNumber();
$this->assertEquals(9, strlen($idNumber));
$sum = -1 * $idNumber % 10;
for ($multiplier = 2; $idNumber > 0; $multiplier++) {
$val = ($idNumber /= 10) % 10;
$sum += $multiplier * $val;
}
$this->assertTrue($sum != 0 && $sum % 11 == 0);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Faker\Provider\pl_PL;
use Faker\Generator;
use PHPUnit\Framework\TestCase;
class AddressTest extends TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
/**
* Test the validity of state
*/
public function testState()
{
$state = $this->faker->state();
$this->assertNotEmpty($state);
$this->assertInternalType('string', $state);
$this->assertRegExp('/[a-z]+/', $state);
}
}

Some files were not shown because too many files have changed in this diff Show More