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

class DBWorkTitelTest extends \PHPUnit\Framework\TestCase
{
  /**
   * @var DBWorkTitel
   */
  protected $object;

  /**
   * Sets up the fixture, for example, opens a network connection.
   * This method is called before a test is executed.
   */
  protected function setUp(): void
  {
    System::setOverrideDbName('MYSQL');

    $this->object = new DBWorkTitel();
  }

  /**
   * @covers DBWorkKurse::getTitle4DozByTitles
   * @test
   */
  public function getTitle4DozByTitles()
  {
    $titles = unserialize('a:4:{i:0;O:5:"Titel":4:{s:4:"name";s:5:"B. A.";s:9:"ansprache";s:0:"";s:8:"stellung";s:1:"2";s:2:"id";s:1:"4";}i:1;O:5:"Titel":4:{s:4:"name";s:5:"M. A.";s:9:"ansprache";s:0:"";s:8:"stellung";s:1:"2";s:2:"id";s:1:"5";}i:2;O:5:"Titel":4:{s:4:"name";s:3:"MBA";s:9:"ansprache";s:0:"";s:8:"stellung";s:1:"2";s:2:"id";s:1:"6";}i:3;O:5:"Titel":4:{s:4:"name";s:2:"NA";s:9:"ansprache";s:2:"NA";s:8:"stellung";s:1:"1";s:2:"id";s:1:"7";}}');

    $titles = unserialize('a:5:{i:0;O:5:"Titel":4:{s:4:"name";s:5:"B. A.";s:9:"ansprache";s:0:"";s:8:"stellung";i:2;s:2:"id";i:4;}i:1;O:5:"Titel":4:{s:4:"name";s:5:"M. A.";s:9:"ansprache";s:0:"";s:8:"stellung";i:2;s:2:"id";i:5;}i:2;O:5:"Titel":4:{s:4:"name";s:3:"MBA";s:9:"ansprache";s:0:"";s:8:"stellung";i:2;s:2:"id";i:6;}i:3;O:5:"Titel":4:{s:4:"name";s:2:"NA";s:9:"ansprache";s:2:"NA";s:8:"stellung";i:1;s:2:"id";i:7;}i:4;O:5:"Titel":4:{s:4:"name";s:2:"BA";s:9:"ansprache";s:2:"BA";s:8:"stellung";i:2;s:2:"id";i:8;}}');

    $db = array('B. A. NA', 'Dr. NA', 'M. A. MBA', 'Dr. Prof.', 'MBA');
    $expectedVorn = array('', 'Dr.', '', 'Dr. Prof.', '');
    $expectedHinten = array(', B. A. NA', ' NA', ', M. A. MBA', '', ', MBA');
    //$expectedVorn = array(', B. A. NA', ' NA', ', M. A. MBA', '');
    //$expectedHinten = array('', 'Dr.', '', 'Dr. Prof.');
    $expectedHintenOhneKomma = array(' B. A. NA', ' NA', ' M. A. MBA', '', ' MBA');

    for ($i = 0; $i < count($db); $i++) {
      $titleVorn = $this->object->getTitle4DozByTitles($titles, $db[$i]);
      $this->assertEquals($expectedVorn[$i], $titleVorn, 'Problem bei (vorn): ' . $db[$i]);
      $titleHint = $this->object->getTitle4DozByTitles($titles, $db[$i], false);
      $this->assertEquals($expectedHinten[$i], $titleHint, 'Problem bei (hinten): ' . $db[$i]);
      $titleHint = $this->object->getTitle4DozByTitles($titles, $db[$i], false, false);
      $this->assertEquals($expectedHintenOhneKomma[$i], $titleHint, 'Problem bei (hinten ohne komma): ' . $db[$i]);
    }
  }

  /**
   * @covers DBWorkKurse::getTitle4DozByTitles
   * @test
   */
  public function getTitle4DozByTitles_Innsbruck()
  {
    $titles = unserialize('a:13:{i:0;O:5:"Titel":4:{s:4:"name";s:5:"B. A.";s:9:"ansprache";s:0:"";s:8:"stellung";i:1;s:2:"id";i:4;}i:1;O:5:"Titel":4:{s:4:"name";s:5:"M. A.";s:9:"ansprache";s:0:"";s:8:"stellung";i:2;s:2:"id";i:5;}i:2;O:5:"Titel":4:{s:4:"name";s:5:"LL.M.";s:9:"ansprache";s:0:"";s:8:"stellung";i:2;s:2:"id";i:17;}i:3;O:5:"Titel":4:{s:4:"name";s:4:"BScN";s:9:"ansprache";s:0:"";s:8:"stellung";i:2;s:2:"id";i:10;}i:4;O:5:"Titel":4:{s:4:"name";s:4:"MScN";s:9:"ansprache";s:0:"";s:8:"stellung";i:1;s:2:"id";i:24;}i:5;O:5:"Titel":4:{s:4:"name";s:3:"MBA";s:9:"ansprache";s:3:"MBA";s:8:"stellung";i:2;s:2:"id";i:6;}i:6;O:5:"Titel":4:{s:4:"name";s:3:"BEd";s:9:"ansprache";s:0:"";s:8:"stellung";i:1;s:2:"id";i:8;}i:7;O:5:"Titel":4:{s:4:"name";s:3:"BSc";s:9:"ansprache";s:3:"BSc";s:8:"stellung";i:2;s:2:"id";i:9;}i:8;O:5:"Titel":4:{s:4:"name";s:3:"MAS";s:9:"ansprache";s:3:"MAS";s:8:"stellung";i:2;s:2:"id";i:21;}i:9;O:5:"Titel":4:{s:4:"name";s:3:"MSc";s:9:"ansprache";s:3:"MSc";s:8:"stellung";i:2;s:2:"id";i:23;}i:10;O:5:"Titel":4:{s:4:"name";s:3:"PhD";s:9:"ansprache";s:3:"PhD";s:8:"stellung";i:2;s:2:"id";i:26;}i:11;O:5:"Titel":4:{s:4:"name";s:2:"BA";s:9:"ansprache";s:2:"BA";s:8:"stellung";i:2;s:2:"id";i:7;}i:12;O:5:"Titel":4:{s:4:"name";s:2:"MA";s:9:"ansprache";s:2:"MA";s:8:"stellung";i:2;s:2:"id";i:19;}}');
    $anredeTitel = 'MSc';
    $expectedVorn = '';
    $expectedHinten = ', MSc';
    $expectedHintenOhne = ' MSc';
    $titelVorn = $this->object->getTitle4DozByTitles($titles, $anredeTitel);
    $this->assertEquals($expectedVorn, $titelVorn, 'Problem bei (vorn): ' . $titelVorn);
    $titelHinten = $this->object->getTitle4DozByTitles($titles, $anredeTitel, false);
    $this->assertEquals($expectedHinten, $titelHinten, 'Problem bei (hinten): ' . $titelHinten);
    $titelHintenOhne = $this->object->getTitle4DozByTitles($titles, $anredeTitel, false, false);
    $this->assertEquals($expectedHintenOhne, $titelHintenOhne, 'Problem bei (hinten): ' . $titelHintenOhne);
  }
}
