Exemplo n.º 1
0
 public function testFnCacheResult()
 {
     $data = array(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3);
     $count = 0;
     $scale = 2;
     $fn = FnGen::fnCacheResult(function ($value) use(&$count, $scale) {
         $count += 1;
         return $value * $scale;
     });
     foreach ($data as $value) {
         $this->assertEquals($value * $scale, $fn($value));
     }
     $this->assertEquals(count(array_unique($data)), $count);
     $data = array('one', 'One', 'oNe', 'onE', 'two', 'tWo');
     $count = 0;
     $scale = 2;
     $fnToUpper = FnString::fnToUpper();
     $fn = FnGen::fnCacheResult(function ($value) use(&$count, $scale, $fnToUpper) {
         $count += 1;
         return $fnToUpper($value);
     }, $fnToUpper);
     foreach ($data as $value) {
         $this->assertEquals($fnToUpper($value), $fn($value));
     }
     $this->assertEquals(count(array_unique(array_map($fnToUpper, $data))), $count);
 }