<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

include_once 'TeilnehmerZahlenProviderMock.php';

/**
 * Generated by PHPUnit_SkeletonGenerator on 2017-04-11 at 09:23:51.
 */
class TeilnehmerzahlenMaxTest extends \PHPUnit\Framework\TestCase
{
  /**
   * @test
   */
  public function normalkursTeilMax_TnKiMaxNichtGesetzt_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 10;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlTeilnehmerMaximal());
  }

  /**
   * @test
   */
  public function normalkursTeilMax_TnKiMaxIstGroesserTeilMax_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 10;
    $kurs->kurse2->tnki_max = 11;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlTeilnehmerMaximal());
  }

  /**
   * @test
   */
  public function normalkursTeilMax_TnKiMaxIstKleinerTeilMax_TnKiMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 10;
    $kurs->kurse2->tnki_max = 9;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(9, $tnBerechnet->getAnzahlTeilnehmerMaximal());
  }

  /**
   * @test
   */
  public function normalkursKinderMax_KinderMaxGesetztTnKiMaxNicht_KinderMax()
  {
    $kurs = new \Kurs();
    $kurs->kinder_max = 10;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlKinderMaximal());
  }

  /**
   * @test
   */
  public function normalkursKinderMax_TnKiMaxIstGroesserIstGroesserKinderMax_KinderMax()
  {
    $kurs = new \Kurs();
    $kurs->kinder_max = 10;
    $kurs->kurse2->tnki_max = 11;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlKinderMaximal());
  }

  /**
   * @test
   */
  public function normalkursKinderMax_TnKiMaxIstKleinerIstKleinerKinderMax_TnKiMax()
  {
    $kurs = new \Kurs();
    $kurs->kinder_max = 10;
    $kurs->kurse2->tnki_max = 9;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(9, $tnBerechnet->getAnzahlKinderMaximal());
  }

  /**
   * @test
   */
  public function normalkursTnKiMax_TnKiMaxNichtGesetzt_TnMaxPlusKinderMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(17, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function normalkursTnKiMax_TnKiMaxGleichTnMaxPlusKinderMax_tnKiMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 17;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(17, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function normalkursTnKiMax_TnKiMaxKleinerTnMaxPlusKinderMax_tnKiMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 13;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(13, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function normalkursTnKiMax_TnKiMaxGroesserTnMaxPlusKinderMax_TnMaxPlusKindMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 25;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetNormalkurs($tnZahlenDb);

    $this->assertEquals(17, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTeilMax_TeilMaxGesetztAberTnKiMaxNicht_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 10;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlTeilnehmerMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTeilMax_TeilMaxGesetztUndTnKiMaxIstGroesser_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 10;
    $kurs->kurse2->tnki_max = 11;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlTeilnehmerMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTeilMax_TeilMaxGesetztUndTnKiMaxIstKleiner_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 10;
    $kurs->kurse2->tnki_max = 9;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(10, $tnBerechnet->getAnzahlTeilnehmerMaximal());
  }

  /**
   * @test
   */
  public function kinderkursKinderMax_KinderMaxGesetztAberTnKiMaxNicht_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 12;
    $kurs->kinder_max = 10;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(12, $tnBerechnet->getAnzahlKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursKinderMax_KinderMaxGesetztUndTnKiMaxIstGroesser_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 12;
    $kurs->kinder_max = 10;
    $kurs->kurse2->tnki_max = 11;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(12, $tnBerechnet->getAnzahlKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursKinderMax_KinderMaxGesetztUndTnKiMaxIstKleiner_TeilMax()
  {
    $kurs = new \Kurs();
    $kurs->teil_max = 12;
    $kurs->kinder_max = 10;
    $kurs->kurse2->tnki_max = 9;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(12, $tnBerechnet->getAnzahlKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTnKiMax_TnKiMaxNichtGesetzt_TeilMax()
  {
    \System::$enforceKuferSqlVersion = 500;
    $kurs = new \Kurs();
    $kurs->typ = 'K';
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(8, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTnKiMax_420TnKiMaxNichtGesetzt_TeilMax()
  {
    \System::$enforceKuferSqlVersion = 420;
    $kurs = new \Kurs();
    $kurs->typ = 'K';
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 0;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = TeilnehmerzahlenFactory::getTnZahlenForKursart($kurs->typ, $tnZahlenDb);

    $this->assertEquals(17, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTnKiMax_TnKiMaxGleichTnMaxPlusKinderMax_TeilMax()
  {
    \System::$enforceKuferSqlVersion = 500;
    $kurs = new \Kurs();
    $kurs->typ = 'K';
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 17;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(8, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }

  /**
   * @test
   */
  public function kinderkursTnKiMax_TnKiMaxKleinerTnMaxPlusKinderMax_TeilMax()
  {
    \System::$enforceKuferSqlVersion = 500;
    $kurs = new \Kurs();
    $kurs->teil_max = 8;
    $kurs->kinder_max = 9;
    $kurs->kurse2->tnki_max = 13;
    $tnZahlenDb = new TeilnehmerZahlenProviderMock($kurs);
    $tnBerechnet = new TeilnehmerzahlenBerechnetKinderkurs($tnZahlenDb);

    $this->assertEquals(8, $tnBerechnet->getAnzahlTeilnehmerUndKinderMaximal());
  }
}
