start to add ability to merge tunes
started refactoring tune builders to use string type hint instead of StringAtom
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user