public function SearchExpressionTest::testInsertExtract

Tests the search expression methods.

@dataProvider dataProvider

File

drupal/core/modules/search/tests/Drupal/search/Tests/SearchExpressionTest.php, line 58
Contains \Drupal\search\Tests\SearchExpressionTest.

Class

SearchExpressionTest
Tests the search expression class.

Namespace

Drupal\search\Tests

Code

public function testInsertExtract($case_0, $case_1, $case_2, $case_3) {
  $base_expression = 'mykeyword';

  // Build an array of option, value, what should be in the expression, what
  // should be retrieved from expression.
  $after_insert = new SearchExpression($base_expression);
  $after_insert
    ->insert($case_0, $case_1);
  if (empty($case_2)) {
    $this
      ->assertEquals($base_expression, $after_insert
      ->getExpression(), 'Empty insert does change expression.');
  }
  else {
    $this
      ->assertEquals($base_expression . ' ' . $case_2, $after_insert
      ->getExpression(), 'Insert added incorrect expression.');
  }
  $retrieved = $after_insert
    ->extract($case_0);
  if (!isset($case_3)) {
    $this
      ->assertFalse(isset($retrieved), 'Empty retrieval results in unset value.');
  }
  else {
    $this
      ->assertEquals($case_3, $retrieved, 'Value is retrieved.');
  }
  $after_clear = $after_insert
    ->insert($case_0);
  $this
    ->assertEquals($base_expression, $after_clear
    ->getExpression(), 'After clearing, base expression is not restored.');
  $cleared = $after_clear
    ->extract($case_0);
  $this
    ->assertFalse(isset($cleared), 'After clearing, value could be retrieved.');
}