@@ -40,29 +40,65 @@ public function localeDataProvider()
40
40
/**
41
41
* @link http://stackoverflow.com/questions/12026842/how-to-validate-an-email-address-in-php
42
42
*
43
- * @requires PHP 5.4
44
43
* @dataProvider localeDataProvider
45
44
*/
46
45
public function testEmailIsValid ($ locale )
47
46
{
47
+ if ($ locale !== 'en_US ' && !class_exists ('Transliterator ' )) {
48
+ $ this ->markTestSkipped ('Transliterator class not available (intl extension) ' );
49
+ }
50
+
48
51
$ this ->loadLocalProviders ($ locale );
49
52
$ 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 ' ;
50
53
$ emailAddress = $ this ->faker ->email ();
51
54
$ this ->assertRegExp ($ pattern , $ emailAddress );
52
55
}
53
56
54
57
/**
55
- * @requires PHP 5.4
56
58
* @dataProvider localeDataProvider
57
59
*/
58
60
public function testUsernameIsValid ($ locale )
59
61
{
62
+ if ($ locale !== 'en_US ' && !class_exists ('Transliterator ' )) {
63
+ $ this ->markTestSkipped ('Transliterator class not available (intl extension) ' );
64
+ }
65
+
60
66
$ this ->loadLocalProviders ($ locale );
61
- $ pattern = '/^[A-Za-z0-9._]+ $/ ' ;
67
+ $ pattern = '/^[A-Za-z0-9]+([ ._][A-Za-z0-9]+)* $/ ' ;
62
68
$ username = $ this ->faker ->username ();
63
69
$ this ->assertRegExp ($ pattern , $ username );
64
70
}
65
71
72
+ /**
73
+ * @dataProvider localeDataProvider
74
+ */
75
+ public function testDomainnameIsValid ($ locale )
76
+ {
77
+ if ($ locale !== 'en_US ' && !class_exists ('Transliterator ' )) {
78
+ $ this ->markTestSkipped ('Transliterator class not available (intl extension) ' );
79
+ }
80
+
81
+ $ this ->loadLocalProviders ($ locale );
82
+ $ pattern = '/^[a-z]+(\.[a-z]+)+$/ ' ;
83
+ $ domainName = $ this ->faker ->domainName ();
84
+ $ this ->assertRegExp ($ pattern , $ domainName );
85
+ }
86
+
87
+ /**
88
+ * @dataProvider localeDataProvider
89
+ */
90
+ public function testDomainwordIsValid ($ locale )
91
+ {
92
+ if ($ locale !== 'en_US ' && !class_exists ('Transliterator ' )) {
93
+ $ this ->markTestSkipped ('Transliterator class not available (intl extension) ' );
94
+ }
95
+
96
+ $ this ->loadLocalProviders ($ locale );
97
+ $ pattern = '/^[a-z]+$/ ' ;
98
+ $ domainWord = $ this ->faker ->domainWord ();
99
+ $ this ->assertRegExp ($ pattern , $ domainWord );
100
+ }
101
+
66
102
public function loadLocalProviders ($ locale )
67
103
{
68
104
$ providerPath = realpath (__DIR__ . '/../../../src/Faker/Provider ' );
0 commit comments