--- /dev/null
+<?php
+
+namespace Doctrine\Tests\ORM\Functional;
+
+use Doctrine\Common\Collections\Collection;
+
+require_once __DIR__ . '/../../TestInit.php';
+
+/**
+ * Base class for testing a many-to-many association mapping (without inheritance).
+ */
+class AbstractManyToManyAssociationTestCase extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+ protected $_firstField;
+ protected $_secondField;
+ protected $_table;
+
+ public function assertForeignKeysContain($firstId, $secondId)
+ {
+ $this->assertEquals(1, $this->_countForeignKeys($firstId, $secondId));
+ }
+
+ public function assertForeignKeysNotContain($firstId, $secondId)
+ {
+ $this->assertEquals(0, $this->_countForeignKeys($firstId, $secondId));
+ }
+
+ protected function _countForeignKeys($firstId, $secondId)
+ {
+ return count($this->_em->getConnection()->executeQuery("
+ SELECT {$this->_firstField}
+ FROM {$this->_table}
+ WHERE {$this->_firstField} = ?
+ AND {$this->_secondField} = ?
+ ", array($firstId, $secondId))->fetchAll());
+ }
+
+ public function assertCollectionEquals(Collection $first, Collection $second)
+ {
+ return $first->forAll(function($k, $e) use($second) { return $second->contains($e); });
+ }
+}