You are here

public function HandlerTest::testBreakString in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/views/src/Tests/Handler/HandlerTest.php \Drupal\views\Tests\Handler\HandlerTest::testBreakString()

Tests the breakString method.

File

core/modules/views/src/Tests/Handler/HandlerTest.php, line 74
Contains \Drupal\views\Tests\Handler\HandlerTest.

Class

HandlerTest
Tests abstract handler definitions.

Namespace

Drupal\views\Tests\Handler

Code

public function testBreakString() {

  // Check defaults.
  $this
    ->assertEqual((object) array(
    'value' => array(),
    'operator' => NULL,
  ), HandlerBase::breakString(''));

  // Test ors
  $handler = HandlerBase::breakString('word1 word2+word');
  $this
    ->assertEqualValue(array(
    'word1',
    'word2',
    'word',
  ), $handler);
  $this
    ->assertEqual('or', $handler->operator);
  $handler = HandlerBase::breakString('word1+word2+word');
  $this
    ->assertEqualValue(array(
    'word1',
    'word2',
    'word',
  ), $handler);
  $this
    ->assertEqual('or', $handler->operator);
  $handler = HandlerBase::breakString('word1 word2 word');
  $this
    ->assertEqualValue(array(
    'word1',
    'word2',
    'word',
  ), $handler);
  $this
    ->assertEqual('or', $handler->operator);
  $handler = HandlerBase::breakString('word-1+word-2+word');
  $this
    ->assertEqualValue(array(
    'word-1',
    'word-2',
    'word',
  ), $handler);
  $this
    ->assertEqual('or', $handler->operator);
  $handler = HandlerBase::breakString('wõrd1+wõrd2+wõrd');
  $this
    ->assertEqualValue(array(
    'wõrd1',
    'wõrd2',
    'wõrd',
  ), $handler);
  $this
    ->assertEqual('or', $handler->operator);

  // Test ands.
  $handler = HandlerBase::breakString('word1,word2,word');
  $this
    ->assertEqualValue(array(
    'word1',
    'word2',
    'word',
  ), $handler);
  $this
    ->assertEqual('and', $handler->operator);
  $handler = HandlerBase::breakString('word1 word2,word');
  $this
    ->assertEqualValue(array(
    'word1 word2',
    'word',
  ), $handler);
  $this
    ->assertEqual('and', $handler->operator);
  $handler = HandlerBase::breakString('word1,word2 word');
  $this
    ->assertEqualValue(array(
    'word1',
    'word2 word',
  ), $handler);
  $this
    ->assertEqual('and', $handler->operator);
  $handler = HandlerBase::breakString('word-1,word-2,word');
  $this
    ->assertEqualValue(array(
    'word-1',
    'word-2',
    'word',
  ), $handler);
  $this
    ->assertEqual('and', $handler->operator);
  $handler = HandlerBase::breakString('wõrd1,wõrd2,wõrd');
  $this
    ->assertEqualValue(array(
    'wõrd1',
    'wõrd2',
    'wõrd',
  ), $handler);
  $this
    ->assertEqual('and', $handler->operator);

  // Test a single word
  $handler = HandlerBase::breakString('word');
  $this
    ->assertEqualValue(array(
    'word',
  ), $handler);
  $this
    ->assertEqual('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
    ->assertEqualValue(array(
    $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('or', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$s1}+{$n2}+{$n3}");
  $this
    ->assertEqualValue(array(
    $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('or', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$s1} {$n2} {$n3}");
  $this
    ->assertEqualValue(array(
    $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('or', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$s1} {$n2}++{$n3}");
  $this
    ->assertEqualValue(array(
    $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('or', $handlerBase->operator);

  // Test "and"s.
  $handlerBase = HandlerBase::breakString("{$s1},{$n2},{$n3}");
  $this
    ->assertEqualValue(array(
    $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('and', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$s1},,{$n2},{$n3}");
  $this
    ->assertEqualValue(array(
    $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('and', $handlerBase->operator);

  // Enforce int values.
  $handlerBase = HandlerBase::breakString("{$n1},{$n2},{$n3}", TRUE);
  $this
    ->assertEqualValue(array(
    $n1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('and', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$n1}+{$n2}+{$n3}", TRUE);
  $this
    ->assertEqualValue(array(
    $n1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('or', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$s1},{$n2},{$n3}", TRUE);
  $this
    ->assertEqualValue(array(
    (int) $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('and', $handlerBase->operator);
  $handlerBase = HandlerBase::breakString("{$s1}+{$n2}+{$n3}", TRUE);
  $this
    ->assertEqualValue(array(
    (int) $s1,
    $n2,
    $n3,
  ), $handlerBase);
  $this
    ->assertEqual('or', $handlerBase->operator);
}