+ var
+ // Based on IPTest.php > testisIPv4
+ IPV4_CASES = [
+ [ false, false, 'Boolean false is not an IP' ],
+ [ false, true, 'Boolean true is not an IP' ],
+ [ false, '', 'Empty string is not an IP' ],
+ [ false, 'abc', '"abc" is not an IP' ],
+ [ false, ':', 'Colon is not an IP' ],
+ [ false, '124.24.52', 'IPv4 not enough quads' ],
+ [ false, '24.324.52.13', 'IPv4 out of range' ],
+ [ false, '.24.52.13', 'IPv4 starts with period' ],
+
+ [ true, '124.24.52.13', '124.24.52.134 is a valid IP' ],
+ [ true, '1.24.52.13', '1.24.52.13 is a valid IP' ],
+ [ false, '74.24.52.13/20', 'IPv4 ranges are not recognized as valid IPs' ]
+ ],
+
+ // Based on IPTest.php > testisIPv6
+ IPV6_CASES = [
+ [ false, ':fc:100::', 'IPv6 starting with lone ":"' ],
+ [ false, 'fc:100:::', 'IPv6 ending with a ":::"' ],
+ [ false, 'fc:300', 'IPv6 with only 2 words' ],
+ [ false, 'fc:100:300', 'IPv6 with only 3 words' ],
+
+ [ false, 'fc:100:a:d:1:e:ac:0::', 'IPv6 with 8 words ending with "::"' ],
+ [ false, 'fc:100:a:d:1:e:ac:0:1::', 'IPv6 with 9 words ending with "::"' ],
+
+ [ false, ':::' ],
+ [ false, '::0:', 'IPv6 ending in a lone ":"' ],
+
+ [ true, '::', 'IPv6 zero address' ],
+
+ [ false, '::fc:100:a:d:1:e:ac:0', 'IPv6 with "::" and 8 words' ],
+ [ false, '::fc:100:a:d:1:e:ac:0:1', 'IPv6 with 9 words' ],
+
+ [ false, ':fc::100', 'IPv6 starting with lone ":"' ],
+ [ false, 'fc::100:', 'IPv6 ending with lone ":"' ],
+ [ false, 'fc:::100', 'IPv6 with ":::" in the middle' ],
+
+ [ true, 'fc::100', 'IPv6 with "::" and 2 words' ],
+ [ true, 'fc::100:a', 'IPv6 with "::" and 3 words' ],
+ [ true, 'fc::100:a:d', 'IPv6 with "::" and 4 words' ],
+ [ true, 'fc::100:a:d:1', 'IPv6 with "::" and 5 words' ],
+ [ true, 'fc::100:a:d:1:e', 'IPv6 with "::" and 6 words' ],
+ [ true, 'fc::100:a:d:1:e:ac', 'IPv6 with "::" and 7 words' ],
+ [ true, '2001::df', 'IPv6 with "::" and 2 words' ],
+ [ true, '2001:5c0:1400:a::df', 'IPv6 with "::" and 5 words' ],
+ [ true, '2001:5c0:1400:a::df:2', 'IPv6 with "::" and 6 words' ],
+
+ [ false, 'fc::100:a:d:1:e:ac:0', 'IPv6 with "::" and 8 words' ],
+ [ false, 'fc::100:a:d:1:e:ac:0:1', 'IPv6 with 9 words' ]
+ ];
+
+ Array.prototype.push.apply( IPV6_CASES,
+ $.map( [
+ 'fc:100::',
+ 'fc:100:a::',
+ 'fc:100:a:d::',
+ 'fc:100:a:d:1::',
+ 'fc:100:a:d:1:e::',
+ 'fc:100:a:d:1:e:ac::',
+ '::0',
+ '::fc',
+ '::fc:100',
+ '::fc:100:a',
+ '::fc:100:a:d',
+ '::fc:100:a:d:1',
+ '::fc:100:a:d:1:e',
+ '::fc:100:a:d:1:e:ac',
+ 'fc:100:a:d:1:e:ac:0'
+ ], function ( el ) {
+ return [ [ true, el, el + ' is a valid IP' ] ];
+ } )
+ );
+