--- /dev/null
+<?php
+
+namespace Doctrine\Tests\DBAL\Schema;
+
+require_once __DIR__ . '/../../TestInit.php';
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\Schema\Table;
+use Doctrine\DBAL\Schema\Column;
+use Doctrine\DBAL\Schema\Index;
+
+class IndexTest extends \PHPUnit_Framework_TestCase
+{
+ public function createIndex($unique=false, $primary=false)
+ {
+ return new Index("foo", array("bar", "baz"), $unique, $primary);
+ }
+
+ public function testCreateIndex()
+ {
+ $idx = $this->createIndex();
+ $this->assertEquals("foo", $idx->getName());
+ $columns = $idx->getColumns();
+ $this->assertEquals(2, count($columns));
+ $this->assertEquals(array("bar", "baz"), $columns);
+ $this->assertFalse($idx->isUnique());
+ $this->assertFalse($idx->isPrimary());
+ }
+
+ public function testCreatePrimary()
+ {
+ $idx = $this->createIndex(false, true);
+ $this->assertTrue($idx->isUnique());
+ $this->assertTrue($idx->isPrimary());
+ }
+
+ public function testCreateUnique()
+ {
+ $idx = $this->createIndex(true, false);
+ $this->assertTrue($idx->isUnique());
+ $this->assertFalse($idx->isPrimary());
+ }
+
+ /**
+ * @group DBAL-50
+ */
+ public function testFullfilledByUnique()
+ {
+ $idx1 = $this->createIndex(true, false);
+ $idx2 = $this->createIndex(true, false);
+ $idx3 = $this->createIndex();
+
+ $this->assertTrue($idx1->isFullfilledBy($idx2));
+ $this->assertFalse($idx1->isFullfilledBy($idx3));
+ }
+
+ /**
+ * @group DBAL-50
+ */
+ public function testFullfilledByPrimary()
+ {
+ $idx1 = $this->createIndex(true, true);
+ $idx2 = $this->createIndex(true, true);
+ $idx3 = $this->createIndex(true, false);
+
+ $this->assertTrue($idx1->isFullfilledBy($idx2));
+ $this->assertFalse($idx1->isFullfilledBy($idx3));
+ }
+
+ /**
+ * @group DBAL-50
+ */
+ public function testFullfilledByIndex()
+ {
+ $idx1 = $this->createIndex();
+ $idx2 = $this->createIndex();
+ $pri = $this->createIndex(true, true);
+ $uniq = $this->createIndex(true);
+
+ $this->assertTrue($idx1->isFullfilledBy($idx2));
+ $this->assertTrue($idx1->isFullfilledBy($pri));
+ $this->assertTrue($idx1->isFullfilledBy($uniq));
+ }
+
+ /**
+ * @group DBAL-220
+ */
+ public function testFlags()
+ {
+ $idx1 = $this->createIndex();
+ $this->assertFalse($idx1->hasFlag('clustered'));
+
+ $idx1->addFlag('clustered');
+ $this->assertTrue($idx1->hasFlag('clustered'));
+ $this->assertTrue($idx1->hasFlag('CLUSTERED'));
+
+ $idx1->removeFlag('clustered');
+ $this->assertFalse($idx1->hasFlag('clustered'));
+ }
+
+ /**
+ * @group DBAL-285
+ */
+ public function testIndexQuotes()
+ {
+ $index = new Index("foo", array("`bar`", "`baz`"));
+
+ $this->assertTrue($index->spansColumns(array("bar", "baz")));
+ $this->assertTrue($index->hasColumnAtPosition("bar", 0));
+ $this->assertTrue($index->hasColumnAtPosition("baz", 1));
+
+ $this->assertFalse($index->hasColumnAtPosition("bar", 1));
+ $this->assertFalse($index->hasColumnAtPosition("baz", 0));
+ }
+}