Make WordPress Core

Changeset 77 in tests for wp-testcase/test_actions.php


Ignore:
Timestamp:
11/07/2007 10:40:03 AM (19 years ago)
Author:
tellyworth
Message:

more action/filter tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-testcase/test_actions.php

    r61 r77  
    77
    88        function setUp() {
    9                 $this->_old_filters = $GLOBALS['wp_filter'];
     9                #$this->_old_filters = $GLOBALS['wp_filter'];
    1010        }
    1111
    1212        function tearDown() {
    13                 $GLOBALS['wp_filter'] = $this->_old_filters;
     13                #$GLOBALS['wp_filter'] = $this->_old_filters;
    1414        }
    1515
     
    104104                $a = new MockAction();
    105105                $tag = rand_str();
    106                
     106
    107107                add_action($tag, array(&$a, 'action'), 10);
    108108                add_action($tag, array(&$a, 'action2'), 9);
     
    151151
    152152        function test_all_action() {
    153                 $a = new MockAction();
     153                $a = new MockAction(1);
    154154                $tag1 = rand_str();
    155155                $tag2 = rand_str();
     
    168168                $this->assertEquals(array($tag1, $tag2, $tag1, $tag1), $a->get_tags());
    169169
     170                remove_action('all', array(&$a, 'action'));
     171
    170172        }
    171173
     
    188190        }
    189191
    190         function test_all_filter() {
    191                 $a = new MockAction();
    192                 $tag1 = rand_str();
    193                 $tag2 = rand_str();
    194 
    195                 // add an 'all' action
    196                 add_filter('all', array(&$a, 'filter'));
    197                 // do some actions
    198                 apply_filters($tag1, 'foo');
    199                 apply_filters($tag2, 'foo');
    200                 apply_filters($tag1, 'foo');
    201                 apply_filters($tag1, 'foo');
    202 
    203                 // our action should have been called once for each tag
    204                 $this->assertEquals(4, $a->get_call_count());
    205                 // only our hook was called
    206                 $this->assertEquals(array($tag1, $tag2, $tag1, $tag1), $a->get_tags());
    207 
    208         }
    209 
     192        function test_action_performance() {
     193                $a = new MockAction();
     194                $tags = array(rand_str(), rand_str(), rand_str(), rand_str(), rand_str());
     195               
     196                // two actions per tag
     197                foreach ($tags as $tag) {
     198                        add_action($tag, array(&$a, 'action'));
     199                        add_action($tag, array(&$a, 'action2'));
     200                }
     201
     202                $delta = 0.0;
     203                $count = 0;
     204                for ($i=0; $i<100; $i++) {
     205                        foreach ($tags as $tag) {
     206                                $start = microtime(true);
     207                                do_action($tag);
     208                                $delta += (microtime(true) - $start);
     209                                ++$count;
     210                        }
     211                }
     212
     213                printf("Action Time: %0.8f (%0.8f each)\n", $delta, $delta/$count);
     214        }
     215
     216        function test_action_ref_array() {
     217                $obj = new stdClass();
     218                $a = new MockAction();
     219                $tag = rand_str();
     220
     221                add_action($tag, array(&$a, 'action'));
     222
     223                do_action_ref_array($tag, array(&$obj));
     224
     225                $args = $a->get_args();
     226                $this->assertSame($args[0][0], $obj);
     227                // just in case we don't trust assertSame
     228                $obj->foo = true;
     229                $this->assertFalse( empty($args[0][0]->foo) );
     230        }
    210231}
    211232
Note: See TracChangeset for help on using the changeset viewer.