/**
  * Initializes a new instance of that class.
  *
  * @param IEnumerable $seq The inner sequence.
  * @param callable $keySelector The key selector to use.
  *
  * @throws ArgumentException $keySelector is no valid callable / lambda expression.
  * @throws ArgumentNullException $keySelector is (null).
  */
 public function __construct(IEnumerable $seq, $keySelector)
 {
     if (null === $keySelector) {
         throw new ArgumentNullException('keySelector');
     }
     $this->_keySelector = Object::asCallable($keySelector);
     $this->_seq = $seq;
 }
 /**
  * Initializes a new instance of that class.
  *
  * @param IEnumerable $seq The inner sequence.
  * @param callable $keySelector The key selector to use.
  * @param callable $valueSelector The value / item selector to use.
  *
  * @throws ArgumentNullException $keySelector is (null).
  */
 public function __construct(IEnumerable $seq, $keySelector, $valueSelector)
 {
     if (null === $valueSelector) {
         throw new ArgumentNullException('valueSelector');
     }
     $this->_valueSelector = Object::asCallable($valueSelector);
     parent::__construct($seq, $keySelector);
 }
Example #3
0
 public function testCallable()
 {
     $callableTypes = ['callable', 'function', \Closure::class];
     foreach ($this->createSumFunctions() as $sumFunc) {
         foreach ($callableTypes as $targetType) {
             /* @var callable $func1 */
             /* @var callable $func2 */
             /* @var callable $func3 */
             /* @var callable $func4 */
             /* @var callable $func5 */
             $obj1 = new ValueWrapper('1');
             $obj2 = new ValueWrapper(2);
             $obj3 = new ValueWrapper(3.0);
             $obj4 = new ValueWrapper(4.5);
             $obj5 = new ValueWrapper(Object::asCallable($sumFunc));
             $this->assertSame('1', $obj1->getWrappedValue());
             $this->assertSame(2, $obj2->getWrappedValue());
             $this->assertSame(3.0, $obj3->getWrappedValue());
             $this->assertSame(4.5, $obj4->getWrappedValue());
             $this->assertTrue(is_callable($obj5->getWrappedValue()));
             $func1 = $obj1->toType($targetType);
             $func2 = $obj2->toType($targetType);
             $func3 = $obj3->toType($targetType);
             $func4 = $obj4->toType($targetType);
             $func5 = $obj5->toType($targetType);
             $this->assertTrue(is_callable($func1));
             $this->assertTrue(is_callable($func2));
             $this->assertTrue(is_callable($func3));
             $this->assertTrue(is_callable($func4));
             $this->assertTrue(is_callable($func5));
             $this->assertSame($func1(), $obj1->getWrappedValue());
             $this->assertSame($func2(), $obj2->getWrappedValue());
             $this->assertSame($func3(), $obj3->getWrappedValue());
             $this->assertSame($func4(), $obj4->getWrappedValue());
             $this->assertSame(6.5, $func5(2, 4.5));
         }
     }
 }