Added Laravel project

This commit is contained in:
2017-09-17 00:35:10 +02:00
parent a3c19304d5
commit ecf605b8f5
6246 changed files with 682270 additions and 2 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,50 @@
<?php
namespace Faker\Test\Calculator;
use Faker\Calculator\Inn;
class InnTest extends \PHPUnit_Framework_TestCase
{
public function checksumProvider()
{
return array(
array('143525744', '4'),
array('500109285', '3'),
array('500109285', '3'),
array('500109285', '3'),
array('027615723', '1')
);
}
/**
* @dataProvider checksumProvider
*/
public function testChecksum($inn, $checksum)
{
$this->assertEquals($checksum, Inn::checksum($inn), $inn);
}
public function validatorProvider()
{
return array(
array('5902179757', true),
array('5408294405', true),
array('2724164617', true),
array('0726000515', true),
array('6312123552', true),
array('1111111111', false),
array('0123456789', false),
);
}
/**
* @dataProvider validatorProvider
*/
public function testIsValid($inn, $isValid)
{
$this->assertEquals($isValid, Inn::isValid($inn), $inn);
}
}

View File

@@ -0,0 +1,71 @@
<?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));
}
/**
* @expectedException InvalidArgumentException
* @expectedExceptionMessage Argument should be an integer.
*/
public function testGenerateLuhnNumberWithInvalidPrefix()
{
Luhn::generateLuhnNumber('abc');
}
}

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,555 @@
<?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);
$allowDuplicates = BaseProvider::randomElements(array('foo', 'bar'), 3, true);
$this->assertCount(3, $allowDuplicates);
$this->assertContainsOnly('string', $allowDuplicates);
}
}

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,232 @@
<?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 testDateTimeThisCentury()
{
$date = DateTimeProvider::dateTimeThisCentury();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-100 year'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisDecade()
{
$date = DateTimeProvider::dateTimeThisDecade();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-10 year'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisYear()
{
$date = DateTimeProvider::dateTimeThisYear();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-1 year'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisMonth()
{
$date = DateTimeProvider::dateTimeThisMonth();
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime('-1 month'), $date);
$this->assertLessThanOrEqual(new \DateTime(), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function testDateTimeThisCenturyWithTimezone()
{
$date = DateTimeProvider::dateTimeThisCentury('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeThisDecadeWithTimezone()
{
$date = DateTimeProvider::dateTimeThisDecade('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeThisYearWithTimezone()
{
$date = DateTimeProvider::dateTimeThisYear('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testDateTimeThisMonthWithTimezone()
{
$date = DateTimeProvider::dateTimeThisMonth('now', 'America/New_York');
$this->assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York'));
}
public function testIso8601()
{
$date = DateTimeProvider::iso8601();
$this->assertRegExp('/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-Z](\d{4})?$/', $date);
$this->assertGreaterThanOrEqual(new \DateTime('@0'), new \DateTime($date));
$this->assertLessThanOrEqual(new \DateTime(), new \DateTime($date));
}
public function testDate()
{
$date = DateTimeProvider::date();
$this->assertRegExp('/^\d{4}-\d{2}-\d{2}$/', $date);
$this->assertGreaterThanOrEqual(new \DateTime('@0'), new \DateTime($date));
$this->assertLessThanOrEqual(new \DateTime(), new \DateTime($date));
}
public function testTime()
{
$date = DateTimeProvider::time();
$this->assertRegExp('/^\d{2}:\d{2}:\d{2}$/', $date);
}
/**
*
* @dataProvider providerDateTimeBetween
*/
public function testDateTimeBetween($start, $end)
{
$date = DateTimeProvider::dateTimeBetween($start, $end);
$this->assertInstanceOf('\DateTime', $date);
$this->assertGreaterThanOrEqual(new \DateTime($start), $date);
$this->assertLessThanOrEqual(new \DateTime($end), $date);
$this->assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone());
}
public function providerDateTimeBetween()
{
return array(
array('-1 year', false),
array('-1 year', null),
array('-1 day', '-1 hour'),
array('-1 day', 'now'),
);
}
/**
*
* @dataProvider providerDateTimeInInterval
*/
public function testDateTimeInInterval($start, $interval = "+5 days", $isInFuture)
{
$date = DateTimeProvider::dateTimeInInterval($start, $interval);
$this->assertInstanceOf('\DateTime', $date);
$_interval = \DateInterval::createFromDateString($interval);
$_start = new \DateTime($start);
if ($isInFuture) {
$this->assertGreaterThanOrEqual($_start, $date);
$this->assertLessThanOrEqual($_start->add($_interval), $date);
} else {
$this->assertLessThanOrEqual($_start, $date);
$this->assertGreaterThanOrEqual($_start->add($_interval), $date);
}
}
public function providerDateTimeInInterval()
{
return array(
array('-1 year', '+5 days', true),
array('-1 day', '-1 hour', false),
array('-1 day', '+1 hour', true),
);
}
public function testFixedSeedWithMaximumTimestamp()
{
$max = '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,29 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
use Faker\Provider\HtmlLorem;
class HtmlLoremTest extends \PHPUnit_Framework_TestCase
{
public function testProvider()
{
$faker = new Generator();
$faker->addProvider(new HtmlLorem($faker));
$node = $faker->randomHtml(6, 10);
$this->assertStringStartsWith("<html>", $node);
$this->assertStringEndsWith("</html>\n", $node);
}
public function testRandomHtmlReturnsValidHTMLString(){
$faker = new Generator();
$faker->addProvider(new HtmlLorem($faker));
$node = $faker->randomHtml(6, 10);
$dom = new \DOMDocument();
$error = $dom->loadHTML($node);
$this->assertTrue($error);
}
}

View File

@@ -0,0 +1,75 @@
<?php
namespace Faker\Test\Provider;
use Faker\Provider\Image;
class ImageTest extends \PHPUnit_Framework_TestCase
{
public function testImageUrlUses640x680AsTheDefaultSize()
{
$this->assertRegExp('#^https://lorempixel.com/640/480/#', Image::imageUrl());
}
public function testImageUrlAcceptsCustomWidthAndHeight()
{
$this->assertRegExp('#^https://lorempixel.com/800/400/#', Image::imageUrl(800, 400));
}
public function testImageUrlAcceptsCustomCategory()
{
$this->assertRegExp('#^https://lorempixel.com/800/400/nature/#', Image::imageUrl(800, 400, 'nature'));
}
public function testImageUrlAcceptsCustomText()
{
$this->assertRegExp('#^https://lorempixel.com/800/400/nature/Faker#', Image::imageUrl(800, 400, 'nature', false, 'Faker'));
}
public function testImageUrlAddsARandomGetParameterByDefault()
{
$url = Image::imageUrl(800, 400);
$splitUrl = preg_split('/\?/', $url);
$this->assertEquals(count($splitUrl), 2);
$this->assertRegexp('#\d{5}#', $splitUrl[1]);
}
/**
* @expectedException \InvalidArgumentException
*/
public function testUrlWithDimensionsAndBadCategory()
{
Image::imageUrl(800, 400, 'bullhonky');
}
public function testDownloadWithDefaults()
{
$url = "http://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,166 @@
<?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
*
* @dataProvider localeDataProvider
*/
public function testEmailIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD';
$emailAddress = $this->faker->email();
$this->assertRegExp($pattern, $emailAddress);
}
/**
* @dataProvider localeDataProvider
*/
public function testUsernameIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^[A-Za-z0-9]+([._][A-Za-z0-9]+)*$/';
$username = $this->faker->username();
$this->assertRegExp($pattern, $username);
}
/**
* @dataProvider localeDataProvider
*/
public function testDomainnameIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^[a-z]+(\.[a-z]+)+$/';
$domainName = $this->faker->domainName();
$this->assertRegExp($pattern, $domainName);
}
/**
* @dataProvider localeDataProvider
*/
public function testDomainwordIsValid($locale)
{
if ($locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$this->loadLocalProviders($locale);
$pattern = '/^[a-z]+$/';
$domainWord = $this->faker->domainWord();
$this->assertRegExp($pattern, $domainWord);
}
public function loadLocalProviders($locale)
{
$providerPath = realpath(__DIR__ . '/../../../src/Faker/Provider');
if (file_exists($providerPath.'/'.$locale.'/Internet.php')) {
$internet = "\\Faker\\Provider\\$locale\\Internet";
$this->faker->addProvider(new $internet($this->faker));
}
if (file_exists($providerPath.'/'.$locale.'/Person.php')) {
$person = "\\Faker\\Provider\\$locale\\Person";
$this->faker->addProvider(new $person($this->faker));
}
if (file_exists($providerPath.'/'.$locale.'/Company.php')) {
$company = "\\Faker\\Provider\\$locale\\Company";
$this->faker->addProvider(new $company($this->faker));
}
}
public function testPasswordIsValid()
{
$this->assertRegexp('/^.{6}$/', $this->faker->password(6, 6));
}
public function testSlugIsValid()
{
$pattern = '/^[a-z0-9-]+$/';
$slug = $this->faker->slug();
$this->assertSame(preg_match($pattern, $slug), 1);
}
public function testUrlIsValid()
{
$url = $this->faker->url();
$this->assertNotFalse(filter_var($url, FILTER_VALIDATE_URL));
}
public function testLocalIpv4()
{
$this->assertNotFalse(filter_var(Internet::localIpv4(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
}
public function testIpv4()
{
$this->assertNotFalse(filter_var($this->faker->ipv4(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
}
public function testIpv4NotLocalNetwork()
{
$this->assertNotRegExp('/\A0\./', $this->faker->ipv4());
}
public function testIpv4NotBroadcast()
{
$this->assertNotEquals('255.255.255.255', $this->faker->ipv4());
}
public function testIpv6()
{
$this->assertNotFalse(filter_var($this->faker->ipv6(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
}
public function testMacAddress()
{
$this->assertRegExp('/^([0-9A-F]{2}[:]){5}([0-9A-F]{2})$/i', Internet::macAddress());
}
}

View File

@@ -0,0 +1,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,58 @@
<?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());
}
public function testEmoji()
{
$this->assertRegExp('/^[\x{1F600}-\x{1F637}]$/u', Miscellaneous::emoji());
}
}

View File

@@ -0,0 +1,207 @@
<?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]|2[2-7])\d{14}$/')
);
}
/**
* @dataProvider creditCardNumberProvider
*/
public function testCreditCardNumberReturnsValidCreditCardNumber($type, $regexp)
{
$cardNumber = $this->faker->creditCardNumber($type);
$this->assertRegExp($regexp, $cardNumber);
$this->assertTrue(Luhn::isValid($cardNumber));
}
public function testCreditCardNumberCanFormatOutput()
{
$this->assertRegExp('/^6011-\d{4}-\d{4}-\d{4}$/', $this->faker->creditCardNumber('Discover Card', true));
}
public function testCreditCardExpirationDateReturnsValidDateByDefault()
{
$expirationDate = $this->faker->creditCardExpirationDate;
$this->assertTrue(intval($expirationDate->format('U')) > strtotime('now'));
$this->assertTrue(intval($expirationDate->format('U')) < strtotime('+36 months'));
}
public function testRandomCard()
{
$cardDetails = $this->faker->creditCardDetails;
$this->assertEquals(count($cardDetails), 4);
$this->assertEquals(array('type', 'number', 'name', 'expirationDate'), array_keys($cardDetails));
}
protected $ibanFormats = array(
'AD' => '/^AD\d{2}\d{4}\d{4}[A-Z0-9]{12}$/',
'AE' => '/^AE\d{2}\d{3}\d{16}$/',
'AL' => '/^AL\d{2}\d{8}[A-Z0-9]{16}$/',
'AT' => '/^AT\d{2}\d{5}\d{11}$/',
'AZ' => '/^AZ\d{2}[A-Z]{4}[A-Z0-9]{20}$/',
'BA' => '/^BA\d{2}\d{3}\d{3}\d{8}\d{2}$/',
'BE' => '/^BE\d{2}\d{3}\d{7}\d{2}$/',
'BG' => '/^BG\d{2}[A-Z]{4}\d{4}\d{2}[A-Z0-9]{8}$/',
'BH' => '/^BH\d{2}[A-Z]{4}[A-Z0-9]{14}$/',
'BR' => '/^BR\d{2}\d{8}\d{5}\d{10}[A-Z]{1}[A-Z0-9]{1}$/',
'CH' => '/^CH\d{2}\d{5}[A-Z0-9]{12}$/',
'CR' => '/^CR\d{2}\d{3}\d{14}$/',
'CY' => '/^CY\d{2}\d{3}\d{5}[A-Z0-9]{16}$/',
'CZ' => '/^CZ\d{2}\d{4}\d{6}\d{10}$/',
'DE' => '/^DE\d{2}\d{8}\d{10}$/',
'DK' => '/^DK\d{2}\d{4}\d{9}\d{1}$/',
'DO' => '/^DO\d{2}[A-Z0-9]{4}\d{20}$/',
'EE' => '/^EE\d{2}\d{2}\d{2}\d{11}\d{1}$/',
'ES' => '/^ES\d{2}\d{4}\d{4}\d{1}\d{1}\d{10}$/',
'FI' => '/^FI\d{2}\d{6}\d{7}\d{1}$/',
'FR' => '/^FR\d{2}\d{5}\d{5}[A-Z0-9]{11}\d{2}$/',
'GB' => '/^GB\d{2}[A-Z]{4}\d{6}\d{8}$/',
'GE' => '/^GE\d{2}[A-Z]{2}\d{16}$/',
'GI' => '/^GI\d{2}[A-Z]{4}[A-Z0-9]{15}$/',
'GR' => '/^GR\d{2}\d{3}\d{4}[A-Z0-9]{16}$/',
'GT' => '/^GT\d{2}[A-Z0-9]{4}[A-Z0-9]{20}$/',
'HR' => '/^HR\d{2}\d{7}\d{10}$/',
'HU' => '/^HU\d{2}\d{3}\d{4}\d{1}\d{15}\d{1}$/',
'IE' => '/^IE\d{2}[A-Z]{4}\d{6}\d{8}$/',
'IL' => '/^IL\d{2}\d{3}\d{3}\d{13}$/',
'IS' => '/^IS\d{2}\d{4}\d{2}\d{6}\d{10}$/',
'IT' => '/^IT\d{2}[A-Z]{1}\d{5}\d{5}[A-Z0-9]{12}$/',
'KW' => '/^KW\d{2}[A-Z]{4}\d{22}$/',
'KZ' => '/^KZ\d{2}\d{3}[A-Z0-9]{13}$/',
'LB' => '/^LB\d{2}\d{4}[A-Z0-9]{20}$/',
'LI' => '/^LI\d{2}\d{5}[A-Z0-9]{12}$/',
'LT' => '/^LT\d{2}\d{5}\d{11}$/',
'LU' => '/^LU\d{2}\d{3}[A-Z0-9]{13}$/',
'LV' => '/^LV\d{2}[A-Z]{4}[A-Z0-9]{13}$/',
'MC' => '/^MC\d{2}\d{5}\d{5}[A-Z0-9]{11}\d{2}$/',
'MD' => '/^MD\d{2}[A-Z0-9]{2}[A-Z0-9]{18}$/',
'ME' => '/^ME\d{2}\d{3}\d{13}\d{2}$/',
'MK' => '/^MK\d{2}\d{3}[A-Z0-9]{10}\d{2}$/',
'MR' => '/^MR\d{2}\d{5}\d{5}\d{11}\d{2}$/',
'MT' => '/^MT\d{2}[A-Z]{4}\d{5}[A-Z0-9]{18}$/',
'MU' => '/^MU\d{2}[A-Z]{4}\d{2}\d{2}\d{12}\d{3}[A-Z]{3}$/',
'NL' => '/^NL\d{2}[A-Z]{4}\d{10}$/',
'NO' => '/^NO\d{2}\d{4}\d{6}\d{1}$/',
'PK' => '/^PK\d{2}[A-Z]{4}[A-Z0-9]{16}$/',
'PL' => '/^PL\d{2}\d{8}\d{16}$/',
'PS' => '/^PS\d{2}[A-Z]{4}[A-Z0-9]{21}$/',
'PT' => '/^PT\d{2}\d{4}\d{4}\d{11}\d{2}$/',
'RO' => '/^RO\d{2}[A-Z]{4}[A-Z0-9]{16}$/',
'RS' => '/^RS\d{2}\d{3}\d{13}\d{2}$/',
'SA' => '/^SA\d{2}\d{2}[A-Z0-9]{18}$/',
'SE' => '/^SE\d{2}\d{3}\d{16}\d{1}$/',
'SI' => '/^SI\d{2}\d{5}\d{8}\d{2}$/',
'SK' => '/^SK\d{2}\d{4}\d{6}\d{10}$/',
'SM' => '/^SM\d{2}[A-Z]{1}\d{5}\d{5}[A-Z0-9]{12}$/',
'TN' => '/^TN\d{2}\d{2}\d{3}\d{13}\d{2}$/',
'TR' => '/^TR\d{2}\d{5}\d{1}[A-Z0-9]{16}$/',
'VG' => '/^VG\d{2}[A-Z]{4}\d{16}$/',
);
/**
* @dataProvider localeDataProvider
*/
public function testBankAccountNumber($locale)
{
$parts = explode('_', $locale);
$countryCode = array_pop($parts);
if (!isset($this->ibanFormats[$countryCode])) {
// No IBAN format available
return;
}
$this->loadLocalProviders($locale);
try {
$iban = $this->faker->bankAccountNumber;
} catch (\InvalidArgumentException $e) {
// Not implemented, nothing to test
$this->markTestSkipped("bankAccountNumber not implemented for $locale");
return;
}
// Test format
$this->assertRegExp($this->ibanFormats[$countryCode], $iban);
// Test checksum
$this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
}
public function ibanFormatProvider()
{
$return = array();
foreach ($this->ibanFormats as $countryCode => $regex) {
$return[] = array($countryCode, $regex);
}
return $return;
}
/**
* @dataProvider ibanFormatProvider
*/
public function testIban($countryCode, $regex)
{
$iban = $this->faker->iban($countryCode);
// Test format
$this->assertRegExp($regex, $iban);
// Test checksum
$this->assertTrue(Iban::isValid($iban), "Checksum for $iban is invalid");
}
}

View File

@@ -0,0 +1,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,193 @@
<?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)
{
if ($locale && $locale !== 'en_US' && !class_exists('Transliterator')) {
$this->markTestSkipped('Transliterator class not available (intl extension)');
}
$faker = Faker\Factory::create($locale);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->userName);
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->email);
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->safeEmail);
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->freeEmail);
$this->assertRegExp(static::TEST_EMAIL_REGEX, $faker->companyEmail);
}
/**
* @dataProvider localeDataProvider
* @param string $locale
*/
public function testPerson($locale = null)
{
$faker = Faker\Factory::create($locale);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->name);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->title);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->firstName);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->lastName);
}
/**
* @dataProvider localeDataProvider
* @param string $locale
*/
public function testPhoneNumber($locale = null)
{
$faker = Faker\Factory::create($locale);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->phoneNumber);
}
/**
* @dataProvider localeDataProvider
* @param string $locale
*/
public function testUserAgent($locale = null)
{
$faker = Faker\Factory::create($locale);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->userAgent);
}
/**
* @dataProvider localeDataProvider
*
* @param null $locale
* @param string $locale
*/
public function testUuid($locale = null)
{
$faker = Faker\Factory::create($locale);
$this->assertRegExp(static::TEST_STRING_REGEX, $faker->uuid);
}
/**
* @return array
*/
public function localeDataProvider()
{
$locales = $this->getAllLocales();
$data = array();
foreach ($locales as $locale) {
$data[] = array(
$locale
);
}
return $data;
}
/**
* Returns all locales as array values
*
* @return array
*/
private function getAllLocales()
{
static $locales = array();
if ( ! empty($locales)) {
return $locales;
}
// Finding all PHP files in the xx_XX directories
$providerDir = __DIR__ .'/../../../src/Faker/Provider';
foreach (glob($providerDir .'/*_*/*.php') as $file) {
$localisation = basename(dirname($file));
if (isset($locales[ $localisation ])) {
continue;
}
$locales[ $localisation ] = $localisation;
}
return $locales;
}
}

