package musicxmltestsuite.tests.musicxml; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import musicxmltestsuite.tests.base.Base11a; import org.junit.Test; import com.xenoage.zong.core.music.time.TimeType; import com.xenoage.zong.musicxml.types.MxlAttributes; import com.xenoage.zong.musicxml.types.MxlNormalTime; import com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent; import com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent.MxlMusicDataContentType; import com.xenoage.zong.musicxml.types.enums.MxlTimeSymbol; import com.xenoage.zong.musicxml.types.partwise.MxlMeasure; import com.xenoage.zong.musicxml.types.partwise.MxlPart; public class Test11a implements Base11a, MusicXmlTest { @Test public void test() { MxlPart part = getFirstPart(); int iTime = 0; for (int i = 0; i < part.getMeasures().size(); i++) { MxlMeasure measure = part.getMeasures().get(i); for (MxlMusicDataContent data : measure.getMusicData().getContent()) { if (data.getMusicDataContentType() == MxlMusicDataContentType.Attributes) { //check type MxlAttributes attr = (MxlAttributes) data; MxlNormalTime mxlTime = (MxlNormalTime) attr.getTime().getContent(); TimeType expectedTime = expectedTimes[iTime++]; assertEquals("time " + iTime, expectedTime.getNumerator(), mxlTime.getBeats()); assertEquals("time " + iTime, expectedTime.getDenominator(), mxlTime.getBeatType()); if (i == 0) assertEquals("time " + iTime, MxlTimeSymbol.Common, attr.getTime().getSymbol()); //TODO: bug in MusicXML file, should be "Cut" else if (i == 1) assertEquals("time " + iTime, MxlTimeSymbol.Common, attr.getTime().getSymbol()); else assertNull("time " + iTime, attr.getTime().getSymbol()); //= Normal break; //no more time signature in this measure } } } assertEquals("not all times found", expectedTimes.length, iTime); } }