OSDN Git Service

Google
[pukiwiki/pukiwiki_sandbox.git] / spam / SpamTest.php
index 8112909..145f361 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-// $Id: SpamTest.php,v 1.18 2007/07/02 14:51:40 henoheno Exp $
+// $Id: SpamTest.php,v 1.21 2007/08/18 09:10:35 henoheno Exp $
 // Copyright (C) 2007 heno
 //
 // Design test case for spam.php (called from runner.php)
@@ -139,58 +139,70 @@ class SpamTest extends PHPUnit_TestCase
                );
        }
 
-       // And array_unique_recursive()
-       function testPhPFunc_array_merge_recursive()
+       function testFunc_array_merge_leaves()
        {
+               // 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(2, 1);
-               $this->assertEquals($result, array_merge_recursive($array1, $array2));
+               $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
+               // 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));
+               $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('f5');
-               $this->assertEquals($result, array_merge_recursive($array1, $array2));
+               $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
+               // 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));
+               $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
+               // 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));
+               $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
+               // Combination?
                $array1 = array(
                        2,
-                       'a' => 'f1',
+                       'a'  => 'f1',
                        '10' => 'f3',
                        '20' => 'f5',
-                       'b' => array('k1'),
+                       'b'  => array('k1'),
                );
                $array2 = array(
                        1,
-                       'a' => 'f2',
+                       'a'  => 'f2',
                        '10' => 'f4',
-                       'b' => 'k2',
+                       'b'  => 'k2',
                );
                $result = array (
                        2,
@@ -207,23 +219,65 @@ class SpamTest extends PHPUnit_TestCase
                        1,
                        'f4',
                );
-               $this->assertEquals($result, array_merge_recursive($array1, $array2));
+               $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
+               // 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);
+               $this->assertEquals(array(5, 4),       array_unique_recursive($result));
+               $this->assertEquals(array(0=>4, 1=>5), array_merge_leaves($array1, $array2));
 
-               // One more thing ...
+               // 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()
@@ -287,7 +341,7 @@ class SpamTest extends PHPUnit_TestCase
                $this->assertTrue(isset($array['goodhost']));
                // badhost
                $array = get_blocklist('B-1');
-               $this->assertTrue(isset($array['*.blogspot.com']));
+               $this->assertTrue(isset($array['Google.com']));
                // goodhost
                $array = get_blocklist('goodhost');
                $this->assertTrue(isset($array['IANA-examples']));