start to add ability to merge tunes

started refactoring tune builders to use string type hint instead of StringAtom
This commit is contained in:
2018-05-06 10:01:16 -04:00
parent 655a04a501
commit 82dc3de079
34 changed files with 505 additions and 87 deletions

View File

@@ -0,0 +1,37 @@
<?php
/**
* Created by PhpStorm.
* User: richard
* Date: 06/05/18
* Time: 8:28 AM
*/
use XaiCorp\AbcParser\Domain\Core\TuneAttributeArrayBuilder;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\Tune;
class TuneAttributeArrayBuilderTest extends \Codeception\Test\Unit
{
public function testSetIndex()
{
$index = new UnsignedIntegerAtom('14');
$builder = new TuneAttributeArrayBuilder();
$tune = $builder->setIndex($index)->getTune();
$this->assertInstanceOf(Tune::class, $tune);
$this->assertEquals($index->getValue(), $tune->getIndex());
}
public function testAppendMusic()
{
$music = new \Enzyme\Axiom\Atoms\StringAtom('Abcd|');
$builder = new TuneAttributeArrayBuilder();
$tune = $builder->appendMusic($music)->getTune();
$this->assertInstanceOf(Tune::class, $tune);
$this->assertEquals($music->getValue(), trim($tune->getMusic()));
}
}

View File

@@ -16,6 +16,7 @@ use XaiCorp\AbcParser\Domain\Core\Author;
use XaiCorp\AbcParser\Domain\Core\Composer;
use XaiCorp\AbcParser\Domain\Core\Tune;
use XaiCorp\AbcParser\Domain\Core\Setting;
use XaiCorp\AbcParser\Domain\Core\TuneAttributeArrayBuilder;
class TuneTest extends \PHPUnit_Framework_TestCase
{
@@ -28,17 +29,15 @@ class TuneTest extends \PHPUnit_Framework_TestCase
$this->assertInstanceOf(Tune::class, $tune);
}
public function testCanIntializeFromArray()
public function testCanInitializeFromArray()
{
$titles = ['Title'];
$authors = ['Richard Morgan'];
$config = [
'Titles' => $titles,
'Authors' => $authors
];
$tune = new Tune($config);
$tune = TuneAttributeArrayBuilder::create()
->addTitle($titles[0])
->addAuthor($authors[0])
->getTune();
$this->assertInstanceOf(Tune::class, $tune);
$this->assertEquals($tune->getTitles(), $titles);
@@ -187,17 +186,21 @@ class TuneTest extends \PHPUnit_Framework_TestCase
public function testMergeAddsExtraDataToTune()
{
$targetTune = new Tune([
'titles' => ['target']
]);
$sourceTune = new Tune([
'titles' => ['source']
]);
$targetTune = TuneAttributeArrayBuilder::create()
->addTitle('target')
->getTune();
$sourceTune = TuneAttributeArrayBuilder::create()
->addTitle('source')
->getTune();
$expected = TuneAttributeArrayBuilder::create()
->addTitle('target')
->addTitle('source')
->getTune($targetTune->identity());
$result = $targetTune->merge($sourceTune);
$this->assertEquals(new Tune([
'titles' => ['target', 'source']
]), $result);
$this->assertEquals($expected, $result);
}
}