X-Git-Url: http://git.osdn.net/view?p=pukiwiki%2Fpukiwiki_sandbox.git;a=blobdiff_plain;f=spam%2FSpamTest.php;h=145f361315f5ac83cccf0c48f22ff7959cdf3e87;hp=3797489131d37e40741c396ab5fc1228f67c48b1;hb=6c3a5292b41df8e1d595cbf7cb67c0b6918af958;hpb=e7c806f3eb9d8713faa305f94a79dfde3925d7e7 diff --git a/spam/SpamTest.php b/spam/SpamTest.php index 3797489..145f361 100644 --- a/spam/SpamTest.php +++ b/spam/SpamTest.php @@ -1,8 +1,8 @@ assertEquals(0, count(uri_pickup(NULL))); - $this->assertEquals(0, count(uri_pickup(TRUE))); - $this->assertEquals(0, count(uri_pickup(FALSE))); - $this->assertEquals(0, count(uri_pickup(array('foobar')))); - $this->assertEquals(0, count(uri_pickup(''))); - $this->assertEquals(0, count(uri_pickup(0))); - - // 1st argument: Some - $test_string = <<assertEquals(5, count($results)); - - // ttp://wwW.Example.Org:80#TTP_and_www - $this->assertEquals('http', $results[0]['scheme']); - $this->assertEquals('', $results[0]['userinfo']); - $this->assertEquals('example.org', $results[0]['host']); - $this->assertEquals('', $results[0]['port']); - $this->assertEquals('/', $results[0]['path']); - $this->assertEquals('', $results[0]['file']); - $this->assertEquals('', $results[0]['query']); - $this->assertEquals('ttp_and_www', $results[0]['fragment']); - - // https://nasty.example.org:443/foo/xxx#port443/slash - $this->assertEquals('https', $results[1]['scheme']); - $this->assertEquals('', $results[1]['userinfo']); - $this->assertEquals('nasty.example.org', $results[1]['host']); - $this->assertEquals('', $results[1]['port']); - $this->assertEquals('/foo/', $results[1]['path']); - $this->assertEquals('xxx', $results[1]['file']); - $this->assertEquals('', $results[1]['query']); - $this->assertEquals('port443', $results[1]['fragment']); - - // sftp://foobar.example.org:80/dfsdfs#sftp_bat_port80 - $this->assertEquals('sftp', $results[2]['scheme']); - $this->assertEquals('', $results[2]['userinfo']); - $this->assertEquals('foobar.example.org', $results[2]['host']); - $this->assertEquals('80', $results[2]['port']); - $this->assertEquals('/', $results[2]['path']); - $this->assertEquals('dfsdfs', $results[2]['file']); - $this->assertEquals('', $results[2]['query']); - $this->assertEquals('ftp_bat_port80', $results[2]['fragment']); - - // ftp://cnn.example.com&story=breaking_news@10.0.0.1/top_story.htm - $this->assertEquals('ftp', $results[3]['scheme']); - $this->assertEquals('cnn.example.com&story=breaking_news', $results[3]['userinfo']); - $this->assertEquals('10.0.0.1', $results[3]['host']); - $this->assertEquals('', $results[3]['port']); - $this->assertEquals('/', $results[3]['path']); - $this->assertEquals('top_story.htm', $results[3]['file']); - $this->assertEquals('', $results[3]['query']); - $this->assertEquals('', $results[3]['fragment']); + return array( + '[NULL]' => NULL, + '[TRUE]' => TRUE, + '[FALSE]' => FALSE, + '[array(foobar)]' => array('foobar'), + '[]' => '', + '[0]' => 0, + '[1]' => 1 + ); } - function testFunc_scheme_normalize() + function testFunc_strings() { - // Null - $this->assertEquals('', scheme_normalize(NULL)); - $this->assertEquals('', scheme_normalize(TRUE)); - $this->assertEquals('', scheme_normalize(FALSE)); - $this->assertEquals('', scheme_normalize(array('foobar'))); - $this->assertEquals('', scheme_normalize('')); - $this->assertEquals('', scheme_normalize(0)); - $this->assertEquals('', scheme_normalize(1)); - - // CASE - $this->assertEquals('http', scheme_normalize('HTTP')); - - // Aliases - $this->assertEquals('pop3', scheme_normalize('pop')); - $this->assertEquals('nntp', scheme_normalize('news')); - $this->assertEquals('imap', scheme_normalize('imap4')); - $this->assertEquals('nntps', scheme_normalize('snntp')); - $this->assertEquals('nntps', scheme_normalize('snews')); - $this->assertEquals('pop3s', scheme_normalize('spop3')); - $this->assertEquals('pop3s', scheme_normalize('pops')); - - // Abbrevs - $this->assertEquals('http', scheme_normalize('ttp')); - $this->assertEquals('https', scheme_normalize('ttps')); - - // Abbrevs considererd harmless - $this->assertEquals('', scheme_normalize('ttp', FALSE)); - $this->assertEquals('', scheme_normalize('ttps', FALSE)); - } - - function testFunc_host_normalize() - { - // Null - $this->assertEquals('', host_normalize(NULL)); - $this->assertEquals('', host_normalize(TRUE)); - $this->assertEquals('', host_normalize(FALSE)); - $this->assertEquals('', host_normalize(array('foobar'))); - $this->assertEquals('', host_normalize('')); - $this->assertEquals('', host_normalize(0)); - $this->assertEquals('', host_normalize(1)); - - // Hostname is case-insensitive - $this->assertEquals('example.org', host_normalize('ExAMPle.ORG')); - - // Cut 'www' (destructive) - $this->assertEquals('example.org', host_normalize('WWW.example.org')); - } - - function testFunc_port_normalize() - { - $scheme = 'dont_care'; - // 1st argument: Null - $this->assertEquals('', port_normalize(NULL, $scheme)); - $this->assertEquals('', port_normalize(TRUE, $scheme)); - $this->assertEquals('', port_normalize(FALSE, $scheme)); - $this->assertEquals('', port_normalize(array('foobar'), $scheme)); - $this->assertEquals('', port_normalize('', $scheme)); - - // 1st argument: Known port - $this->assertEquals('', port_normalize(-1, $scheme)); - $this->assertEquals(0, port_normalize(0, $scheme)); - $this->assertEquals(1, port_normalize(1, $scheme)); - $this->assertEquals('', port_normalize( 21, 'ftp')); - $this->assertEquals('', port_normalize( 22, 'ssh')); - $this->assertEquals('', port_normalize( 23, 'telnet')); - $this->assertEquals('', port_normalize( 25, 'smtp')); - $this->assertEquals('', port_normalize( 69, 'tftp')); - $this->assertEquals('', port_normalize( 70, 'gopher')); - $this->assertEquals('', port_normalize( 79, 'finger')); - $this->assertEquals('', port_normalize( 80, 'http')); - $this->assertEquals('', port_normalize( 110, 'pop3')); - $this->assertEquals('', port_normalize( 115, 'sftp')); - $this->assertEquals('', port_normalize( 119, 'nntp')); - $this->assertEquals('', port_normalize( 143, 'imap')); - $this->assertEquals('', port_normalize( 194, 'irc')); - $this->assertEquals('', port_normalize( 210, 'wais')); - $this->assertEquals('', port_normalize( 443, 'https')); - $this->assertEquals('', port_normalize( 563, 'nntps')); - $this->assertEquals('', port_normalize( 873, 'rsync')); - $this->assertEquals('', port_normalize( 990, 'ftps')); - $this->assertEquals('', port_normalize( 992, 'telnets')); - $this->assertEquals('', port_normalize( 993, 'imaps')); - $this->assertEquals('', port_normalize( 994, 'ircs')); - $this->assertEquals('', port_normalize( 995, 'pop3s')); - $this->assertEquals('', port_normalize(3306, 'mysql')); - $this->assertEquals(8080, port_normalize( 8080, $scheme)); - $this->assertEquals(65535, port_normalize(65535, $scheme)); - $this->assertEquals(65536, port_normalize(65536, $scheme)); // Seems not invalid in RFC - - // 1st argument: Invalid type - $this->assertEquals('1x', port_normalize('001', $scheme) . 'x'); - $this->assertEquals('', port_normalize('+0', $scheme)); - $this->assertEquals('', port_normalize('0-1', $scheme)); // intval() says '0' - $this->assertEquals('', port_normalize('str', $scheme)); - - // 2nd and 3rd argument: Null - $this->assertEquals(80, port_normalize(80, NULL, TRUE)); - $this->assertEquals(80, port_normalize(80, TRUE, TRUE)); - $this->assertEquals(80, port_normalize(80, FALSE, TRUE)); - $this->assertEquals(80, port_normalize(80, array('foobar'), TRUE)); - $this->assertEquals(80, port_normalize(80, '', TRUE)); - - // 2nd and 3rd argument: Do $scheme_normalize - $this->assertEquals('', port_normalize(80, 'TTP', TRUE)); - $this->assertEquals('', port_normalize(110, 'POP', TRUE)); - $this->assertEquals(80, port_normalize(80, 'HTTP', FALSE)); + $this->assertEquals('', strings(NULL, 0)); + $this->assertEquals('', strings(TRUE, 0)); + $this->assertEquals('', strings(FALSE, 0)); + $this->assertEquals('', strings('', 0)); + $this->assertEquals('0', strings(0, 0)); + $this->assertEquals('1', strings(1, 0)); + + // Setup + $t1 = '1' . "\n"; + $t2 = '12' . "\n"; + $t3 = '123' . "\n"; + $t4 = '1234' . "\n"; + $t5 = '12345'; + $test = $t1 . $t2 . $t3 . $t4 . $t5; + + // Minimum length + $this->assertEquals($t1 . $t2 . $t3 . $t4 . $t5, strings($test, -1)); + $this->assertEquals($t1 . $t2 . $t3 . $t4 . $t5, strings($test, 0)); + $this->assertEquals($t1 . $t2 . $t3 . $t4 . $t5, strings($test, 1)); + $this->assertEquals( $t2 . $t3 . $t4 . $t5, strings($test, 2)); + $this->assertEquals( $t3 . $t4 . $t5, strings($test, 3)); + $this->assertEquals( $t4 . $t5, strings($test, 4)); + $this->assertEquals( $t4 . $t5, strings($test)); // Default + $this->assertEquals( $t5, strings($test, 5)); + + // Preserve the last newline + $this->assertEquals($t4 . $t5, strings($test , 4)); + $this->assertEquals($t4 . $t5 . "\n", strings($test . "\n", 4)); + + // Ignore sequential spaces, and spaces at the beginning/end of lines + $test = ' A' . ' ' . ' ' . 'B '; + $this->assertEquals($test, strings($test, 0, FALSE)); + $this->assertEquals('A B', strings($test, 0, TRUE )); } - function testFunc_path_normalize() + function testFunc_array_count_leaves() { - // 1st argument: Null - $this->assertEquals('/', path_normalize(NULL)); - $this->assertEquals('/', path_normalize(TRUE)); - $this->assertEquals('/', path_normalize(FALSE)); - $this->assertEquals('/', path_normalize(array('foobar'))); - $this->assertEquals('/', path_normalize('')); - $this->assertEquals('/', path_normalize(0)); - $this->assertEquals('/', path_normalize(1)); - - // 1st argument: CASE sensitive - $this->assertEquals('/ExAMPle', path_normalize('ExAMPle')); - $this->assertEquals('/#hoge', path_normalize('#hoge')); - $this->assertEquals('/a/b/c/d', path_normalize('/a/b/./c////./d')); - $this->assertEquals('/b/', path_normalize('/a/../../../b/')); - - // 2nd argument - $this->assertEquals('\\b\\c\\d\\', path_normalize('\\a\\..\\b\\.\\c\\\\.\\d\\', '\\')); - $this->assertEquals('str1str3str', path_normalize('str1strstr2str..str3str', 'str')); - $this->assertEquals('/do/../nothing/', path_normalize('/do/../nothing/', TRUE)); - $this->assertEquals('/do/../nothing/', path_normalize('/do/../nothing/', array('a'))); - $this->assertEquals('', path_normalize(array('a'), array('b'))); + // Empty array = 0, if option is not set + $array = array(); + $this->assertEquals(0, array_count_leaves($array, FALSE)); + $this->assertEquals(1, array_count_leaves($array, TRUE)); + $array = array( + array( + array() + ) + ); + $this->assertEquals(0, array_count_leaves($array, FALSE)); + $this->assertEquals(1, array_count_leaves($array, TRUE)); + + // One leaf = 1 + foreach(array(NULL, TRUE, FALSE, -1, 0, 1, '', 'foobar') as $value) { + $this->assertEquals(1, array_count_leaves($value, FALSE)); + $this->assertEquals(1, array_count_leaves($value, TRUE)); + } + + // Compisite + $array = array( + 1, + 'v1', + array(), // Empty array + array( + 2, + 'v2', + 'k1' => TRUE, + 'k2' => FALSE, + 'k3' => array(), // Empty array + 'k4' => array( + 3, + 'v3', + 'k5' => NULL, + 'k6' => array(), // Empty array + ), + ), + 'k7' => 4, + 'k8' => 'v4', + 'k9' => array(), // Empty array + 'k10' => array( + 5, + 'v5', + 'k11' => NULL, + 'k12' => array(), // Empty array + ), + ); + $this->assertEquals(14, array_count_leaves($array, FALSE)); + $this->assertEquals(19, array_count_leaves($array, TRUE)); } - function testFunc_file_normalize() + function testPhpFunc_array_unique() { - // 1st argument: Null - $this->assertEquals('', file_normalize(NULL)); - $this->assertEquals('', file_normalize(TRUE)); - $this->assertEquals('', file_normalize(FALSE)); - $this->assertEquals('', file_normalize(array('foobar'))); - $this->assertEquals('', file_normalize('')); - $this->assertEquals('', file_normalize(0)); - $this->assertEquals('', file_normalize(1)); - - // 1st argument: Cut DirectoryIndexes (Destructive) - $this->assertEquals('', file_normalize('default.htm')); - $this->assertEquals('', file_normalize('default.html')); - $this->assertEquals('', file_normalize('default.asp')); - $this->assertEquals('', file_normalize('default.aspx')); - $this->assertEquals('', file_normalize('index')); - $this->assertEquals('', file_normalize('index.htm')); - $this->assertEquals('', file_normalize('index.html')); - $this->assertEquals('', file_normalize('index.shtml')); - $this->assertEquals('', file_normalize('index.jsp')); - $this->assertEquals('', file_normalize('index.php')); - $this->assertEquals('', file_normalize('index.php')); - $this->assertEquals('', file_normalize('index.php3')); - $this->assertEquals('', file_normalize('index.php4')); - $this->assertEquals('', file_normalize('index.pl')); - $this->assertEquals('', file_normalize('index.py')); - $this->assertEquals('', file_normalize('index.rb')); - $this->assertEquals('', file_normalize('index.cgi')); - - // Apache 2.0.59 default 'index.html' variants - $this->assertEquals('', file_normalize('index.html.ca')); - $this->assertEquals('', file_normalize('index.html.cz.iso8859-2')); - $this->assertEquals('', file_normalize('index.html.de')); - $this->assertEquals('', file_normalize('index.html.dk')); - $this->assertEquals('', file_normalize('index.html.ee')); - $this->assertEquals('', file_normalize('index.html.el')); - $this->assertEquals('', file_normalize('index.html.en')); - $this->assertEquals('', file_normalize('index.html.es')); - $this->assertEquals('', file_normalize('index.html.et')); - $this->assertEquals('', file_normalize('index.html.fr')); - $this->assertEquals('', file_normalize('index.html.he.iso8859-8')); - $this->assertEquals('', file_normalize('index.html.hr.iso8859-2')); - $this->assertEquals('', file_normalize('index.html.it')); - $this->assertEquals('', file_normalize('index.html.ja.iso2022-jp')); - $this->assertEquals('', file_normalize('index.html.ko.euc-kr')); - $this->assertEquals('', file_normalize('index.html.lb.utf8')); - $this->assertEquals('', file_normalize('index.html.nl')); - $this->assertEquals('', file_normalize('index.html.nn')); - $this->assertEquals('', file_normalize('index.html.no')); - $this->assertEquals('', file_normalize('index.html.po.iso8859-2')); - $this->assertEquals('', file_normalize('index.html.pt')); - $this->assertEquals('', file_normalize('index.html.pt-br')); - $this->assertEquals('', file_normalize('index.html.ru.cp866')); - $this->assertEquals('', file_normalize('index.html.ru.cp-1251')); - $this->assertEquals('', file_normalize('index.html.ru.iso-ru')); - $this->assertEquals('', file_normalize('index.html.ru.koi8-r')); - $this->assertEquals('', file_normalize('index.html.ru.utf8')); - $this->assertEquals('', file_normalize('index.html.sv')); - $this->assertEquals('', file_normalize('index.html.var')); // default - $this->assertEquals('', file_normalize('index.html.zh-cn.gb2312')); - $this->assertEquals('', file_normalize('index.html.zh-tw.big5')); - - $this->assertEquals('', file_normalize('index.html.po.iso8859-2')); - $this->assertEquals('', file_normalize('index.html.zh-tw.big5')); - - $this->assertEquals('', file_normalize('index.ja.en.de.html')); - - // .gz - $this->assertEquals('', file_normalize('index.html.ca.gz')); - $this->assertEquals('', file_normalize('index.html.en.ja.ca.z')); - - // $this->assertEquals('foo/', file_normalize('foo/index.html')); - - // $this->assertEquals('ExAMPle', file_normalize('ExAMPle')); - // $this->assertEquals('exe.exe', file_normalize('exe.exe')); - // $this->assertEquals('sample.html', file_normalize('sample.html.en')); - // $this->assertEquals('sample.html', file_normalize('sample.html.pt-br')); - // $this->assertEquals('sample.html', file_normalize('sample.html.po.iso8859-2')); - // $this->assertEquals('sample.html', file_normalize('sample.html.zh-tw.big5')); + $this->assertEquals(array(1), array_unique(array(1, 1))); + + // Keys are preserved, array()s inside are preserved + $this->assertEquals( + array(0, 2 => array(1, 1), 3 => 2), + array_unique( + array(0, 0, array(1, 1), 2, 2) + ) + ); + + // Keys are preserved + $this->assertEquals( + array(0, 2 => array(1, 1), 3 => 2), + array_unique(array(0, 0, array(1, 1), 2, 2)) + ); + + // ONLY the first array() is preserved + $this->assertEquals( + array(0 => array(1, 1)), + array_unique(array_unique(array(0 => array(1, 1), 'a' => array(2,2), 'b' => array(3, 3)))) + ); } - function testFunc_query_normalize() + function testFunc_array_merge_leaves() { - // 1st argument: Null - $this->assertEquals('', query_normalize(NULL)); - $this->assertEquals('', query_normalize(TRUE)); - $this->assertEquals('', query_normalize(FALSE)); - $this->assertEquals('', query_normalize(array('foobar'))); - $this->assertEquals('', query_normalize('')); - $this->assertEquals('', query_normalize(0)); - $this->assertEquals('', query_normalize(1)); - - $this->assertEquals('a=0dd&b&c&d&f=d', query_normalize('&&&&f=d&b&d&c&a=0dd')); - $this->assertEquals('eg=foobar', query_normalize('nothing==&eg=dummy&eg=padding&eg=foobar')); + // PHP array_unique_recursive(), PHP array_merge_leaves(), and array_merge_leaves() + $array1 = array(1); + $array2 = array(1); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array(1, 1), $result); + $result = array_unique_recursive($result); + $this->assertEquals(array(1), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array(1), $result); + + $array1 = array(2); + $array2 = array(1); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array(2, 1), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array(1), $result); + + // All NUMERIC keys are always renumbered from 0? + $array1 = array('10' => 'f3'); + $array2 = array('10' => 'f4'); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array(0 => 'f3', 1 => 'f4'), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array(10 => 'f4'), $result); + + // One more thing ... + $array1 = array('20' => 'f5'); + $array2 = array(); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array(0 => 'f5'), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array(20 => 'f5'), $result); + + // Non-numeric keys and values will be marged as you think? + $array1 = array('a' => 'f1'); + $array2 = array('a' => 'f2'); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array('a' => array('f1', 'f2')), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array('a' => 'f2'), $result); + + // Non-numeric keys: An array and a value will be marged? + $array1 = array('b' => array('k1')); + $array2 = array('b' => 'k2'); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array('b' => array(0 => 'k1', 1 => 'k2')), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array('b' => array(0 => 'k1')), $result); + + // Combination? + $array1 = array( + 2, + 'a' => 'f1', + '10' => 'f3', + '20' => 'f5', + 'b' => array('k1'), + ); + $array2 = array( + 1, + 'a' => 'f2', + '10' => 'f4', + 'b' => 'k2', + ); + $result = array ( + 2, + 'a' => array ( + 'f1', + 'f2', + ), + 'f3', + 'f5', + 'b' => array ( + 'k1', + 'k2', + ), + 1, + 'f4', + ); + $result2 = array ( + 0 => 1, + 10 => 'f4', + 20 => 'f5', + 'a' => 'f2', + 'b' => array ('k1'), + ); + $this->assertEquals($result, array_merge_recursive($array1, $array2)); + $this->assertEquals($result2, array_merge_leaves($array1, $array2)); + + // Values will not be unique? + $array1 = array(5, 4); + $array2 = array(4, 5); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array(5, 4, 4, 5), $result); + $this->assertEquals(array(5, 4), array_unique_recursive($result)); + $this->assertEquals(array(0=>4, 1=>5), array_merge_leaves($array1, $array2)); + + // One more thing ...? + $array1 = array('b' => array('k3')); + $array2 = array('b' => 'k3'); + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array('b' => array('k3', 'k3')), $result); + $result = array_unique_recursive($result); + $this->assertEquals(array('b' => array('k3')), $result); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array('b' => array('k3')), $result); + + // Preserve numeric keys? + $array1 = array('a' => array('' => NULL)); + $array2 = array('a' => array(5 => NULL)); + $array3 = array('a' => array(8 => NULL)); + // + // BAD: PHP array_merge_recursive() don't preserve numeric keys + $result = array_merge_recursive($array1, $array2); + $this->assertEquals(array('a' => array('' => NULL, 0 => NULL)), $result); // 0? + $result = array_merge_recursive($array2, $array3); + $this->assertEquals(array('a' => array(5 => NULL, 6 => NULL)), $result); // 6? + // + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array('a' => array('' => NULL, 5 => NULL)), $result); // 0? + $result = array_merge_leaves($array2, $array3); + $this->assertEquals(array('a' => array(5 => NULL, 8 => NULL)), $result); // 6? + + // Merging array leaves + $array1 = array('a' => TRUE); + $array2 = array('b' => FALSE); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array('a' => TRUE, 'b' => FALSE), $result); + + $array1 = array('a' => TRUE); + $array2 = array('a' => array('aa' => TRUE)); + $this->assertEquals($array2, array_merge_leaves($array1, $array2)); + $this->assertEquals($array2, array_merge_leaves($array2, $array1)); + + $array1 = array('a' => array('a1' => TRUE)); + $array2 = array('a' => array('a2' => FALSE)); + $result = array_merge_leaves($array1, $array2); + $this->assertEquals(array('a' => array('a1' => TRUE, 'a2' => FALSE)), $result); } function testFunc_generate_glob_regex() { // 1st argument: Null - $this->assertEquals('', generate_glob_regex(NULL)); - $this->assertEquals('', generate_glob_regex(TRUE)); - $this->assertEquals('', generate_glob_regex(FALSE)); - $this->assertEquals('', generate_glob_regex(array('foobar'))); - $this->assertEquals('', generate_glob_regex('')); - $this->assertEquals('', generate_glob_regex(0)); - $this->assertEquals('', generate_glob_regex(1)); + foreach($this->setup_string_null() as $key => $value){ + $this->assertEquals('', generate_glob_regex($value), $key); + } $this->assertEquals('.*\.txt', generate_glob_regex('*.txt')); $this->assertEquals('A.A', generate_glob_regex('A?A')); @@ -324,13 +294,9 @@ EOF; function testFunc_generate_host_regex() { // 1st argument: Null - $this->assertEquals('', generate_host_regex(NULL)); - $this->assertEquals('', generate_host_regex(TRUE)); - $this->assertEquals('', generate_host_regex(FALSE)); - $this->assertEquals('', generate_host_regex(array('foobar'))); - $this->assertEquals('', generate_host_regex('')); - $this->assertEquals('', generate_host_regex(0)); - $this->assertEquals('', generate_host_regex(1)); + foreach($this->setup_string_null() as $key => $value){ + $this->assertEquals('', generate_host_regex($value), $key); + } $this->assertEquals('localhost', generate_host_regex('localhost')); $this->assertEquals('example\.org', generate_host_regex('example.org')); @@ -371,23 +337,49 @@ EOF; // get_blocklist() // ALL $array = get_blocklist(); - $this->assertTrue(isset($array['badhost'])); + $this->assertTrue(isset($array['C'])); $this->assertTrue(isset($array['goodhost'])); // badhost - $array = get_blocklist('badhost'); - $this->assertTrue(isset($array['*.blogspot.com'])); + $array = get_blocklist('B-1'); + $this->assertTrue(isset($array['Google.com'])); // goodhost $array = get_blocklist('goodhost'); $this->assertTrue(isset($array['IANA-examples'])); } - function testFunc_is_badhost() + function testFunc_whois_responsibility() { - // is_badhost_avail() + // 1st argument: Null + foreach($this->setup_string_null() as $key => $value){ + $this->assertEquals('', whois_responsibility($value), $key); + } - // is_badhost() - $remains = array(); - $this->assertTrue(is_badhost('something...blogspot.com', TRUE, $remains)); + // 'act.edu.au' is known as 3rd level domain + $this->AssertEquals('bar.act.edu.au', whois_responsibility('foo.bar.act.edu.au')); + $this->AssertEquals('bar.act.edu.au', whois_responsibility('bar.act.edu.au')); + $this->AssertEquals('act.edu.au', whois_responsibility('act.edu.au')); + $this->AssertEquals('edu.au', whois_responsibility('edu.au')); + $this->AssertEquals('au', whois_responsibility('au')); + + // 'co.uk' is known as 2nd level domain + $this->AssertEquals('bar.co.uk', whois_responsibility('foo.bar.co.uk')); + $this->AssertEquals('bar.co.uk', whois_responsibility('bar.co.uk')); + $this->AssertEquals('co.uk', whois_responsibility('co.uk')); + $this->AssertEquals('uk', whois_responsibility('uk')); + + // 'bar.uk' is not 2nd level (implicit responsibility) + $this->AssertEquals('bar.uk', whois_responsibility('foo.bar.uk')); + $this->AssertEquals('bar.uk', whois_responsibility('bar.uk')); + + // IPv4 + $this->AssertEquals('192.168.0.1', whois_responsibility('192.168.0.1')); + + // Invalid Top-Level Domain (With implicit) + $this->AssertEquals('bar.local', whois_responsibility('foo.bar.local')); // Implicit responsibility + $this->AssertEquals('bar.local', whois_responsibility('bar.local')); + $this->AssertEquals('local', whois_responsibility('local')); + $this->AssertEquals('localhost', whois_responsibility('localhost')); + $this->AssertEquals('s', whois_responsibility('s')); } }