<?php
-// $Id: SpamTest.php,v 1.2 2007/04/12 14:39:39 henoheno Exp $
+// $Id: SpamTest.php,v 1.17 2007/06/23 15:21:32 henoheno Exp $
// Copyright (C) 2007 heno
//
// Design test case for spam.php (called from runner.php)
class SpamTest extends PHPUnit_TestCase
{
+ function setup_string_null()
+ {
+ return array(
+ '[NULL]' => NULL,
+ '[TRUE]' => TRUE,
+ '[FALSE]' => FALSE,
+ '[array(foobar)]' => array('foobar'),
+ '[]' => '',
+ '[0]' => 0,
+ '[1]' => 1
+ );
+ }
+
+ function testFunc_strings()
+ {
+ // 1st argument: Null
+ $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_array_count_leaves()
+ {
+ // 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 testPhpFunc_array_unique()
+ {
+ $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))))
+ );
+ }
+
+ // And array_unique_recursive()
+ function testPhPFunc_array_merge_recursive()
+ {
+ $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);
+
+ $array1 = array(2);
+ $array2 = array(1);
+ $result = array(2, 1);
+ $this->assertEquals($result, array_merge_recursive($array1, $array2));
+
+ // All NUMERIC keys are always renumbered from 0
+ $array1 = array('10' => 'f3');
+ $array2 = array('10' => 'f4');
+ $result = array('f3', 'f4');
+ $this->assertEquals($result, array_merge_recursive($array1, $array2));
+
+ // One more thing ...
+ $array1 = array('20' => 'f5');
+ $array2 = array();
+ $result = array('f5');
+ $this->assertEquals($result, array_merge_recursive($array1, $array2));
+
+ // Non-numeric keys and values will be marged as you think
+ $array1 = array('a' => 'f1');
+ $array2 = array('a' => 'f2');
+ $result = array('a' => array('f1', 'f2'));
+ $this->assertEquals($result, array_merge_recursive($array1, $array2));
+
+ // Non-numeric keys: An array and a value will be marged
+ $array1 = array('b' => array('k1'));
+ $array2 = array('b' => 'k2');
+ $result = array('b' => array('k1', 'k2'));
+ $this->assertEquals($result, array_merge_recursive($array1, $array2));
+
+ // 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',
+ );
+ $this->assertEquals($result, array_merge_recursive($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);
+ $result = array_unique_recursive($result);
+ $this->assertEquals(array(5, 4), $result);
+
+ // 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);
+ }
+
function testFunc_uri_pickup()
{
// 1st argument: Null
- $this->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)));
+ foreach($this->setup_string_null() as $key => $value){
+ $this->assertEquals(0, count(uri_pickup($value)), $key);
+ }
// 1st argument: Some
$test_string = <<<EOF
$this->assertEquals('top_story.htm', $results[3]['file']);
$this->assertEquals('', $results[3]['query']);
$this->assertEquals('', $results[3]['fragment']);
+
+
+ // Specific tests ----
+
+ // Divider: Back-slash
+ $test_string = ' http:\\backslash.org\fobar.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals('backslash.org', $results[0]['host']);
+
+ // Host: Underscore
+ $test_string = ' http://under_score.org/fobar.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals('under_score.org',$results[0]['host']); // Not 'under'
+
+ // Host: IPv4
+ $test_string = ' http://192.168.0.1/fobar.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals('192.168.0.1', $results[0]['host']);
+
+ // Host: Starts
+ $test_string = ' http://_sss/foo.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals('_sss', $results[0]['host']);
+ $this->assertEquals('foo.html', $results[0]['file']);
+
+ // Host: Ends
+ $test_string = ' http://sss_/foo.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals('sss_', $results[0]['host']);
+ $this->assertEquals('foo.html', $results[0]['file']);
+
+
+ // Specific tests ---- Fails
+
+ // Divider: Colon only (Too sensitive to capture)
+ $test_string = ' http:colon.org ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals(0, count($results));
+
+ // Host: Too short
+ $test_string = ' http://s/foo.html http://ss/foo.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals(0, count($results));
+
+ $test_string = ' http://sss/foo.html ';
+ $results = uri_pickup_normalize(uri_pickup($test_string));
+ $this->assertEquals('sss', $results[0]['host']);
+ $this->assertEquals('foo.html', $results[0]['file']);
}
function testFunc_scheme_normalize()
{
// 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));
+ foreach($this->setup_string_null() as $key => $value){
+ $this->assertEquals('', scheme_normalize($value), $key);
+ }
// CASE
$this->assertEquals('http', scheme_normalize('HTTP'));
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));
+ foreach($this->setup_string_null() as $key => $value){
+ $this->assertEquals('', host_normalize($value), $key);
+ }
// Hostname is case-insensitive
$this->assertEquals('example.org', host_normalize('ExAMPle.ORG'));
$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('', 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
function testFunc_path_normalize()
{
// 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));
+ foreach($this->setup_string_null() as $key => $value){
+ $this->assertEquals('/', path_normalize($value), $key);
+ }
// 1st argument: CASE sensitive
$this->assertEquals('/ExAMPle', path_normalize('ExAMPle'));
function testFunc_file_normalize()
{
// 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));
+ foreach($this->setup_string_null() as $key => $value){
+ $this->assertEquals('', file_normalize($value), $key);
+ }
// 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'));
-\r $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'));
+ foreach(array(
+ 'default.htm',
+ 'default.html',
+ 'default.asp',
+ 'default.aspx',
+\r 'index',
+ 'index.htm',
+ 'index.html',
+ 'index.shtml',
+ 'index.jsp',
+ 'index.php',
+ 'index.php',
+ 'index.php3',
+ 'index.php4',
+ 'index.pl',
+ 'index.py',
+ 'index.rb',
+ 'index.cgi',
+
+ // Apache 2.0.59 default 'index.html' variants
+ 'index.html.ca',
+ 'index.html.cz.iso8859-2',
+ 'index.html.de',
+ 'index.html.dk',
+ 'index.html.ee',
+ 'index.html.el',
+ 'index.html.en',
+ 'index.html.es',
+ 'index.html.et',
+ 'index.html.fr',
+ 'index.html.he.iso8859-8',
+ 'index.html.hr.iso8859-2',
+ 'index.html.it',
+ 'index.html.ja.iso2022-jp',
+ 'index.html.ko.euc-kr',
+ 'index.html.lb.utf8',
+ 'index.html.nl',
+ 'index.html.nn',
+ 'index.html.no',
+ 'index.html.po.iso8859-2',
+ 'index.html.pt',
+ 'index.html.pt-br',
+ 'index.html.ru.cp866',
+ 'index.html.ru.cp-1251',
+ 'index.html.ru.iso-ru',
+ 'index.html.ru.koi8-r',
+ 'index.html.ru.utf8',
+ 'index.html.sv',
+ 'index.html.var', // default
+ 'index.html.zh-cn.gb2312',
+ 'index.html.zh-tw.big5',
+
+ 'index.html.po.iso8859-2',
+ 'index.html.zh-tw.big5',
+
+ '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'));
+ // .gz
+ 'index.html.ca.gz',
+ 'index.html.en.ja.ca.z',
+ ) as $arg){
+ $this->assertEquals('', file_normalize($arg));
+ }
+
+ //$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'));
}
function testFunc_query_normalize()
{
// 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));
+ foreach($this->setup_string_null() as $key => $value){
+ $this->assertEquals('', query_normalize($value), $key);
+ }
$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'));
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'));
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'));
// 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');
+ $array = get_blocklist('B-1');
$this->assertTrue(isset($array['*.blogspot.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'));
}
}