View File

@@ -0,0 +1,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,28 @@
<?php
namespace Faker\Test\Provider;
use Faker\Generator;
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()
{
$faker = new Generator();
$faker->seed(123);
$this->assertEquals("8e2e0c84-50dd-367c-9e66-f3ab455c78d6", BaseProvider::uuid());
$this->assertEquals("073eb60a-902c-30ab-93d0-a94db371f6c8", BaseProvider::uuid());
}
protected function isUuid($uuid)
{
return is_string($uuid) && (bool) preg_match('/^[a-f0-9]{8,8}-(?:[a-f0-9]{4,4}-){3,3}[a-f0-9]{12,12}$/i', $uuid);
}
}

View File

@@ -0,0 +1,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,35 @@
<?php
namespace Faker\Provider\en_GB;
use Faker\Generator;
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 testPostcode()
{
$postcode = $this->faker->postcode();
$this->assertNotEmpty($postcode);
$this->assertInternalType('string', $postcode);
$this->assertRegExp('@^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$@i', $postcode);
}
}

View File

@@ -0,0 +1,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,56 @@
<?php
namespace Faker\Provider\ng_NG;
use Faker\Generator;
use Faker\Provider\en_NG\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 testPostcodeIsNotEmptyAndIsValid()
{
$postcode = $this->faker->postcode();
$this->assertNotEmpty($postcode);
$this->assertInternalType('string', $postcode);
}
/**
* Test the name of the Nigerian State/County
*/
public function testCountyIsAValidString()
{
$county = $this->faker->county;
$this->assertNotEmpty($county);
$this->assertInternalType('string', $county);
}
/**
* Test the name of the Nigerian Region in a State.
*/
public function testRegionIsAValidString()
{
$region = $this->faker->region;
$this->assertNotEmpty($region);
$this->assertInternalType('string', $region);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Faker\Test\Provider\ng_NG;
use Faker\Generator;
use Faker\Provider\en_NG\Person;
use Faker\Provider\en_NG\Internet;
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));
$this->faker = $faker;
}
public function testEmailIsValid()
{
$email = $this->faker->email();
$this->assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL));
$this->assertNotEmpty($email);
$this->assertInternalType('string', $email);
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,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,47 @@
<?php
namespace Faker\Test\Provider\en_ZA;
use Faker\Generator;
use Faker\Provider\en_ZA\Person;
use Faker\Provider\DateTime;
class PersonTest extends \PHPUnit_Framework_TestCase
{
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->addProvider(new DateTime($faker));
$this->faker = $faker;
}
public function testIdNumberWithDefaults()
{
$idNumber = $this->faker->idNumber();
$this->assertEquals(13, strlen($idNumber));
$this->assertRegExp('#^\d{13}$#', $idNumber);
$this->assertInternalType('string', $idNumber);
}
public function testIdNumberForMales()
{
$idNumber = $this->faker->idNumber(new \DateTime(), true, 'male');
$genderDigit = substr($idNumber, 6, 1);
$this->assertContains($genderDigit, array('5', '6', '7', '8', '9'));
}
public function testIdNumberForFemales()
{
$idNumber = $this->faker->idNumber(new \DateTime(), true, 'female');
$genderDigit = substr($idNumber, 6, 1);
$this->assertContains($genderDigit, array('0', '1', '2', '3', '4'));
}
}

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,60 @@
<?php
namespace Faker\Test\Provider\es_ES;
use Faker\Generator;
use Faker\Provider\es_ES\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 testVAT()
{
$vat = $this->faker->vat();
$this->assertTrue($this->isValidCIF($vat));
}
/**
* Validation taken from https://github.com/amnesty/drupal-nif-nie-cif-validator/
* @link https://github.com/amnesty/drupal-nif-nie-cif-validator/blob/master/includes/nif-nie-cif.php
*/
function isValidCIF($docNumber)
{
$fixedDocNumber = strtoupper($docNumber);
return $this->isValidCIFFormat($fixedDocNumber);
}
function isValidCIFFormat($docNumber)
{
return $this->respectsDocPattern($docNumber, '/^[PQSNWR][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z0-9]/')
||
$this->respectsDocPattern($docNumber, '/^[ABCDEFGHJUV][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/');
}
function respectsDocPattern($givenString, $pattern)
{
$isValid = FALSE;
$fixedString = strtoupper($givenString);
if (is_int(substr($fixedString, 0, 1))) {
$fixedString = substr("000000000" . $givenString, -9);
}
if (preg_match($pattern, $fixedString)) {
$isValid = TRUE;
}
return $isValid;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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,39 @@
<?php
namespace Faker\Test\Provider\pt_PT;
use Faker\Generator;
use Faker\Provider\pt_PT\Address;
use Faker\Provider\pt_PT\Person;
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);
}
public function testAddressIsSingleLine()
{
$this->faker->addProvider(new Person($this->faker));
$address = $this->faker->address();
$this->assertFalse(strstr($address, "\n"));
}
}

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,254 @@
<?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]$/';
/**
* @var \Faker\Generator
*
*/
protected $faker;
protected $originalTz;
public function setUp()
{
$this->originalTz = @date_default_timezone_get();
date_default_timezone_set('Europe/Bucharest');
$faker = new Generator();
$faker->addProvider(new DateTime($faker));
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
public function tearDown()
{
date_default_timezone_set($this->originalTz);
}
public function invalidGenderProvider()
{
return array(
array('elf'),
array('ent'),
array('fmle'),
array('mal'),
);
}
public function invalidYearProvider()
{
return array(
array(1652),
array(1799),
array(2100),
array(2252),
);
}
public function validYearProvider()
{
return array(
array(null),
array(''),
array(1800),
array(1850),
array(1900),
array(1990),
array(2000),
array(2099),
);
}
public function validCountyCodeProvider()
{
return array(
array('AB'), array('AR'), array('AG'), array('B'), array('BC'), array('BH'), array('BN'), array('BT'),
array('BV'), array('BR'), array('BZ'), array('CS'), array('CL'), array('CJ'), array('CT'), array('CV'),
array('DB'), array('DJ'), array('GL'), array('GR'), array('GJ'), array('HR'), array('HD'), array('IL'),
array('IS'), array('IF'), array('MM'), array('MH'), array('MS'), array('NT'), array('OT'), array('PH'),
array('SM'), array('SJ'), array('SB'), array('SV'), array('TR'), array('TM'), array('TL'), array('VS'),
array('VL'), array('VN'), array('B1'), array('B2'), array('B3'), array('B4'), array('B5'), array('B6')
);
}
public function invalidCountyCodeProvider()
{
return array(
array('JK'), array('REW'), array('x'), array('FF'), array('aaaddadaada')
);
}
public function validInputDataProvider()
{
return array(
array(Person::GENDER_MALE, '1981-06-16','B2', true, '181061642'),
array(Person::GENDER_FEMALE, '1981-06-16','B2', true, '281061642'),
array(Person::GENDER_MALE, '1981-06-16','B2', false, '981061642'),
array(Person::GENDER_FEMALE, '1981-06-16','B2', false, '981061642'),
);
}
/**
*
*/
public function test_allRandom_returnsValidCnp()
{
$cnp = $this->faker->cnp;
$this->assertTrue(
$this->isValidCnp($cnp),
sprintf("Invalid CNP '%' generated", $cnp)
);
}
/**
*
*/
public function test_validGender_returnsValidCnp()
{
$cnp = $this->faker->cnp(Person::GENDER_MALE);
$this->assertTrue(
$this->isValidMaleCnp($cnp),
sprintf("Invalid CNP '%' generated for '%s' gender", $cnp, Person::GENDER_MALE)
);
$cnp = $this->faker->cnp(Person::GENDER_FEMALE);
$this->assertTrue(
$this->isValidFemaleCnp($cnp),
sprintf("Invalid CNP '%' generated for '%s' gender", $cnp, Person::GENDER_FEMALE)
);
}
/**
* @param string $value
*
* @dataProvider invalidGenderProvider
*/
public function test_invalidGender_throwsException($value)
{
$this->setExpectedException('InvalidArgumentException');
$this->faker->cnp($value);
}
/**
* @param string $value year of birth
*
* @dataProvider validYearProvider
*/
public function test_validYear_returnsValidCnp($value)
{
$cnp = $this->faker->cnp(null, $value);
$this->assertTrue(
$this->isValidCnp($cnp),
sprintf("Invalid CNP '%' generated for valid year '%s'", $cnp, $value)
);
}
/**
* @param string $value year of birth
*
* @dataProvider invalidYearProvider
*/
public function test_invalidYear_throwsException($value)
{
$this->setExpectedException('InvalidArgumentException');
$this->faker->cnp(null, $value);
}
/**
* @param $value
* @dataProvider validCountyCodeProvider
*/
public function test_validCountyCode_returnsValidCnp($value)
{
$cnp = $this->faker->cnp(null, null, $value);
$this->assertTrue(
$this->isValidCnp($cnp),
sprintf("Invalid CNP '%' generated for valid year '%s'", $cnp, $value)
);
}
/**
* @param $value
* @dataProvider invalidCountyCodeProvider
*/
public function test_invalidCountyCode_throwsException($value)
{
$this->setExpectedException('InvalidArgumentException');
$this->faker->cnp(null, null, $value);
}
/**
*
*/
public function test_nonResident_returnsValidCnp()
{
$cnp = $this->faker->cnp(null, null, null, false);
$this->assertTrue(
$this->isValidCnp($cnp),
sprintf("Invalid CNP '%' generated for non resident", $cnp)
);
$this->assertStringStartsWith(
'9',
$cnp,
sprintf("Invalid CNP '%' generated for non resident (should start with 9)", $cnp)
);
}
/**
*
* @param $gender
* @param $dateOfBirth
* @param $county
* @param $isResident
* @param $expectedCnpStart
*
* @dataProvider validInputDataProvider
*/
public function test_validInputData_returnsValidCnp($gender, $dateOfBirth, $county, $isResident, $expectedCnpStart)
{
$cnp = $this->faker->cnp($gender, $dateOfBirth, $county, $isResident);
$this->assertStringStartsWith(
$expectedCnpStart,
$cnp,
sprintf("Invalid CNP '%' generated for non valid data", $cnp)
);
}
protected function isValidFemaleCnp($value)
{
return $this->isValidCnp($value) && in_array($value[0], array(2, 4, 6, 8, 9));
}
protected function isValidMaleCnp($value)
{
return $this->isValidCnp($value) && in_array($value[0], array(1, 3, 5, 7, 9));
}
protected function isValidCnp($cnp)
{
if (preg_match(static::TEST_CNP_REGEX, $cnp) !== false) {
$checkNumber = 279146358279;
$checksum = 0;
foreach (range(0, 11) as $digit) {
$checksum += (int)substr($cnp, $digit, 1) * (int)substr($checkNumber, $digit, 1);
}
$checksum = $checksum % 11;
$checksum = $checksum == 10 ? 1 : $checksum;
if ($checksum == substr($cnp, -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[01267]|70)\d{6}$/', $this->faker->tollFreePhoneNumber());
}
public function testPremiumRatePhoneNumberReturnsPremiumRatePhoneNumber()
{
$this->assertRegExp('/^090[036]\d{6}$/', $this->faker->premiumRatePhoneNumber());
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Faker\Test\Provider\ru_RU;
use Faker\Generator;
use Faker\Provider\ru_RU\Company;
class CompanyTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testINN()
{
$this->assertRegExp('/^[0-9]{10}$/', $this->faker->inn);
$this->assertEquals("77", substr($this->faker->inn("77"), 0, 2));
$this->assertEquals("02", substr($this->faker->inn(2), 0, 2));
}
public function testKPP()
{
$this->assertRegExp('/^[0-9]{9}$/', $this->faker->kpp);
$this->assertEquals("01001", substr($this->faker->kpp, -5, 5));
$inn = $this->faker->inn;
$this->assertEquals(substr($inn, 0, 4), substr($this->faker->kpp($inn), 0, 4));
}
}

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,56 @@
<?php
namespace Faker\Test\Provider\uk_UA;
use Faker\Generator;
use Faker\Provider\uk_UA\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
public function testFirstNameMaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('Максим', $faker->firstNameMale());
}
public function testFirstNameFemaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('Людмила', $faker->firstNameFemale());
}
public function testMiddleNameMaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('Миколайович', $faker->middleNameMale());
}
public function testMiddleNameFemaleReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('Миколаївна', $faker->middleNameFemale());
}
public function testLastNameReturns()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$faker->seed(1);
$this->assertEquals('Броваренко', $faker->lastName());
}
}

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,26 @@
<?php
namespace Faker\Test\Provider\zh_TW;
use Faker\Generator;
use Faker\Provider\zh_TW\Company;
class CompanyTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Company($faker));
$this->faker = $faker;
}
public function testVAT()
{
$this->assertEquals(8, floor(log10($this->faker->VAT) + 1));
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace Faker\Test\Provider\zh_TW;
use Faker\Generator;
use Faker\Provider\zh_TW\Person;
class PersonTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Generator
*/
private $faker;
public function setUp()
{
$faker = new Generator();
$faker->addProvider(new Person($faker));
$this->faker = $faker;
}
/**
* @see https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89
*/
public function testPersonalIdentityNumber()
{
$id = $this->faker->personalIdentityNumber;
$firstChar = substr($id, 0, 1);
$codesString = Person::$idBirthplaceCode[$firstChar] . substr($id, 1);
// After transfer the first alphabet word into 2 digit number, there should be totally 11 numbers
$this->assertRegExp("/^[0-9]{11}$/", $codesString);
$total = 0;
$codesArray = str_split($codesString);
foreach ($codesArray as $key => $code) {
$total += $code * Person::$idDigitValidator[$key];
}
// Validate
$this->assertEquals(0, ($total % 10));
}
}

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 testItShouldExplodeTheStringToArray()
{
$this->assertSame(
array('中', '文', '測', '試', '真', '有', '趣'),
$this->getMethod('explode')->invokeArgs(null, array('中文測試真有趣'))
);
$this->assertSame(
array('標', '點', '', '符', '號', ''),
$this->getMethod('explode')->invokeArgs(null, array('標點,符號!'))
);
}
/** @test */
function testItShouldReturnTheStringLength()
{
$this->assertContains(
$this->getMethod('strlen')->invokeArgs(null, array('中文測試真有趣')),
array(7, 21)
);
}
/** @test */
function testItShouldReturnTheCharacterIsValidStartOrNot()
{
$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 testItShouldAppendEndPunctToTheEndOfString()
{
$this->assertSame(
'中文測試真有趣。',
$this->getMethod('appendEnd')->invokeArgs(null, array('中文測試真有趣'))
);
$this->assertSame(
'中文測試真有趣。',
$this->getMethod('appendEnd')->invokeArgs(null, array('中文測試真有趣,'))
);
$this->assertSame(
'中文測試真有趣!',
$this->getMethod('appendEnd')->invokeArgs(null, array('中文測試真有趣!'))
);
}
}

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