MemoizedCallable: Add test for memoized closure
authorTimo Tijhof <krinklemail@gmail.com>
Wed, 2 Mar 2016 00:47:05 +0000 (00:47 +0000)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 8 Mar 2016 16:42:21 +0000 (16:42 +0000)
Follows-up da3443bfa2a.

It won't work across different requests due to use of uniqid()
internally (so we may want to use a HashBagOStuff for closure
instead to save memory in APC). But at least assert that it does
and is intended to work.

Change-Id: Id4b42e8717f62f733eee8fcc9a4ab6c0f5c1f2fe

tests/phpunit/includes/libs/MemoizedCallableTest.php

index 519c8c3..6eb96b1 100644 (file)
@@ -4,7 +4,7 @@
  * in an instance property rather than APC.
  */
 class ArrayBackedMemoizedCallable extends MemoizedCallable {
-       public $cache = [];
+       private $cache = [];
 
        protected function fetchResult( $key, &$success ) {
                if ( array_key_exists( $key, $this->cache ) ) {
@@ -112,6 +112,11 @@ class MemoizedCallableTest extends PHPUnit_Framework_TestCase {
                        $this->readAttribute( $a, 'callableName' ),
                        $this->readAttribute( $b, 'callableName' )
                );
+
+               $c = new ArrayBackedMemoizedCallable( function () {
+                       return rand();
+               } );
+               $this->assertEquals( $c->invokeArgs(), $c->invokeArgs(), 'memoized random' );
        }
 
        /**