package musicxmltestsuite.tests.musicxml;
import static com.xenoage.utils.math.Fraction.fr;
import static org.junit.Assert.assertEquals;
import musicxmltestsuite.tests.base.Base02a;
import musicxmltestsuite.tests.utils.ToDo;
import org.junit.Test;
import com.xenoage.zong.musicxml.types.MxlNote;
import com.xenoage.zong.musicxml.types.choice.MxlFullNoteContent.MxlFullNoteContentType;
import com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent;
import com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent.MxlMusicDataContentType;
import com.xenoage.zong.musicxml.types.choice.MxlNormalNote;
import com.xenoage.zong.musicxml.types.partwise.MxlMeasure;
import com.xenoage.zong.musicxml.types.partwise.MxlPart;
public class Test02a
implements Base02a, MusicXmlTest {
@ToDo("multirests are not supported yet")
@Test public void test() {
MxlPart part = getFirstPart();
int iDuration = 0;
int divisions = 64; //from MusicXML file
for (int iM = 0; iM < part.getMeasures().size(); iM++) {
MxlMeasure measure = part.getMeasures().get(iM);
for (MxlMusicDataContent data : measure.getMusicData().getContent()) {
if (data.getMusicDataContentType() == MxlMusicDataContentType.Note) {
//check type and duration
MxlNormalNote note = (MxlNormalNote) ((MxlNote) data).getContent();
assertEquals(MxlFullNoteContentType.Rest, note.getFullNote().getContent()
.getFullNoteContentType());
assertEquals("rest " + iDuration, expectedDurations[iDuration++],
fr(note.getDuration(), divisions * 4));
}
}
}
assertEquals("not all rests found", expectedDurations.length, iDuration);
}
}