package musicxmltestsuite.tests.musicxmlin;
import com.xenoage.zong.core.Score;
import com.xenoage.zong.core.music.MeasureElement;
import com.xenoage.zong.core.music.annotation.ArticulationType;
import com.xenoage.zong.core.music.chord.Chord;
import com.xenoage.zong.core.music.direction.Dynamic;
import com.xenoage.zong.core.music.direction.DynamicValue;
import com.xenoage.zong.core.music.direction.Words;
import com.xenoage.zong.core.music.format.Placement;
import com.xenoage.zong.core.position.MP;
import musicxmltestsuite.tests.base.Base21d;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import static com.xenoage.utils.math.Fraction.*;
import static com.xenoage.zong.core.music.Pitch.pi;
import static com.xenoage.zong.core.position.MP.mp0;
import static musicxmltestsuite.tests.utils.Utils.articulation;
import static musicxmltestsuite.tests.utils.Utils.fermata;
import static org.junit.Assert.*;
public class Test21d
implements Base21d, MusicXmlInTest {
Score score;
@Before public void before() {
score = getScore();
}
@Test public void testMeasure0() {
//F4, whole, with accent and fermata
Chord chord = (Chord) score.getVoice(mp0).getElementAt(_0);
assertEquals(1, chord.getNotes().size());
assertEquals(pi('F', 0, 4), chord.getNotes().get(0).getPitch());
assertEquals(_1, chord.getDuration());
assertEquals(2, chord.getAnnotations().size());
assertEquals(articulation(ArticulationType.Accent, Placement.Below), chord
.getAnnotations().get(0));
assertEquals(fermata(Placement.Above), chord.getAnnotations().get(1));
//words "Largo"
List<MeasureElement> directions = score.getMeasure(mp0).getMeasureElements().getAll(_0);
assertEquals(3, directions.size()); //clef, words, dynamics
Words words = (Words) directions.get(1);
assertEquals("Largo", words.getText().toString());
assertEquals(Placement.Above, words.getPositioning());
//dynamics "fp"
Dynamic dynamics = (Dynamic) directions.get(2);
assertEquals(DynamicValue.fp, dynamics.getValue());
assertEquals(Placement.Below, dynamics.getPositioning());
}
@Test public void testMeasure1() {
MP m2 = mp0.withMeasure(1);
//chords
Chord chord = (Chord) score.getVoice(m2).getElementAt(_0);
assertEquals(2, chord.getNotes().size());
assertEquals(pi('F', 0, 4), chord.getNotes().get(0).getPitch());
assertEquals(pi('A', -1, 4), chord.getNotes().get(1).getPitch());
assertEquals(fr(3, 8), chord.getDuration());
chord = (Chord) score.getVoice(m2).getElementAt(fr(3, 8));
assertEquals(2, chord.getNotes().size());
assertEquals(pi('F', 0, 4), chord.getNotes().get(0).getPitch());
assertEquals(pi('A', -1, 4), chord.getNotes().get(1).getPitch());
assertEquals(fr(1, 8), chord.getDuration());
chord = (Chord) score.getVoice(m2).getElementAt(fr(2, 4));
assertEquals(2, chord.getNotes().size());
assertEquals(pi('G', 0, 4), chord.getNotes().get(0).getPitch());
assertEquals(pi('B', -1, 4), chord.getNotes().get(1).getPitch());
assertEquals(fr(1, 4), chord.getDuration());
chord = (Chord) score.getVoice(m2).getElementAt(fr(3, 4));
assertEquals(2, chord.getNotes().size());
assertEquals(pi('G', 0, 4), chord.getNotes().get(0).getPitch());
assertEquals(pi('B', -1, 4), chord.getNotes().get(1).getPitch());
assertEquals(fr(1, 4), chord.getDuration());
//dynamics "p"
Dynamic dynamics = (Dynamic) score.getMeasure(m2).getMeasureElements().get(_0);
assertEquals(DynamicValue.p, dynamics.getValue());
assertEquals(Placement.Below, dynamics.getPositioning());
}
}