package musicxmltestsuite.tests.utils;
import static com.xenoage.utils.kernel.Range.range;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import com.xenoage.zong.core.Score;
import com.xenoage.zong.core.music.VoiceElement;
import com.xenoage.zong.core.music.chord.Chord;
import com.xenoage.zong.core.music.lyric.Lyric;
import com.xenoage.zong.core.position.MP;
public class ChordTest {
public static void assertEqualsChord(Chord expectedChord, Chord chord, MP chordMP) {
assertEqualsChordNotes(expectedChord, chord, chordMP);
assertEqualsChordLyrics(expectedChord, chord, chordMP);
}
private static void assertEqualsChordNotes(Chord expectedChord, Chord chord, MP chordMP) {
assertEquals(""+chordMP, expectedChord.getNotes().size(), chord.getNotes().size());
for (int i : range(expectedChord.getNotes()))
assertEquals(""+chordMP + ", note " + i,
expectedChord.getNotes().get(i), chord.getNotes().get(i));
}
private static void assertEqualsChordLyrics(Chord expectedChord, Chord chord, MP chordMP) {
assertEquals(""+chordMP, expectedChord.getLyrics().size(), chord.getLyrics().size());
for (int i : range(expectedChord.getLyrics()))
assertEquals(""+chordMP + ", lyric " + i,
expectedChord.getLyrics().get(i), chord.getLyrics().get(i));
}
public static void assertEqualsChordLyrics(Lyric[] expectedLyrics, Chord chord, MP chordMP) {
assertEquals(""+chordMP, expectedLyrics.length, chord.getLyrics().size());
for (int i : range(expectedLyrics))
assertEquals(chordMP + ", lyric " + i, expectedLyrics[i], chord.getLyrics().get(i));
}
public static Chord getChordAt(Score score, MP mp) {
VoiceElement e = null;
if (mp.getBeat() != null)
e = score.getVoice(mp).getElementAt(mp.beat);
else
e = score.getVoice(mp).getElement(mp.element);
if (false == e instanceof Chord)
fail("No chord at " + mp);
return (Chord) e;
}
}