コード例 #1
0
ファイル: iterTest.php プロジェクト: rexfordkelly-on-JS/iter
 public function testCount()
 {
     $this->assertSame(5, count([1, 2, 3, 4, 5]));
     $this->assertSame(5, count(toIter([1, 2, 3, 4, 5])));
     $this->assertSame(42, count(new _CountableTestDummy()));
 }
コード例 #2
0
ファイル: iterTest.php プロジェクト: nikic/iter
 public function provideTestAssertIterableFails()
 {
     (yield [function () {
         _assertIterable(new \stdClass(), 'Argument');
     }, 'Argument must be iterable']);
     (yield [function () {
         _assertIterable("foobar", 'Argument');
     }, 'Argument must be iterable']);
     (yield [function () {
         _assertAllIterable([[], new \stdClass()]);
     }, 'Argument 2 must be iterable']);
     (yield [function () {
         return count(new \stdClass());
     }, 'Argument must be iterable or implement Countable']);
     (yield [function () {
         return toIter(new \stdClass());
     }, 'Argument must be iterable']);
     (yield [function () {
         return map(function ($v) {
             return $v;
         }, new \stdClass());
     }, 'Second argument must be iterable']);
     (yield [function () {
         return chain([1], [2], new \stdClass());
     }, 'Argument 3 must be iterable']);
     (yield [function () {
         return zip([1], [2], new \stdClass());
     }, 'Argument 3 must be iterable']);
 }
コード例 #3
0
ファイル: iter.php プロジェクト: rexfordkelly-on-JS/iter
/**
 * Combines an iterable for keys and another for values into one iterator.
 *
 * Examples:
 *
 *     iter\zipKeyValue(['a', 'b', 'c'], [1, 2, 3])
 *     => iter('a' => 1, 'b' => 2, 'c' => 3)
 *
 * @param mixed $keys   Iterable of keys
 * @param mixed $values Iterable of values
 *
 * @return \Iterator
 */
function zipKeyValue($keys, $values)
{
    $keys = toIter($keys);
    $values = toIter($values);
    for ($keys->rewind(), $values->rewind(); $keys->valid() && $values->valid(); $keys->next(), $values->next()) {
        (yield $keys->current() => $values->current());
    }
}