package musicxmltestsuite.tests.base; import static com.xenoage.utils.collections.CollectionUtils.alist; import static com.xenoage.utils.kernel.Tuple2.t; import static com.xenoage.utils.math.Fraction.fr; 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.ch; import static musicxmltestsuite.tests.utils.Utils.fermata; import java.util.List; import com.xenoage.utils.kernel.Tuple2; import com.xenoage.zong.core.music.annotation.ArticulationType; import com.xenoage.zong.core.music.chord.Chord; import com.xenoage.zong.core.music.direction.Direction; 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 com.xenoage.zong.core.text.UnformattedText; public interface Base21d extends Base { @Override default String getFileName() { return "21d-Chords-SchubertStabatMater.xml"; } default Chord[] getExpectedChords() { Chord[] expectedChords = { ch(fr(1, 1), pi('F', 0, 4), pi('A', 0, 4), pi('C', 0, 5)), ch(fr(3, 8), pi('F', 0, 4), pi('A', -1, 4)), ch(fr(1, 8), pi('F', 0, 4), pi('A', -1, 4)), ch(fr(1, 4), pi('G', 0, 4), pi('B', -1, 4)), ch(fr(1, 4), pi('G', 0, 4), pi('B', -1, 4)) }; expectedChords[0].setAnnotations(alist( articulation(ArticulationType.Accent, Placement.Below), fermata(Placement.Above))); return expectedChords; } default List<Tuple2<MP, ? extends Direction>> getExpectedDirections() { List<Tuple2<MP, ? extends Direction>> expectedDirections = alist(); Words largo = new Words(new UnformattedText("Largo")); largo.setPositioning(Placement.Above); expectedDirections.add(t(mp0, largo)); Dynamic fp = new Dynamic(DynamicValue.fp); fp.setPositioning(Placement.Below); expectedDirections.add(t(mp0, fp)); Dynamic p = new Dynamic(DynamicValue.p); fp.setPositioning(Placement.Below); expectedDirections.add(t(mp0.withMeasure(1), p)); return expectedDirections; } }