Pressroom template verwijderd, website naar root van repo

This commit is contained in:
2020-03-22 15:30:52 +01:00
parent 2cb6a77425
commit f3d1c41e91
7620 changed files with 0 additions and 186900 deletions

View File

@@ -0,0 +1,305 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\Iban;
class IbanTest extends \PHPUnit_Framework_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,62 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\Luhn;
class LuhnTest extends \PHPUnit_Framework_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));
}
}

View File

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

View File

@@ -0,0 +1,147 @@
<?php
namespace Faker\Test;
use Faker\Generator;
class GeneratorTest extends \PHPUnit_Framework_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->assertTrue(is_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,46 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Address;
class AddressTest extends \PHPUnit_Framework_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,45 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Barcode;
class BarcodeTest extends \PHPUnit_Framework_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,551 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Base as BaseProvider;
class BaseTest extends \PHPUnit_Framework_TestCase
{
public function testRandomDigitReturnsInteger()
{
$this->assertTrue(is_integer(BaseProvider::randomDigit()));
}
public function testRandomDigitReturnsDigit()
{
$this->assertTrue(BaseProvider::randomDigit() >= 0);
$this->assertTrue(BaseProvider::randomDigit() < 10);
}
public function testRandomDigitNotNullReturnsNotNullDigit()
{
$this->assertTrue(BaseProvider::randomDigitNotNull() > 0);
$this->assertTrue(BaseProvider::randomDigitNotNull() < 10);
}
public function testRandomDigitNotReturnsValidDigit()
{
for ($i = 0; $i <= 9; $i++) {
$this->assertTrue(BaseProvider::randomDigitNot($i) >= 0);
$this->assertTrue(BaseProvider::randomDigitNot($i) < 10);
$this->assertTrue(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->assertTrue(is_integer(BaseProvider::randomNumber()));
$this->assertTrue(is_integer(BaseProvider::randomNumber(5, false)));
}
public function testRandomNumberReturnsDigit()
{
$this->assertTrue(BaseProvider::randomNumber(3) >= 0);
$this->assertTrue(BaseProvider::randomNumber(3) < 1000);
}
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->assertTrue(is_string(BaseProvider::randomLetter()));
}
public function testRandomLetterReturnsSingleLetter()
{
$this->assertEquals(1, strlen(BaseProvider::randomLetter()));
}
public function testRandomLetterReturnsLowercaseLetter()
{
$lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz';
$this->assertTrue(strpos($lowercaseLetters, BaseProvider::randomLetter()) !== false);
}
public function testRandomAsciiReturnsString()
{
$this->assertTrue(is_string(BaseProvider::randomAscii()));
}
public function testRandomAsciiReturnsSingleCharacter()
{
$this->assertEquals(1, strlen(BaseProvider::randomAscii()));
}
public function testRandomAsciiReturnsAsciiCharacter()
{
$lowercaseLetters = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
$this->assertTrue(strpos($lowercaseLetters, BaseProvider::randomAscii()) !== false);
}
public function testRandomElementReturnsNullWhenArrayEmpty()
{
$this->assertNull(BaseProvider::randomElement(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 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);
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Biased;
use Faker\Generator;
class BiasedTest extends \PHPUnit_Framework_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,53 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Color;
class ColorTest extends \PHPUnit_Framework_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,30 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Company;
use Faker\Provider\Lorem;
class CompanyTest extends \PHPUnit_Framework_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,172 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\DateTime as DateTimeProvider;
class DateTimeTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$this->originalTz = date_default_timezone_get();
$this->defaultTz = 'UTC';
date_default_timezone_set($this->defaultTz);
}
public function tearDown()
{
date_default_timezone_set($this->originalTz);
}
public function testUnixTime()
{
$timestamp = DateTimeProvider::unixTime();
$this->assertInternalType('int', $timestamp);
$this->assertTrue($timestamp >= 0);
$this->assertTrue($timestamp <= time());
}
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 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 = '2018-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,75 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Image;
class ImageTest extends \PHPUnit_Framework_TestCase
{
public function testImageUrlUses640x680AsTheDefaultSize()
{
$this->assertRegExp('#^http://lorempixel.com/640/480/#', Image::imageUrl());
}
public function testImageUrlAcceptsCustomWidthAndHeight()
{
$this->assertRegExp('#^http://lorempixel.com/800/400/#', Image::imageUrl(800, 400));
}
public function testImageUrlAcceptsCustomCategory()
{
$this->assertRegExp('#^http://lorempixel.com/800/400/nature/#', Image::imageUrl(800, 400, 'nature'));
}
public function testImageUrlAcceptsCustomText()
{
$this->assertRegExp('#^http://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://www.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,130 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\Company;
use Faker\Provider\Internet;
use Faker\Provider\Lorem;
use Faker\Provider\Person;
class InternetTest extends \PHPUnit_Framework_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
*
* @requires PHP 5.4
* @dataProvider localeDataProvider
*/
public function testEmailIsValid($locale)
{
$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);
}
/**
* @requires PHP 5.4
* @dataProvider localeDataProvider
*/
public function testUsernameIsValid($locale)
{
$this->loadLocalProviders($locale);
$pattern = '/^[A-Za-z0-9._]+$/';
$username = $this->faker->username();
$this->assertRegExp($pattern, $username);
}
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('/\A1\./', $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,26 @@
<?php
namespace Faker\Test\Provider;
use Faker\Factory;
class LocalizationTest extends \PHPUnit_Framework_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,108 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Lorem;
class LoremTest extends \PHPUnit_Framework_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,54 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Miscellaneous;
class MiscellaneousTest extends \PHPUnit_Framework_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());
}
}

View File

@@ -0,0 +1,206 @@
<?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;
class PaymentTest extends \PHPUnit_Framework_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->assertTrue(in_array($this->faker->creditCardType, array('Visa', 'MasterCard', 'American Express', 'Discover Card')));
}
public function creditCardNumberProvider()
{
return array(
array('Discover Card', '/^6011\d{12}$/'),
array('Visa', '/^4\d{12,15}$/'),
array('MasterCard', '/^5[1-5]\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}$/',
'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,86 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Person;
use Faker\Generator;
class PersonTest extends \PHPUnit_Framework_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,35 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Calculator\Luhn;
use Faker\Provider\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 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,189 @@
<?php
/**
* @author Mark van der Velden <mark@dynom.nl>
*/
namespace Faker\Test\Provider;
use Faker;
/**
* 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 \PHPUnit_Framework_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)
{
$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,54 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\en_US\Text;
use Faker\Generator;
class TextTest extends \PHPUnit_Framework_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,38 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\UserAgent;
class UserAgentTest extends \PHPUnit_Framework_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,26 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Uuid as BaseProvider;
class UuidTest extends \PHPUnit_Framework_TestCase
{
public function testUuidReturnsUuid()
{
$uuid = BaseProvider::uuid();
$this->assertTrue($this->isUuid($uuid));
}
public function testUuidExpectedSeed()
{
mt_srand(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,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,30 @@
<?php
namespace Faker\Test\Provider\at_AT;
use Faker\Generator;
use Faker\Provider\at_AT\Payment;
class PaymentTest extends \PHPUnit_Framework_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,30 @@
<?php
namespace Faker\Test\Provider\bg_BG;
use Faker\Generator;
use Faker\Provider\bg_BG\Payment;
class PaymentTest extends \PHPUnit_Framework_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,29 @@
<?php
namespace Faker\Test\Provider\bn_BD;
use Faker\Generator;
use Faker\Provider\bn_BD\Person;
class PersonTest extends \PHPUnit_Framework_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,46 @@
<?php
namespace Faker\Test\Provider\cs_CZ;
use Faker\Generator;
use Faker\Provider\cs_CZ\Person;
use Faker\Provider\Miscellaneous;
class PersonTest extends \PHPUnit_Framework_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,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,28 @@
<?php
namespace Faker\Test\Provider\de_AT;
use Faker\Generator;
use Faker\Provider\de_AT\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 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,69 @@
<?php
namespace Faker\Test\Provider\de_CH;
use Faker\Generator;
use Faker\Provider\de_CH\Address;
use Faker\Provider\de_CH\Person;
class AddressTest extends \PHPUnit_Framework_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,35 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,32 @@
<?php
namespace Faker\Test\Provider\de_CH;
use Faker\Generator;
use Faker\Provider\de_CH\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_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,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,48 @@
<?php
namespace Faker\Provider\en_AU;
use Faker\Generator;
use Faker\Provider\en_AU\Address;
class AddressTest extends \PHPUnit_Framework_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,68 @@
<?php
namespace Faker\Provider\en_CA;
use Faker\Generator;
use Faker\Provider\en_CA\Address;
class AddressTest extends \PHPUnit_Framework_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,56 @@
<?php
namespace Faker\Provider\en_IN;
use Faker\Generator;
use Faker\Provider\en_IN\Address;
class AddressTest extends \PHPUnit_Framework_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,35 @@
<?php
namespace Faker\Test\Provider\en_NZ;
use Faker\Generator;
use Faker\Provider\en_NZ\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_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,49 @@
<?php
namespace Faker\Test\Provider\en_PH;
use Faker\Generator;
use Faker\Provider\en_PH\Address;
class AddressTest extends \PHPUnit_Framework_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,26 @@
<?php
namespace Faker\Test\Provider\en_SG;
use Faker\Factory;
use Faker\Provider\en_SG\Address;
class AddressTest extends \PHPUnit_Framework_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,43 @@
<?php
namespace Faker\Test\Provider\en_SG;
use Faker\Factory;
use Faker\Provider\en_SG\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$faker = Factory::create('en_SG');
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $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,52 @@
<?php
namespace Faker\Test\Provider\en_UG;
use Faker\Generator;
use Faker\Provider\en_UG\Address;
class AddressTest extends \PHPUnit_Framework_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,84 @@
<?php
namespace Faker\Provider\en_US;
use Faker\Generator;
class PaymentTest extends \PHPUnit_Framework_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,84 @@
<?php
namespace Faker\Test\Provider\en_US;
use Faker\Generator;
use Faker\Provider\en_US\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 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,26 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\Company;
class CompanyTest extends \PHPUnit_Framework_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,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,65 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_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,38 @@
<?php
namespace Faker\Test\Provider\es_ES;
use Faker\Generator;
use Faker\Provider\es_ES\Person;
class PersonTest extends \PHPUnit_Framework_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];
}
}

View File

@@ -0,0 +1,32 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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\fr_BE;
use Faker\Generator;
use Faker\Provider\fr_BE\Payment;
class PaymentTest extends \PHPUnit_Framework_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,69 @@
<?php
namespace Faker\Test\Provider\fr_CH;
use Faker\Generator;
use Faker\Provider\fr_CH\Address;
use Faker\Provider\fr_CH\Person;
class AddressTest extends \PHPUnit_Framework_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,35 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,32 @@
<?php
namespace Faker\Test\Provider\fr_CH;
use Faker\Generator;
use Faker\Provider\fr_CH\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_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,74 @@
<?php
namespace Faker\Test\Provider\fr_FR;
use Faker\Calculator\Luhn;
use Faker\Generator;
use Faker\Provider\fr_FR\Company;
class CompanyTest extends \PHPUnit_Framework_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,40 @@
<?php
namespace Faker\Test\Provider\id_ID;
use Faker\Generator;
use Faker\Provider\id_ID\Person;
class PersonTest extends \PHPUnit_Framework_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,69 @@
<?php
namespace Faker\Test\Provider\it_CH;
use Faker\Generator;
use Faker\Provider\it_CH\Address;
use Faker\Provider\it_CH\Person;
class AddressTest extends \PHPUnit_Framework_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,35 @@
<?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;
class InternetTest extends \PHPUnit_Framework_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,32 @@
<?php
namespace Faker\Test\Provider\it_CH;
use Faker\Generator;
use Faker\Provider\it_CH\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_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,23 @@
<?php
namespace Faker\Test\Provider\it_IT;
use Faker\Generator;
use Faker\Provider\it_IT\Company;
class CompanyTest extends \PHPUnit_Framework_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,23 @@
<?php
namespace Faker\Test\Provider\it_IT;
use Faker\Generator;
use Faker\Provider\it_IT\Person;
class PersonTest extends \PHPUnit_Framework_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,36 @@
<?php
namespace Faker\Test\Provider\ja_JP;
use Faker\Generator;
use Faker\Provider\ja_JP\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
public function testKanaNameReturnsAotaMinoru()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('アオタ ミノル', $faker->kanaName);
}
public function testFirstKanaNameReturnsHaruka()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('ハルカ', $faker->firstKanaName);
}
public function testLastKanaNameReturnsNakajima()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('ナカジマ', $faker->lastKanaName);
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Faker\Test\Provider\mn_MN;
use Faker\Generator;
use Faker\Provider\mn_MN\Person;
class PersonTest extends \PHPUnit_Framework_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,29 @@
<?php
namespace Faker\Test\Provider\nl_BE;
use Faker\Generator;
use Faker\Provider\nl_BE\Payment;
class PaymentTest extends \PHPUnit_Framework_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,34 @@
<?php
namespace Faker\Test\Provider\nl_NL;
use Faker\Generator;
use Faker\Provider\nl_NL\Company;
class CompanyTest extends \PHPUnit_Framework_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,25 @@
<?php
namespace Faker\Test\Provider\pt_BR;
use Faker\Generator;
use Faker\Provider\pt_BR\Company;
class CompanyTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testCnpjFormatIsValid()
{
$cnpj = $this->faker->cnpj(false);
$this->assertRegExp('/\d{8}\d{4}\d{2}/', $cnpj);
$cnpj = $this->faker->cnpj(true);
$this->assertRegExp('/\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}/', $cnpj);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Faker\Test\Provider\pt_BR;
use Faker\Generator;
use Faker\Provider\pt_BR\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testCpfFormatIsValid()
{
$cpf = $this->faker->cpf(false);
$this->assertRegExp('/\d{9}\d{2}/', $cpf);
$cpf = $this->faker->cpf(true);
$this->assertRegExp('/\d{3}\.\d{3}\.\d{3}-\d{2}/', $cpf);
}
public function testRgFormatIsValid()
{
$rg = $this->faker->rg(false);
$this->assertRegExp('/\d{8}\d/', $rg);
$rg = $this->faker->rg(true);
$this->assertRegExp('/\d{2}\.\d{3}\.\d{3}-[0-9X]/', $rg);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Faker\Test\Provider\pt_PT;
use Faker\Generator;
use Faker\Provider\pt_PT\Address;
class AddressTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testPostCodeIsValid()
{
$main = '[1-9]{1}[0-9]{2}[0,1,4,5,9]{1}';
$pattern = "/^($main)|($main-[0-9]{3})+$/";
$postcode = $this->faker->postcode();
$this->assertSame(preg_match($pattern, $postcode), 1, $postcode);
}
}

View File

@@ -0,0 +1,52 @@
<?php
namespace Faker\Test\Provider\pt_PT;
use Faker\Generator;
use Faker\Provider\pt_PT\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testTaxpayerIdentificationNumberIsValid()
{
$tin = $this->faker->taxpayerIdentificationNumber();
$this->assertTrue($this->isValidTin($tin), $tin);
}
/**
*
* @link http://pt.wikipedia.org/wiki/N%C3%BAmero_de_identifica%C3%A7%C3%A3o_fiscal
*
* @param type $tin
*
* @return boolean
*/
public static function isValidTin($tin)
{
$regex = '(([1,2,3,5,6,8]{1}[0-9]{8})|((45)|(70)|(71)|(72)|(77)|(79)|(90|(98|(99))))[0-9]{7})';
if (is_null($tin) || !is_numeric($tin) || !strlen($tin) == 9 || preg_match("/$regex/", $tin) !== 1) {
return false;
}
$n = str_split($tin);
// cd - Control Digit
$cd = ($n[0] * 9 + $n[1] * 8 + $n[2] * 7 + $n[3] * 6 + $n[4] * 5 + $n[5] * 4 + $n[6] * 3 + $n[7] * 2) % 11;
if ($cd === 0 || $cd === 1) {
$cd = 0;
} else {
$cd = 11 - $cd;
}
if ($cd === intval($n[8])) {
return true;
}
return false;
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace Faker\Test\Provider\pt_PT;
use Faker\Generator;
use Faker\Provider\pt_PT\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumberReturnsPhoneNumberWithOrWithoutPrefix()
{
$this->assertRegExp('/^(9[1,2,3,6][0-9]{7})|(2[0-9]{8})|(\+351 [2][0-9]{8})|(\+351 9[1,2,3,6][0-9]{7})/', $this->faker->phoneNumber());
}
public function testMobileNumberReturnsMobileNumberWithOrWithoutPrefix()
{
$this->assertRegExp('/^(9[1,2,3,6][0-9]{7})/', $this->faker->mobileNumber());
}
}

View File

@@ -0,0 +1,95 @@
<?php
namespace Faker\Test\Provider\ro_RO;
use Faker\Generator;
use Faker\Provider\DateTime;
use Faker\Provider\ro_RO\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
const TEST_CNP_REGEX = '/^([1-9])([0-9]{2}(?:0[1-9]|1[012])(?:0[1-9]|[12][0-9]|3[01]))(0[1-9]|[123][0-9]|4[0-6]|5[12])([0-9]{3})([0-9])$/';
public function setUp()
{
$faker = new Generator();
$faker->seed(1);
$faker->addProvider(new DateTime($faker));
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function testCnpReturnsValidCnp()
{
$cnp = $this->faker->cnp;
$this->assertTrue($this->isValidCnp($cnp));
}
public function testCnpReturnsMaleCnp()
{
$cnp = $this->faker->cnp('m');
$this->assertRegExp('/^[1357]\d{12}$/', $cnp);
}
public function testCnpReturnsFemaleCnp()
{
$cnp = $this->faker->cnp('f');
$this->assertRegExp('/^[2468]\d{12}$/', $cnp);
}
public function testCnpReturns1800sCnp()
{
$cnp = $this->faker->cnp(null, 1800);
$this->assertRegExp('/^[34]\d{12}$/', $cnp);
}
public function testCnpReturns1900sCnp()
{
$cnp = $this->faker->cnp(null, 1900);
$this->assertRegExp('/^[12]\d{12}$/', $cnp);
}
public function testCnpReturns2000sCnp()
{
$cnp = $this->faker->cnp(null, 2000);
$this->assertRegExp('/^[56]\d{12}$/', $cnp);
}
public function testCnpReturnsBrasovCnp()
{
$cnp = $this->faker->cnp(null, null, 'BV');
$this->assertRegExp('/^\d{7}08\d{4}$/', $cnp);
}
public function testCnpReturns2000sClujFemaleCnp()
{
$cnp = $this->faker->cnp('f', 2000, 'CJ');
$this->assertRegExp('/^6\d{6}12\d{4}$/', $cnp);
}
protected function isValidCnp($cnp)
{
if (
is_string($cnp)
&& (bool) preg_match(static::TEST_CNP_REGEX, $cnp)
&& checkdate(substr($cnp, 3, 2), substr($cnp, 5, 2), substr($cnp, 1, 2))
){
$checkNumber = 279146358279;
$checksum = 0;
foreach (range(0, 11) as $digit) {
$checksum += substr($cnp, $digit, 1) * substr($checkNumber, $digit, 1);
}
$checksum = $checksum % 11;
if (
($checksum < 10 && $checksum == substr($cnp, -1))
|| ($checksum == 10 && substr($cnp, -1) == 1)
){
return true;
}
}
return false;
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Faker\Test\Provider\ro_RO;
use Faker\Generator;
use Faker\Provider\ro_RO\PhoneNumber;
class PhoneNumberTest extends \PHPUnit_Framework_TestCase
{
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new PhoneNumber($faker));
$this->faker = $faker;
}
public function testPhoneNumberReturnsNormalPhoneNumber()
{
$this->assertRegExp('/^0(?:[23][13-7]|7\d)\d{7}$/', $this->faker->phoneNumber());
}
public function testTollFreePhoneNumberReturnsTollFreePhoneNumber()
{
$this->assertRegExp('/^08(?:0[1267]|70)\d{6}$/', $this->faker->tollFreePhoneNumber());
}
public function testPremiumRatePhoneNumberReturnsPremiumRatePhoneNumber()
{
$this->assertRegExp('/^090[036]\d{6}$/', $this->faker->premiumRatePhoneNumber());
}
}

View File

@@ -0,0 +1,60 @@
<?php
namespace Faker\Test\Provider\sv_SE;
use Faker\Calculator\Luhn;
use Faker\Generator;
use Faker\Provider\sv_SE\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
/** @var Generator */
protected $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function provideSeedAndExpectedReturn()
{
return array(
array(1, '720727', '720727-5798'),
array(2, '710414', '710414-5664'),
array(3, '591012', '591012-4519'),
array(4, '180307', '180307-0356'),
array(5, '820904', '820904-7748')
);
}
/**
* @dataProvider provideSeedAndExpectedReturn
*/
public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected)
{
$faker = $this->faker;
$faker->seed($seed);
$pin = $faker->personalIdentityNumber(\DateTime::createFromFormat('ymd', $birthdate));
$this->assertEquals($expected, $pin);
}
public function testPersonalIdentityNumberGeneratesLuhnCompliantNumbers()
{
$pin = str_replace('-', '', $this->faker->personalIdentityNumber());
$this->assertTrue(Luhn::isValid($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,80 @@
<?php
namespace Faker\Test\Provider\uk_UA;
use Faker\Generator;
use Faker\Provider\uk_UA\Address;
class AddressTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Address($faker));
$this->faker = $faker;
}
public function testPostCodeIsValid()
{
$main = '[0-9]{5}';
$pattern = "/^($main)|($main-[0-9]{3})+$/";
$postcode = $this->faker->postcode;
$this->assertRegExp($pattern, $postcode, 'Post code ' . $postcode . ' is wrong!');
}
public function testEmptySuffixes()
{
$this->assertEmpty($this->faker->citySuffix, 'City suffix should be empty!');
$this->assertEmpty($this->faker->streetSuffix, 'Street suffix should be empty!');
}
public function testStreetCyrOnly()
{
$pattern = "/[0-9А-ЩЯІЇЄЮа-щяіїєюьIVXCM][0-9А-ЩЯІЇЄЮа-щяіїєюь \'-.]*[А-Яа-я.]/u";
$streetName = $this->faker->streetName;
$this->assertSame(
preg_match($pattern, $streetName),
1,
'Street name ' . $streetName . ' is wrong!'
);
}
public function testCityNameCyrOnly()
{
$pattern = "/[А-ЩЯІЇЄЮа-щяіїєюь][0-9А-ЩЯІЇЄЮа-щяіїєюь \'-]*[А-Яа-я]/u";
$city = $this->faker->city;
$this->assertSame(
preg_match($pattern, $city),
1,
'City name ' . $city . ' is wrong!'
);
}
public function testRegionNameCyrOnly()
{
$pattern = "/[А-ЩЯІЇЄЮ][А-ЩЯІЇЄЮа-щяіїєюь]*а$/u";
$regionName = $this->faker->region;
$this->assertSame(
preg_match($pattern, $regionName),
1,
'Region name ' . $regionName . ' is wrong!'
);
}
public function testCountryCyrOnly()
{
$pattern = "/[А-ЩЯІЇЄЮа-щяіїєюьIVXCM][А-ЩЯІЇЄЮа-щяіїєюь \'-]*[А-Яа-я.]/u";
$country = $this->faker->country;
$this->assertSame(
preg_match($pattern, $country),
1,
'Country name ' . $country . ' is wrong!'
);
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Faker\Test\Provider\uk_UA;
use Faker\Generator;
use Faker\Provider\uk_UA\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 testPhoneNumberFormat()
{
$pattern = "/((\+38)(((\(\d{3}\))\d{7}|(\(\d{4}\))\d{6})|(\d{8})))|0\d{9}/";
$phoneNumber = $this->faker->phoneNumber;
$this->assertSame(
preg_match($pattern, $phoneNumber),
1,
'Phone number format ' . $phoneNumber . ' is wrong!'
);
}
}

View File

@@ -0,0 +1,77 @@
<?php
namespace Faker\Test\Provider\zh_TW;
class TextTest extends \PHPUnit_Framework_TestCase
{
private $textClass;
public function setUp()
{
$this->textClass = new \ReflectionClass('Faker\Provider\zh_TW\Text');
}
protected function getMethod($name) {
$method = $this->textClass->getMethod($name);
$method->setAccessible(true);
return $method;
}
/** @test */
function it_should_explode_the_string_to_array()
{
$this->assertSame(
array('中', '文', '測', '試', '真', '有', '趣'),
$this->getMethod('explode')->invokeArgs(null, array('中文測試真有趣'))
);
$this->assertSame(
array('標', '點', '', '符', '號', ''),
$this->getMethod('explode')->invokeArgs(null, array('標點,符號!'))
);
}
/** @test */
function it_should_return_the_string_length()
{
$this->assertContains(
$this->getMethod('strlen')->invokeArgs(null, array('中文測試真有趣')),
array(7, 21)
);
}
/** @test */
function it_should_return_the_character_is_valid_start_or_not()
{
$this->assertTrue($this->getMethod('validStart')->invokeArgs(null, array('中')));
$this->assertTrue($this->getMethod('validStart')->invokeArgs(null, array('2')));
$this->assertTrue($this->getMethod('validStart')->invokeArgs(null, array('Hello')));
$this->assertFalse($this->getMethod('validStart')->invokeArgs(null, array('。')));
$this->assertFalse($this->getMethod('validStart')->invokeArgs(null, array('')));
}
/** @test */
function it_should_append_end_punct_to_the_end_of_string()
{
$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,16 @@
<?php
require_once __DIR__ . '/../vendor/autoload.php';
$generator = Faker\Factory::create();
$generator->seed(1);
$documentor = new Faker\Documentor($generator);
?>
<?php foreach ($documentor->getFormatters() as $provider => $formatters): ?>
### `<?php echo $provider ?>`
<?php foreach ($formatters as $formatter => $example): ?>
<?php echo str_pad($formatter, 23) ?><?php if ($example): ?> // <?php echo $example ?> <?php endif; ?>
<?php endforeach; ?>
<?php endforeach;

38
vendor/fzaninotto/faker/test/test.php vendored Normal file
View File

@@ -0,0 +1,38 @@
<?php
require __DIR__ .'/../vendor/autoload.php';
$faker = Faker\Factory::create();
$faker->seed(5);
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
<contacts>
<?php for ($i=0; $i < 10; $i++): ?>
<contact firstName="<?php echo $faker->firstName ?>" lastName="<?php echo $faker->lastName ?>" email="<?php echo $faker->email ?>" >
<phone number="<?php echo $faker->phoneNumber ?>"/>
<?php if ($faker->boolean(25)): ?>
<birth date="<?php echo $faker->dateTimeThisCentury->format('Y-m-d') ?>" place="<?php echo $faker->city ?>"/>
<?php endif; ?>
<address>
<street><?php echo $faker->streetAddress ?></street>
<city><?php echo $faker->city ?></city>
<postcode><?php echo $faker->postcode ?></postcode>
<state><?php echo $faker->state ?></state>
</address>
<company name="<?php echo $faker->company ?>" catchPhrase="<?php echo $faker->catchPhrase ?>">
<?php if ($faker->boolean(33)): ?>
<offer><?php echo $faker->bs ?></offer>
<?php endif; ?>
<?php if ($faker->boolean(33)): ?>
<director name="<?php echo $faker->name ?>" />
<?php endif; ?>
</company>
<?php if ($faker->boolean(15)): ?>
<details>
<![CDATA[
<?php echo $faker->text(400) ?>
]]>
</details>
<?php endif; ?>
</contact>
<?php endfor; ?>
</contacts>