function HandlerTest::testBreakString
Same name in other branches
- 9 core/modules/views/tests/src/Functional/Handler/HandlerTest.php \Drupal\Tests\views\Functional\Handler\HandlerTest::testBreakString()
- 8.9.x core/modules/views/tests/src/Functional/Handler/HandlerTest.php \Drupal\Tests\views\Functional\Handler\HandlerTest::testBreakString()
- 11.x core/modules/views/tests/src/Functional/Handler/HandlerTest.php \Drupal\Tests\views\Functional\Handler\HandlerTest::testBreakString()
Tests the breakString method.
File
-
core/
modules/ views/ tests/ src/ Functional/ Handler/ HandlerTest.php, line 79
Class
- HandlerTest
- Tests abstract handler definitions.
Namespace
Drupal\Tests\views\Functional\HandlerCode
public function testBreakString() : void {
// Check defaults.
$this->assertEquals((object) [
'value' => [],
'operator' => NULL,
], HandlerBase::breakString(''));
// Test ors
$handler = HandlerBase::breakString('word1 word2+word');
$this->assertEquals([
'word1',
'word2',
'word',
], $handler->value);
$this->assertEquals('or', $handler->operator);
$handler = HandlerBase::breakString('word1+word2+word');
$this->assertEquals([
'word1',
'word2',
'word',
], $handler->value);
$this->assertEquals('or', $handler->operator);
$handler = HandlerBase::breakString('word1 word2 word');
$this->assertEquals([
'word1',
'word2',
'word',
], $handler->value);
$this->assertEquals('or', $handler->operator);
$handler = HandlerBase::breakString('word-1+word-2+word');
$this->assertEquals([
'word-1',
'word-2',
'word',
], $handler->value);
$this->assertEquals('or', $handler->operator);
$handler = HandlerBase::breakString('wõrd1+wõrd2+wõrd');
$this->assertEquals([
'wõrd1',
'wõrd2',
'wõrd',
], $handler->value);
$this->assertEquals('or', $handler->operator);
// Test ands.
$handler = HandlerBase::breakString('word1,word2,word');
$this->assertEquals([
'word1',
'word2',
'word',
], $handler->value);
$this->assertEquals('and', $handler->operator);
$handler = HandlerBase::breakString('word1 word2,word');
$this->assertEquals([
'word1 word2',
'word',
], $handler->value);
$this->assertEquals('and', $handler->operator);
$handler = HandlerBase::breakString('word1,word2 word');
$this->assertEquals([
'word1',
'word2 word',
], $handler->value);
$this->assertEquals('and', $handler->operator);
$handler = HandlerBase::breakString('word-1,word-2,word');
$this->assertEquals([
'word-1',
'word-2',
'word',
], $handler->value);
$this->assertEquals('and', $handler->operator);
$handler = HandlerBase::breakString('wõrd1,wõrd2,wõrd');
$this->assertEquals([
'wõrd1',
'wõrd2',
'wõrd',
], $handler->value);
$this->assertEquals('and', $handler->operator);
// Test a single word
$handler = HandlerBase::breakString('word');
$this->assertEquals([
'word',
], $handler->value);
$this->assertEquals('and', $handler->operator);
$s1 = $this->randomMachineName();
// Generate three random numbers which can be used below;
$n1 = rand(0, 100);
$n2 = rand(0, 100);
$n3 = rand(0, 100);
// Test "or"s.
$handlerBase = HandlerBase::breakString("{$s1} {$n2}+{$n3}");
$this->assertEquals([
$s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1}+{$n2}+{$n3}");
$this->assertEquals([
$s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1} {$n2} {$n3}");
$this->assertEquals([
$s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1} {$n2}++{$n3}");
$this->assertEquals([
$s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
// Test "and"s.
$handlerBase = HandlerBase::breakString("{$s1},{$n2},{$n3}");
$this->assertEquals([
$s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('and', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1},,{$n2},{$n3}");
$this->assertEquals([
$s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('and', $handlerBase->operator);
// Enforce int values.
$handlerBase = HandlerBase::breakString("{$n1},{$n2},{$n3}", TRUE);
$this->assertEquals([
$n1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('and', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$n1}+{$n2}+{$n3}", TRUE);
$this->assertEquals([
$n1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1},{$n2},{$n3}", TRUE);
$this->assertEquals([
(int) $s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('and', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1}+{$n2}+{$n3}", TRUE);
$this->assertEquals([
(int) $s1,
$n2,
$n3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
// Generate three random decimals which can be used below;
$d1 = rand(0, 10) / 10;
$d2 = rand(0, 10) / 10;
$d3 = rand(0, 10) / 10;
// Test "or"s.
$handlerBase = HandlerBase::breakString("{$s1} {$d1}+{$d2}");
$this->assertEquals([
$s1,
$d1,
$d2,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1}+{$d1}+{$d3}");
$this->assertEquals([
$s1,
$d1,
$d3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1} {$d2} {$d3}");
$this->assertEquals([
$s1,
$d2,
$d3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1} {$d2}++{$d3}");
$this->assertEquals([
$s1,
$d2,
$d3,
], $handlerBase->value);
$this->assertEquals('or', $handlerBase->operator);
// Test "and"s.
$handlerBase = HandlerBase::breakString("{$s1},{$d2},{$d3}");
$this->assertEquals([
$s1,
$d2,
$d3,
], $handlerBase->value);
$this->assertEquals('and', $handlerBase->operator);
$handlerBase = HandlerBase::breakString("{$s1},,{$d2},{$d3}");
$this->assertEquals([
$s1,
$d2,
$d3,
], $handlerBase->value);
$this->assertEquals('and', $handlerBase->operator);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.