public function TypedDataTest::testTypedDataListsFilter in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/modules/system/src/Tests/TypedData/TypedDataTest.php \Drupal\system\Tests\TypedData\TypedDataTest::testTypedDataListsFilter()
Tests the filter() method on typed data lists.
File
- core/
modules/ system/ src/ Tests/ TypedData/ TypedDataTest.php, line 394 - Contains \Drupal\system\Tests\TypedData\TypedDataTest.
Class
- TypedDataTest
- Tests the functionality of all core data types.
Namespace
Drupal\system\Tests\TypedDataCode
public function testTypedDataListsFilter() {
// Check that an all-pass filter leaves the list untouched.
$value = array(
'zero',
'one',
);
$typed_data = $this
->createTypedData(ListDataDefinition::create('string'), $value);
$typed_data
->filter(function (TypedDataInterface $item) {
return TRUE;
});
$this
->assertEqual($typed_data
->count(), 2);
$this
->assertEqual($typed_data[0]
->getValue(), 'zero');
$this
->assertEqual($typed_data[0]
->getName(), 0);
$this
->assertEqual($typed_data[1]
->getValue(), 'one');
$this
->assertEqual($typed_data[1]
->getName(), 1);
// Check that a none-pass filter empties the list.
$value = array(
'zero',
'one',
);
$typed_data = $this
->createTypedData(ListDataDefinition::create('string'), $value);
$typed_data
->filter(function (TypedDataInterface $item) {
return FALSE;
});
$this
->assertEqual($typed_data
->count(), 0);
// Check that filtering correctly renumbers elements.
$value = array(
'zero',
'one',
'two',
);
$typed_data = $this
->createTypedData(ListDataDefinition::create('string'), $value);
$typed_data
->filter(function (TypedDataInterface $item) {
return $item
->getValue() !== 'one';
});
$this
->assertEqual($typed_data
->count(), 2);
$this
->assertEqual($typed_data[0]
->getValue(), 'zero');
$this
->assertEqual($typed_data[0]
->getName(), 0);
$this
->assertEqual($typed_data[1]
->getValue(), 'two');
$this
->assertEqual($typed_data[1]
->getName(), 1);
}