multiversion-8.x-1.0-beta34/tests/src/Functional/ComplexLcaResolverTest.php

tests/src/Functional/ComplexLcaResolverTest.php
<?php

namespace Drupal\Tests\multiversion\Functional;

/**
 * Test the Integration of LCA library with multiversion module.
 *
 * @group multiversion
 */
class ComplexLcaResolverTest extends MultiversionFunctionalTestBase {

  protected static $modules = ['entity_test', 'key_value', 'multiversion', 'conflict'];

  /**
   * @var \Drupal\multiversion\Workspace\WorkspaceManagerInterface
   */
  protected $workspaceManager;

  /**
   * @var \Drupal\multiversion\Entity\Index\RevisionTreeIndex
   */
  protected $tree;

  /**
   * @var \Drupal\conflict\LcaManager.
   */
  protected $conflictLcaManager;

  /**
   * {@inheritdoc}
   */
  protected function setUp() {
    parent::setUp();
    $this->conflictLcaManager = $this->container->get('conflict.lca_manager');
    $this->tree = $this->container->get('multiversion.entity_index.rev.tree');
  }

  /**
   * Shape of Tree created is:
   *              1
   *            /   \
   *           2     6
   *         /   \
   *        3     4
   *             /
   *            5
   */
  public function testLcaFinder() {
    $storage = $this->entityTypeManager->getStorage('entity_test');
    $entity = $storage->create();
    $uuid = $entity->uuid();

    // Initial revision.
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch from the second revision.
    $entity = $storage->loadRevision(2);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Continue the last branch.
    $entity = $storage->loadRevision(4);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch based on the first revision.
    $entity = $storage->loadRevision(1);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Loading and storing revisions in $revision array.
    $revision = [];
    for ($i = 1; $i <= 6; $i++) {
      $revision[$i] = $storage->loadRevision($i);
    }

    // Creating a graph of revision IDs from revision tree.
    $graph = $this->tree->getGraph($uuid);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[1],$revision[2], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[3],$revision[4], $graph);
    $this->assertEqual($lca_id->getId(), $revs[1]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[3],$revision[6], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[2],$revision[6], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);
  }

  /**
   *  Shape of tree is:
   *            1
   *          /   \
   *         2     6
   *        / \   / \
   *       3   5 7   8
   *      / \       /
   *     4   9    10
   *
   */
  public function testLcaFinder2() {
    $storage = $this->entityTypeManager->getStorage('entity_test');
    $entity = $storage->create();
    $uuid = $entity->uuid();

    // Initial revision.
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch from the second revision.
    $entity = $storage->loadRevision(2);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch from the first revision.
    $entity = $storage->loadRevision(1);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Creating a new branch from sixth revision.
    $entity = $storage->loadRevision(6);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Creating another revision branch from sixth revision.
    $entity = $storage->loadRevision(6);
    $entity->name = 'Revision6';
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity = $storage->loadRevision(3);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch based on the first revision.
    $entity = $storage->loadRevision(8);
    $entity->save();
    $revs[] = $entity->_rev->value;

    $revision = [];
    for ($i = 1; $i <= 10; $i++) {
      $revision[$i] = $storage->loadRevision($i);
    }

    $graph = $this->tree->getGraph($uuid);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[1],$revision[2], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[2],$revision[6], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[3],$revision[5], $graph);
    $this->assertEqual($lca_id->getId(), $revs[1]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[2],$revision[3], $graph);
    $this->assertEqual($lca_id->getId(), $revs[1]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[4],$revision[5], $graph);
    $this->assertEqual($lca_id->getId(), $revs[1]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[4],$revision[9], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[7],$revision[10], $graph);
    $this->assertEqual($lca_id->getId(), $revs[5]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[6],$revision[7], $graph);
    $this->assertEqual($lca_id->getId(), $revs[5]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[7],$revision[8], $graph);
    $this->assertEqual($lca_id->getId(), $revs[5]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[8],$revision[9], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[6],$revision[8], $graph);
    $this->assertEqual($lca_id->getId(), $revs[5]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[3],$revision[9], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);
  }

  // Graph structure in multiversion/vendor/relaxedws/lca/pictures/simple_graph.png
  public function testLcaFinder3() {
    $storage = $this->entityTypeManager->getStorage('entity_test');
    $entity = $storage->create();
    $uuid = $entity->uuid();

    // Initial revision.
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch from the third revision.
    $entity = $storage->loadRevision(3);
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch from the fourth revision.
    $entity = $storage->loadRevision(4);
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Create a new branch from the fifth revision.
    $entity = $storage->loadRevision(5);
    $entity->save();
    $revs[] = $entity->_rev->value;


    $entity = $storage->loadRevision(3);
    $entity->name = 'Revision3';
    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity = $storage->loadRevision(1);
    $entity->name = 'Revision6';
    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity = $storage->loadRevision(14);
    $entity->name = 'Revision14';
    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;

    $entity->save();
    $revs[] = $entity->_rev->value;
    $entity = $storage->loadRevision(16);
    $entity->name = 'Revision16';
    $entity->save();
    $revs[] = $entity->_rev->value;

    // Creating graph from revision tree.
    $graph = $this->tree->getGraph($uuid);

    // Loading and storing revisions in $revision array.
    $revision = [];
    for ($i = 1; $i <= 21; $i++) {
      $revision[$i] = $storage->loadRevision($i);
    }

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[1],$revision[2], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[2],$revision[3], $graph);
    $this->assertEqual($lca_id->getId(), $revs[1]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[7],$revision[8], $graph);
    $this->assertEqual($lca_id->getId(), $revs[6]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[5],$revision[9], $graph);
    $this->assertEqual($lca_id->getId(), $revs[3]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[10],$revision[11], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[16],$revision[17], $graph);
    $this->assertEqual($lca_id->getId(), $revs[15]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[17],$revision[20], $graph);
    $this->assertEqual($lca_id->getId(), $revs[13]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[6],$revision[21], $graph);
    $this->assertEqual($lca_id->getId(), $revs[0]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[6],$revision[11], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[17],$revision[21], $graph);
    $this->assertEqual($lca_id->getId(), $revs[15]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[15],$revision[18], $graph);
    $this->assertEqual($lca_id->getId(), $revs[13]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[5],$revision[9], $graph);
    $this->assertEqual($lca_id->getId(), $revs[3]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[6],$revision[10], $graph);
    $this->assertEqual($lca_id->getId(), $revs[4]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[7],$revision[11], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[13],$revision[14], $graph);
    $this->assertEqual($lca_id->getId(), $revs[12]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[8],$revision[12], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);

    $lca_id = $this->conflictLcaManager->resolveLowestCommonAncestor($revision[4],$revision[8], $graph);
    $this->assertEqual($lca_id->getId(), $revs[2]);
  }
  
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc