package musicxmltestsuite.tests.musicxml;
import static com.xenoage.utils.jse.JsePlatformUtils.jsePlatformUtils;
import musicxmltestsuite.tests.base.Base;
import org.junit.Assert;
import com.xenoage.zong.musicxml.MusicXMLDocument;
import com.xenoage.zong.musicxml.types.MxlScorePartwise;
import com.xenoage.zong.musicxml.types.partwise.MxlMeasure;
import com.xenoage.zong.musicxml.types.partwise.MxlPart;
/**
* Base class for testing the loading of MusicXML files into
* MusicXML data structures ("musicxml" project).
*
* @author Andreas Wenger
*/
public interface MusicXmlTest
extends Base {
@Override default String getProjectName() {
return "musicxml";
}
default MusicXMLDocument getDoc() {
Base base = (Base) this;
try {
return MusicXMLDocument.read(jsePlatformUtils().createXmlReader(
jsePlatformUtils().openFile(Base.dirPath + base.getFileName())));
} catch (Exception ex) {
ex.printStackTrace();
Assert.fail("Could not load " + base.getFileName() + ": " + ex.toString());
return null;
}
}
default MxlScorePartwise getScore() {
return getDoc().getScore();
}
default MxlPart getFirstPart() {
return getDoc().getScore().getParts().get(0);
}
default MxlMeasure getFirstMeasure() {
return getDoc().getScore().getParts().get(0).getMeasures().get(0);
}
}