Fix bug. Refactor test code.

This commit is contained in:
CismonX 2018-08-28 22:11:09 +08:00
parent 6a5302d7d3
commit 56d34235bb
49 changed files with 230 additions and 116 deletions

View File

@ -361,7 +361,7 @@ static zend_always_inline void zend_hash_distinct(zend_array* ht, Bucket* ref, c
{
ref[num_elements].h = UINT32_MAX;
ZVAL_UNDEF(&ref[num_elements].val);
uint32_t min_offset = UINT32_MAX;
uint32_t min_offset = ref[0].h;
for (idx = 1; idx <= num_elements; ++idx)
{
Bucket* bucket = &ref[idx];

View File

@ -2,7 +2,8 @@
Check whether the extension is loaded.
--FILE--
<?php
if (!extension_loaded('collections'))
if (!extension_loaded('collections')) {
echo "Extension not loaded.", PHP_EOL;
}
?>
--EXPECT--

View File

@ -3,7 +3,8 @@ Test Pair.
--FILE--
<?php
$pair = new Pair('foo', 'bar');
if ($pair->first != 'foo' || $pair->second != 'bar')
if ($pair->first != 'foo' || $pair->second != 'bar') {
echo 'Test for Pair failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,7 +6,8 @@ $array = ['a' => 'b'];
$collection = Collection::init($array);
$collection1 = Collection::init($collection);
$collection2 = Collection::init();
if ($array != $collection1->toArray() || $collection2->toArray() != [])
if ($array != $collection1->toArray() || $collection2->toArray() != []) {
echo 'Collection::init() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,7 +6,8 @@ $array = [3, 7, 5, 6, 1, 2];
$collection = Collection::init([6, 1, 2]);
$collection2 = Collection::init([3, 7, 5]);
$collection2->addAll($collection);
if ($array != $collection2->toArray())
if ($array != $collection2->toArray()) {
echo 'Collection::addAll() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -9,23 +9,26 @@ $result = $collection->all(function ($value) {
$result1 = $collection->all(function ($value, $key) {
return strlen($key) < 4;
});
if ($result || !$result1)
if ($result || !$result1) {
echo 'Collection::all() failed.', PHP_EOL;
}
$result = $collection->any(function ($value) {
return $value % 3 == 0;
});
$result1 = $collection->any(function ($value, $key) {
return strpos($key, 'g') !== false;
});
if (!$result || $result1)
if (!$result || $result1) {
echo 'Collection::any() failed.', PHP_EOL;
}
$result = $collection->none(function ($value) {
return $value < 0;
});
$result1 = $collection->none(function ($value, $key) {
return ctype_alnum($value . $key);
});
if (!$result || $result1)
if (!$result || $result1) {
echo 'Collection::none() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -7,15 +7,17 @@ $collection = Collection::init($array)
->associate(function ($value, $key) {
return new Pair($value, $key);
});
if ($collection->toArray() != array_flip($array))
if ($collection->toArray() != array_flip($array)) {
echo 'Collection::associate() failed.', PHP_EOL;
}
$array1 = ['baz' => 1];
$collection1 = Collection::init($array1);
$array2 = $collection->associateTo($collection1,
function ($value, $key) {
return new Pair($key, $value);
})->toArray();
if ($array2 != $array1 + array_flip($array) || $collection1->toArray() != $array2)
if ($array2 != $array1 + array_flip($array) || $collection1->toArray() != $array2) {
echo 'Collection::associateTo() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -7,14 +7,16 @@ $collection = Collection::init($array)
->associateBy(function ($value, $key) {
return strlen($key) - 1;
});
if ($collection->toArray() != array_values($array))
if ($collection->toArray() != array_values($array)) {
echo 'Collection::associateBy() failed.', PHP_EOL;
$array1 = ['foo' => 'bar'];
$collection1 = Collection::init($array1);
$array2 = $collection->associateByTo($collection1, function ($value, $key) {
}
$array = ['foo' => 'bar'];
$collection = Collection::init($array);
$array1 = $collection->associateByTo($collection, function ($value, $key) {
return $key;
})->toArray();
if ($array2 != $array1 + $collection->toArray() || $collection1->toArray() != $array2)
if ($array1 != $array + $collection->toArray() || $collection->toArray() != $array1) {
echo 'Collection::associateTo() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,7 +4,8 @@ Test Collection::average().
<?php
$array = [2.632, 7.871, 9.094, 5.457, 3, 9, 6];
$average = Collection::init($array)->average();
if ($average != array_sum($array) / count($array))
if ($average != array_sum($array) / count($array)) {
echo 'Collection::average() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -5,7 +5,8 @@ Test Collection::containsAll().
$array = [[], 1, 't'];
$array1 = [2, ['t'], 5];
$collection = Collection::init([1, 2, 't', [], 5]);
if (!$collection->containsAll($array) || $collection->containsAll($array1))
if (!$collection->containsAll($array) || $collection->containsAll($array1)) {
echo 'Collection::containsAll() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -3,9 +3,11 @@ Test Collection::containsKey() and Collection::containsValue().
--FILE--
<?php
$collection = Collection::init(['foo' => 'bar', 12 => 6, 'baz' => 27]);
if (!$collection->containsKey('foo') || $collection->containsKey('Baz'))
if (!$collection->containsKey('foo') || $collection->containsKey('Baz')) {
echo 'Collection::containsKey() failed.', PHP_EOL;
if (!$collection->containsValue(27) || $collection->containsValue(3))
}
if (!$collection->containsValue(27) || $collection->containsValue(3)) {
echo 'Collection::containsValue() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -5,8 +5,12 @@ Test Collection::copyOf();
$array = ['a' => 2, 3 => 'd', 'e' => 'f'];
$collection = Collection::init($array);
$collection1 = $collection->copyOf(2);
$collection2 = $collection->copyOf();
if ($collection1->toArray() != array_slice($array, 0, 2, true) || $collection2->toArray() != $array)
if ($collection1->toArray() != array_slice($array, 0, 2, true)) {
echo 'Collection::copyOf() failed.', PHP_EOL;
}
$collection1 = $collection->copyOf();
if ($collection1->toArray() != $array) {
echo 'Collection::copyOf() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -9,7 +9,8 @@ $array = [3, 7, 6, 9, 2];
$array1 = ['a' => 'b', 'c', 'd' => 'e'];
$array2 = Collection::init($array)->copyOfRange(2, 4)->toArray();
$array3 = Collection::init($array1)->copyOfRange(1, 2)->toArray();
if ($array2 != array_slice($array, 2, 4) || $array3 != array_slice($array1, 1, 2))
if ($array2 != array_slice($array, 2, 4) || $array3 != array_slice($array1, 1, 2)) {
echo 'Collection::copyOfRange() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,9 +4,11 @@ Test Collection::count() and implementation of interface Countable.
<?php
$array = [1, 2, 3, 4, 5, 6];
$collection = Collection::init($array);
if ($collection->count() != count($array))
if ($collection->count() != count($array)) {
echo 'Collection::count() failed.', PHP_EOL;
if (count($collection) != count($array))
}
if (count($collection) != count($array)) {
echo 'Test for handlers.count_elements failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -7,13 +7,17 @@ $collection = Collection::init($array);
$collection['a'] = 'foo'.strval(123);
$collection['h'] = 'bar';
unset($collection['c']);
if (empty($collection) || isset($collection['t']) || !isset($collection['e']))
if (empty($collection) || isset($collection['t']) || !isset($collection['e'])) {
echo 'Test for handlers.has_dimension failed.', PHP_EOL;
if ($collection['e']['f'] != 'g')
}
if ($collection['e']['f'] != 'g') {
echo 'Test for handlers.read_dimension failed.', PHP_EOL;
if ($collection['a'] != 'foo'.strval(123) || $collection['h'] != 'bar')
}
if ($collection['a'] != 'foo'.strval(123) || $collection['h'] != 'bar') {
echo 'Test for handlers.write_dimension failed.', PHP_EOL;
if (isset($collection['c']))
}
if (isset($collection['c'])) {
echo 'Test for handlers.unset_dimension failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,10 +4,12 @@ Test Collection::drop() and Collection::dropLast().
<?php
$collection = Collection::init(['ab' => 'c', 'd', 'e' => 'f', 12, 34]);
$collection1 = $collection->drop(2);
$collection2 = $collection->dropLast(3);
if ($collection1->toArray() != ['e' => 'f', 1 => 12, 2 => 34])
if ($collection1->toArray() != ['e' => 'f', 1 => 12, 2 => 34]) {
echo 'Collection::drop() failed.', PHP_EOL;
if ($collection2->toArray() != ['ab' => 'c', 'd'])
}
$collection1 = $collection->dropLast(3);
if ($collection1->toArray() != ['ab' => 'c', 'd']) {
echo 'Collection::dropLast() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,12 +6,14 @@ $collection = Collection::init([5, 7, 1, 4, 3]);
$collection1 = $collection->dropWhile(function ($value) {
return $value % 2;
});
if ($collection1->toArray() != [3 => 4, 4 => 3])
if ($collection1->toArray() != [3 => 4, 4 => 3]) {
echo 'Collection::dropWhile() failed.', PHP_EOL;
$collection2 = $collection->dropLastWhile(function ($value) {
}
$collection1 = $collection->dropLastWhile(function ($value) {
return $value < 6;
});
if ($collection2->toArray() != [5, 7])
if ($collection1->toArray() != [5, 7]) {
echo 'Collection::dropLastWhile() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -9,7 +9,8 @@ $array1 = ['foo', 'bar' => 't', 't', 't', 3];
$collection1 = Collection::init($array);
$collection1->fill(0);
$array2 = [0, 'bar' => 0, 0, 0, 0];
if ($collection->toArray() != $array1 || $collection1->toArray() != $array2)
if ($collection->toArray() != $array1 || $collection1->toArray() != $array2) {
echo 'Collection::fill() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -11,10 +11,12 @@ $pred_is_even = function ($value) {
};
$collection = Collection::init($array)->filter($pred_is_odd);
$collection1 = Collection::init($array)->filterNot($pred_is_odd);
if ($collection->toArray() != array_values(array_filter($array, $pred_is_odd)))
if ($collection->toArray() != array_values(array_filter($array, $pred_is_odd))) {
echo 'Collection::filter() failed.', PHP_EOL;
if ($collection1->toArray() != array_values(array_filter($array, $pred_is_even)))
}
if ($collection1->toArray() != array_values(array_filter($array, $pred_is_even))) {
echo 'Collection::filterNot() failed.', PHP_EOL;
}
$dest = Collection::init($array);
$collection2 = Collection::init($array)->filterTo($dest, $pred_is_odd);
if ($collection2->toArray() != array_merge($array, $collection->toArray()))

View File

@ -8,12 +8,14 @@ $collection1 = Collection::init();
$value = $collection->first(function ($value) {
return $value > 0;
});
if ($value != 1 || $collection->first() != -5 || $collection1->first() != null)
if ($value != 1 || $collection->first() != -5 || $collection1->first() != null) {
echo 'Collection::first() failed.', PHP_EOL;
}
$value1 = $collection->last(function ($value) {
return $value % 2 == 0;
});
if ($value1 != 8 || $collection->last() != 9 || $collection1->last() != null)
echo 'Collection::last() failed.', PHP_EOL;
if ($value1 != 8 || $collection->last() != 9 || $collection1->last() != null) {
echo 'Collection::last() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,13 +6,15 @@ $array = [['a' => ['b', 'c'], 'd' => ['e', 'f']], ['a' => ['g', 'h'], 'd' => ['i
$collection = Collection::init($array)->flatMap(function ($value) {
return $value['a'];
});
if ($collection->toArray() != ['b', 'c', 'g', 'h'])
if ($collection->toArray() != ['b', 'c', 'g', 'h']) {
echo 'Collection::flatMap() failed.', PHP_EOL;
}
$collection1 = Collection::init(['k', 'l']);
$collection2 = Collection::init($array)->flatMapTo($collection1, function ($value) {
return Collection::init($value['d']);
});
if ($collection2->toArray() != ['k', 'l', 'e', 'f', 'i', 'j'])
if ($collection2->toArray() != ['k', 'l', 'e', 'f', 'i', 'j']) {
echo 'Collection::flatMap() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,7 +4,8 @@ Test Collection::toCollection().
<?php
$collection = Collection::init(['a', 'b']);
Collection::init(['foo', 'bar'])->toCollection($collection);
if ($collection->toArray() != ['a', 'b', 'foo', 'bar'])
if ($collection->toArray() != ['a', 'b', 'foo', 'bar']) {
echo 'Collection::toCollection() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,9 +4,11 @@ Test Collection::toPairs().
<?php
$pairs = Collection::init(['a' => 'b', 'c' => 'd'])->toPairs();
$test = '';
foreach ($pairs as $pair)
foreach ($pairs as $pair) {
$test .= $pair->first . ',' . $pair->second . ';';
if ($test != 'a,b;c,d;')
}
if ($test != 'a,b;c,d;') {
echo 'Collection::toPairs() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,7 +4,8 @@ Test Collection::flatten().
<?php
$array = [['a', 'foo' => 'b'], ['c', 'd', ['e']], 'bar' => 'f'];
$collection = Collection::init($array)->flatten();
if ($collection->toArray() != ['a', 'foo' => 'b', 'c', 'd', ['e'], 'bar' => 'f'])
if ($collection->toArray() != ['a', 'foo' => 'b', 'c', 'd', ['e'], 'bar' => 'f']) {
echo 'Collection::flatten() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,15 +4,20 @@ Test Collection::min() and Collection::max().
<?php
$array = [3.42, 7.15, 0.0, -4.2, 1.64];
$collection = Collection::init($array);
if ($collection->max() != max($array) || Collection::init()->max() != null)
if ($collection->max() != max($array) || Collection::init()->max() != null) {
echo 'Collection::max() failed.', PHP_EOL;
if ($collection->min() != min($array) || Collection::init()->min() != null)
}
if ($collection->min() != min($array) || Collection::init()->min() != null) {
echo 'Collection::min() failed.', PHP_EOL;
$array1 = ['p3.4', 'p3.32', 'p10.2'];
$collection1 = Collection::init($array1);
if ($collection1->max() != $array1[0] || $collection1->max(Collection::COMPARE_NATRUAL) != $array1[2])
}
$array = ['p3.4', 'p3.32', 'p10.2'];
$collection = Collection::init($array);
if ($collection->max() != $array[0] || $collection->max(Collection::COMPARE_NATRUAL) != $array[2]) {
echo 'Collection::max() failed.', PHP_EOL;
if ($collection1->min() != $array1[2] || $collection1->min(Collection::COMPARE_NATRUAL) != $array1[0])
}
if ($collection->min() != $array[2] || $collection->min(Collection::COMPARE_NATRUAL) != $array[0]) {
echo 'Collection::min() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,9 +4,11 @@ Test Collection::keys() and Collection::values().
<?php
$array = ['a' => 'b', 'c' => ['d'], 10 => 'f'];
$collection = Collection::init($array);
if ($collection->keys()->toArray() != array_keys($array))
if ($collection->keys()->toArray() != array_keys($array)) {
echo 'Collection::keys() failed.', PHP_EOL;
if ($collection->values()->toArray() != array_values($array))
}
if ($collection->values()->toArray() != array_values($array)) {
echo 'Collection::values() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -13,7 +13,8 @@ $value1 = $collection->single(function ($value) {
$value2 = $collection->single(function ($value, $key) {
return $key > 5;
});
if (isset($value) || $value1 != 'cd' || isset($value2))
if (isset($value) || $value1 != 'cd' || isset($value2)) {
echo 'Collection::single() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -2,9 +2,11 @@
Test Collection::isEmpty() and Collection::isNotEmpty().
--FILE--
<?php
if (!Collection::init()->isEmpty())
if (!Collection::init()->isEmpty()) {
echo 'Collection::isEmpty() failed.', PHP_EOL;
if (!Collection::init(['foo', 'bar'])->isNotEmpty())
}
if (!Collection::init(['foo', 'bar'])->isNotEmpty()) {
echo 'Collection::isNotEmpty() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -8,14 +8,19 @@ $collection->set('a', 'foo');
$collection->set('e', 'bar');
$array['a'] = 'foo';
$array['e'] = 'bar';
if ($collection->toArray() != $array)
if ($collection->toArray() != $array) {
echo 'Collection::set() failed.', PHP_EOL;
}
if ($collection->get('a') != $array['a'] ||
$collection->get('f', function ($key) { return $key; }) != 'f')
$collection->get('f', function ($key) { return $key; }) != 'f'
) {
echo 'Collection::get() failed.', PHP_EOL;
if (!$collection->remove('a') || !is_null($collection->get('a')))
}
if (!$collection->remove('a') || !is_null($collection->get('a'))) {
echo 'Collection::remove() failed.', PHP_EOL;
if ($collection->remove('c', 'e') || $collection->get('c') != 'd')
}
if ($collection->remove('c', 'e') || $collection->get('c') != 'd') {
echo 'Collection::remove() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -11,13 +11,15 @@ $collection = Collection::init($array);
$result = $collection->maxBy(function ($value) {
return $value[0];
});
if ($result != $array[1])
if ($result != $array[1]) {
echo 'Collection::maxBy() failed.', PHP_EOL;
}
$result = $collection->minBy(function ($value) {
return $value[2];
});
if ($result != $array[0])
if ($result != $array[0]) {
echo 'Collection::minBy() failed.', PHP_EOL;
}
$array1 = [
['abc', 'ABD'],
['ACE', 'ABC'],
@ -27,12 +29,14 @@ $collection1 = Collection::init($array1);
$result = $collection1->maxBy(function ($value) {
return $value[0];
});
if ($result != $array1[2])
if ($result != $array1[2]) {
echo 'Collection::maxBy() failed.', PHP_EOL;
}
$result = $collection1->minBy(function ($value) {
return $value[1];
}, Collection::FOLD_CASE);
if ($result != $array1[2])
if ($result != $array1[2]) {
echo 'Collection::minBy() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -8,14 +8,17 @@ $pred_is_odd = function ($value) {
};
$collection = Collection::init($array);
$collection->removeAll($pred_is_odd);
if ($collection->toArray() != ['a' => 4, 'd' => -2, 'e' => 0])
if ($collection->toArray() != ['a' => 4, 'd' => -2, 'e' => 0]) {
echo 'Collection::removeAll() failed.', PHP_EOL;
}
$collection->removeAll();
if ($collection->toArray() != [])
if ($collection->toArray() != []) {
echo 'Collection::removeAll() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$collection->retainAll($pred_is_odd);
if ($collection->toArray() != ['b' => 1, 'c' => 9])
if ($collection->toArray() != ['b' => 1, 'c' => 9]) {
echo 'Collection::retainAll() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,8 +4,9 @@ Test Collection::forEach() and Collection::onEach().
<?php
$array = ['a', 'b', 'c', 'd', 'e'];
$result2 = $result1 = $result = '';
foreach ($array as $value)
foreach ($array as $value) {
$result .= $value;
}
$collection = Collection::init($array);
$collection->forEach(function ($value) use (&$result1) {
$result1 .= $value;
@ -13,9 +14,11 @@ $collection->forEach(function ($value) use (&$result1) {
$collection1 = $collection->onEach(function ($value) use (&$result2) {
$result2 .= $value;
});
if ($result1 != $result)
if ($result1 != $result) {
echo 'Collection::forEach() failed.', PHP_EOL;
if ($result2 != $result || $collection1->toArray() != $collection->toArray())
}
if ($result2 != $result || $collection1->toArray() != $collection->toArray()) {
echo 'Collection::onEach() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,7 +6,8 @@ $array = ['abc', 'd', 'ef', 'ghij'];
$pair = Collection::init($array)->partition(function ($value) {
return strlen($value) % 2;
});
if ($pair->first != ['abc', 'd'] || $pair->second != ['ef', 'ghij'])
if ($pair->first != ['abc', 'd'] || $pair->second != ['ef', 'ghij']) {
echo 'Collection::partition() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -5,9 +5,11 @@ Test Collection::reverse() and Collection::reversed().
$array = ['a', 'b', 'c', 'd', 'e'];
$collection = Collection::init($array);
$collection->reverse();
if ($collection->toArray() != array_reverse($array))
if ($collection->toArray() != array_reverse($array)) {
echo 'Collection::reverse() failed.', PHP_EOL;
if ($collection->reversed()->toArray() != $array)
}
if ($collection->reversed()->toArray() != $array) {
echo 'Collection::reversed() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,11 +4,17 @@ Test Collection::take() and Collection::takeLast().
<?php
$array = ['a', 'b', 'c', 'd', 'e'];
$collection = Collection::init($array);
if ($collection->take(0)->toArray() != [] || $collection->take(6)->toArray() != $array ||
$collection->take(3)->toArray() != array_slice($array, 0, 3))
if ($collection->take(0)->toArray() != [] ||
$collection->take(6)->toArray() != $array ||
$collection->take(3)->toArray() != array_slice($array, 0, 3)
) {
echo 'Collection::take() failed.', PHP_EOL;
if ($collection->takeLast(0)->toArray() != [] || $collection->takeLast(10)->toArray() != $array ||
$collection->takeLast(4)->toArray() != array_slice($array, -4, 4))
}
if ($collection->takeLast(0)->toArray() != [] ||
$collection->takeLast(10)->toArray() != $array ||
$collection->takeLast(4)->toArray() != array_slice($array, -4, 4)
) {
echo 'Collection::takeLast() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -7,12 +7,14 @@ $collection = Collection::init($array);
$collection1 = $collection->takeWhile(function ($value) {
return ord($value) > ord('Z');
});
if ($collection1->toArray() != ['a', 'b'])
if ($collection1->toArray() != ['a', 'b']) {
echo 'Collection::takeWhile() failed.', PHP_EOL;
}
$collection2 = $collection->takeLastWhile(function ($value) {
return $value != 'b';
});
if ($collection2->toArray() != ['C', 'D', 'e'])
if ($collection2->toArray() != ['C', 'D', 'e']) {
echo 'Collection::takeLastWhile() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -4,20 +4,24 @@ Test Collection::indexOf(), Collection::lastIndexOf(), Collection::indexOfFirst(
<?php
$collection = Collection::init(['t', 'B', 13, 'f', 'G', 19, 'N', 'f']);
$first_f_at = $collection->indexOf('f');
if ($first_f_at != 3)
if ($first_f_at != 3) {
echo 'Collection::indexOf() failed.', PHP_EOL;
}
$last_f_at = $collection->lastIndexOf('f');
if ($last_f_at != 7)
if ($last_f_at != 7) {
echo 'Collection::lastIndexOf() failed.', PHP_EOL;
}
$first_numeric_at = $collection->indexOfFirst(function ($value) {
return is_numeric($value);
});
if ($first_numeric_at != 2)
if ($first_numeric_at != 2) {
echo 'Collection::indexOfFirst() failed.', PHP_EOL;
}
$last_upper_case_at = $collection->indexOfLast(function ($value) {
return ctype_upper($value);
});
if ($last_upper_case_at != 6)
if ($last_upper_case_at != 6) {
echo 'Collection::indexOfLast() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,7 +6,8 @@ $array = [1, 2, 3, 4, 5, 6];
$collection = Collection::init($array)->slice([2, -1, 3, 6]);
$array1 = ['a' => 'b', 'c' => 'd', 'e' => 'f'];
$collection1 = Collection::init($array1)->slice(['c', 'a', 'g']);
if ($collection->toArray() != [3, 4] || $collection1->toArray() != ['c' => 'd', 'a' => 'b'])
if ($collection->toArray() != [3, 4] || $collection1->toArray() != ['c' => 'd', 'a' => 'b']) {
echo 'Collection::slice() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,13 +6,17 @@ $array = ['foo' => 'bar', 'bar' => 'baz'];
$collection = Collection::init($array)->map(function ($value, $key) {
return $key.$value;
});
if ($collection->toArray() != ['foobar', 'barbaz'])
if ($collection->toArray() != ['foobar', 'barbaz']) {
echo 'Collection::map() failed.', PHP_EOL;
}
$collection1 = Collection::init(['dummy']);
$collection2 = Collection::init($array)->mapTo($collection1, function ($value, $key) {
return $value.$key;
});
if ($collection1->toArray() != $collection2->toArray() || $collection1->toArray() != ['dummy', 'barfoo','bazbar'])
if ($collection1->toArray() != $collection2->toArray() ||
$collection1->toArray() != ['dummy', 'barfoo','bazbar']
) {
echo 'Collection::mapTo() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,7 +6,8 @@ $array = ['a' => 'foo', 'b' => 'bar'];
$array1 = ['a' => 'b', 'c' => 'd', 'e' => 'f'];
$collection = Collection::init($array);
$collection->putAll($array1);
if ($collection->toArray() != array_merge($array, $array1))
if ($collection->toArray() != array_merge($array, $array1)) {
echo 'Collection::putAll() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,9 +6,11 @@ $collection = Collection::init(['a', 'b', 'c', 'd', 'e']);
$reduce_cb = function ($acc, $value, $key) {
return $acc.$value.strval($key);
};
if ($collection->reduce($reduce_cb) != 'ab1c2d3e4')
if ($collection->reduce($reduce_cb) != 'ab1c2d3e4') {
echo 'Collection::reduce() failed.', PHP_EOL;
if ($collection->reduceRight($reduce_cb) != 'ed3c2b1a0')
}
if ($collection->reduceRight($reduce_cb) != 'ed3c2b1a0') {
echo 'Collection::reduceRight() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -5,7 +5,8 @@ Test Collection::packed().
$case = Collection::init(['a', 'b', 'c'])->packed();
$case1 = Collection::init(['foo' => 'bar', 'baz'])->packed();
$case2 = Collection::init()->packed();
if (!$case || $case1 || $case2)
if (!$case || $case1 || $case2) {
echo 'Collection::packed() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -6,9 +6,11 @@ $collection = Collection::init(['a', 'b', 'c', 'd', 'e']);
$reduce_cb = function ($acc, $value, $key) {
return $acc.$value.strval($key);
};
if ($collection->fold('foo', $reduce_cb) != 'fooa0b1c2d3e4')
if ($collection->fold('foo', $reduce_cb) != 'fooa0b1c2d3e4') {
echo 'Collection::fold() failed.', PHP_EOL;
if ($collection->foldRight('bar', $reduce_cb) != 'bare4d3c2b1a0')
}
if ($collection->foldRight('bar', $reduce_cb) != 'bare4d3c2b1a0') {
echo 'Collection::foldRight() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -7,26 +7,30 @@ $array = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
for ($i = 0; ; ++$i) {
$collection = Collection::init($array);
$collection->shuffle();
if ($collection->toArray() != array_values($array))
if ($collection->toArray() != array_values($array)) {
break;
}
if ($i > 10) {
echo 'Collection::shuffle() failed.', PHP_EOL;
exit;
}
}
if (array_sum($array) != array_sum($collection->toArray()))
if (array_sum($array) != array_sum($collection->toArray())) {
echo 'Collection::shuffle() failed.', PHP_EOL;
}
for ($i = 0; ; ++$i) {
$shuffled = Collection::init($array)->shuffled();
if ($shuffled->toArray() != array_values($array))
if ($shuffled->toArray() != array_values($array)) {
break;
}
if ($i > 10) {
echo 'Collection::shuffled() failed.', PHP_EOL;
exit;
}
}
if (array_sum($array) != array_sum($shuffled->toArray()))
if (array_sum($array) != array_sum($shuffled->toArray())) {
echo 'Collection::shuffled() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -14,9 +14,11 @@ $by_b = function ($p1, $p2) {
$by_c = function ($p1, $p2) {
return strval($p1->second['c'] - $p2->second['c']);
};
if ($collection->minWith($by_b) != $array['a'] || $collection->minWith($by_c) != $array['d'])
if ($collection->minWith($by_b) != $array['a'] || $collection->minWith($by_c) != $array['d']) {
echo 'Collection::minWith() failed.', PHP_EOL;
if ($collection->maxWith($by_b) != $array['e'] || $collection->maxWith($by_c) != $array['a'])
}
if ($collection->maxWith($by_b) != $array['e'] || $collection->maxWith($by_c) != $array['a']) {
echo 'Collection::maxWith() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -18,8 +18,9 @@ $usort_by_b = function ($v1, $v2) {
$sorted_by_b = $collection->sortedWith($by_b);
$array1 = $array;
usort($array1, $usort_by_b);
if ($sorted_by_b->toArray() != $array1)
if ($sorted_by_b->toArray() != $array1) {
echo 'Collection::sortedWith() failed.', PHP_EOL;
}
$by_c = function ($p1, $p2) {
return $p1->second['c'] - $p2->second['c'];
};
@ -29,7 +30,8 @@ $usort_by_c = function ($v1, $v2) {
$collection->sortWith($by_c);
$array2 = $array;
usort($array2, $usort_by_c);
if ($collection->toArray() != $array2)
if ($collection->toArray() != $array2) {
echo 'Collection::sortedWith() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -3,33 +3,38 @@ Test Collection::sort(), Collection::sortDescending(), Collection::sorted(), Col
--FILE--
<?php
$array = [];
for ($i = 0; $i < 100; ++$i)
for ($i = 0; $i < 100; ++$i) {
$array[] = random_int(-200, 200);
}
$collection = Collection::init($array);
$collection->sort();
$array1 = $array;
sort($array1, SORT_NUMERIC);
if ($array1 != $collection->toArray())
if ($array1 != $collection->toArray()) {
echo 'Collection::sort() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$collection->sortDescending();
$array1 = $array;
rsort($array1, SORT_NUMERIC);
if ($array1 != $collection->toArray())
if ($array1 != $collection->toArray()) {
echo 'Collection::sortDescending() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$array1 = $array;
sort($array1, SORT_NUMERIC);
if ($array1 != $collection->sorted()->toArray())
if ($array1 != $collection->sorted()->toArray()) {
echo 'Collection::sorted() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$array1 = $array;
rsort($array1, SORT_NUMERIC);
if ($array1 != $collection->sortedDescending()->toArray())
if ($array1 != $collection->sortedDescending()->toArray()) {
echo 'Collection::sortedDescending() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -3,8 +3,9 @@ Test Collection::sortBy(), Collection::sortByDescending(), Collection::sortedBy(
--FILE--
<?php
$array = [];
for ($i = 0; $i < 4; ++$i)
for ($i = 0; $i < 4; ++$i) {
$array[random_bytes(2)] = [random_int(10, 99)];
}
$sort_by = function ($value) {
return strval($value[0]);
@ -20,26 +21,30 @@ $collection = Collection::init($array);
$collection->sortBy($sort_by);
$array1 = $array;
usort($array1, $sort_with);
if ($array1 != $collection->toArray())
if ($array1 != $collection->toArray()) {
echo 'Collection::sortBy() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$collection->sortByDescending($sort_by);
$array1 = $array;
usort($array1, $sort_with_descending);
if ($array1 != $collection->toArray())
if ($array1 != $collection->toArray()) {
echo 'Collection::sortByDescending() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$array1 = $array;
usort($array1, $sort_with);
if ($array1 != $collection->sortedBy($sort_by)->toArray())
if ($array1 != $collection->sortedBy($sort_by)->toArray()) {
echo 'Collection::sortedBy() failed.', PHP_EOL;
}
$collection = Collection::init($array);
$array1 = $array;
usort($array1, $sort_with_descending);
if ($array1 != $collection->sortedByDescending($sort_by)->toArray())
if ($array1 != $collection->sortedByDescending($sort_by)->toArray()) {
echo 'Collection::sortedByDescending() failed.', PHP_EOL;
}
?>
--EXPECT--

View File

@ -3,17 +3,21 @@ Test Collection::distinct().
--FILE--
<?php
$array = [];
for ($i = 0; $i < 100; ++$i)
$array[] = random_int(1, 10);
for ($i = 0; $i < 400; ++$i) {
$array[] = random_int(1, 400);
}
$collection = Collection::init($array)->distinct();
if ($collection->toArray() != array_values(array_unique($array)))
if ($collection->toArray() != array_values(array_unique($array))) {
echo 'Collection::distinct() failed.', PHP_EOL;
}
$array = [];
for ($i = 0; $i < 100; ++$i)
for ($i = 0; $i < 100; ++$i) {
$array[random_bytes(4)] = random_int(1, 10);
}
$collection = Collection::init($array)->distinct();
if (array_diff($collection->toArray(), array_unique($array)))
if (array_diff($collection->toArray(), array_unique($array))) {
echo 'Collection::distinct() failed.', PHP_EOL;
}
?>
--EXPECT--