public function testTableMap()
 {
     $join = new ModelJoin();
     $this->assertNull($join->getTableMap(), 'getTableMap() returns null as long as no table map is set');
     $tmap = new TableMap();
     $tmap->foo = 'bar';
     $join->setTableMap($tmap);
     $this->assertEquals($tmap, $join->getTableMap(), 'getTableMap() returns the TableMap previously set by setTableMap()');
 }
 /**
  * Define the joined hydration schema based on a join object.
  * Fills the ModelWith properties using a ModelJoin as source
  *
  * @param ModelJoin $join
  */
 public function init(ModelJoin $join)
 {
     $tableMap = $join->getTableMap();
     $this->setModelName($tableMap->getClassName());
     $this->getTableMap = $tableMap;
     $this->isSingleTableInheritance = $tableMap->isSingleTableInheritance();
     $relation = $join->getRelationMap();
     $relationName = $relation->getName();
     if ($relation->getType() == RelationMap::ONE_TO_MANY) {
         $this->isAdd = $this->isWithOneToMany = true;
         $this->relationName = $relation->getPluralName();
         $this->relationMethod = 'add' . $relationName;
         $this->initMethod = 'init' . $this->relationName;
         $this->resetPartialMethod = 'resetPartial' . $this->relationName;
     } else {
         $this->relationName = $relationName;
         $this->relationMethod = 'set' . $relationName;
     }
     $this->rightPhpName = $join->hasRelationAlias() ? $join->getRelationAlias() : $relationName;
     if (!$join->isPrimary()) {
         $this->leftPhpName = $join->hasLeftTableAlias() ? $join->getLeftTableAlias() : $join->getPreviousJoin()->getRelationMap()->getName();
     }
 }