package musicxmltestsuite.tests.layout;
import static com.xenoage.utils.jse.JsePlatformUtils.jsePlatformUtils;
import static com.xenoage.zong.musiclayout.layouter.Target.targetA4;
import musicxmltestsuite.tests.base.Base;
import musicxmltestsuite.tests.musicxmlin.MusicXmlInTest;
import org.junit.Assert;
import com.xenoage.zong.desktop.io.musicxml.in.MusicXmlScoreDocFileInput;
import com.xenoage.zong.documents.ScoreDoc;
import com.xenoage.zong.musiclayout.ScoreFrameLayout;
import com.xenoage.zong.musiclayout.ScoreLayout;
import com.xenoage.zong.musiclayout.layouter.ScoreLayouter;
import com.xenoage.zong.musiclayout.layouter.Target;
/**
* Base class for testing the layout of the MusicXML test files
* ("layout" project).
*
* @author Andreas Wenger
*/
public interface LayoutTest
extends MusicXmlInTest {
@Override default String getProjectName() {
return "layout";
}
default ScoreFrameLayout getScoreFrameLayout() {
try {
return getScoreFrameLayoutOrException();
} catch (Exception ex) {
ex.printStackTrace();
Assert.fail("Could not load " + ((Base) this).getFileName() + ": " + ex.toString());
return null;
}
}
default ScoreFrameLayout getScoreFrameLayoutOrException()
throws Exception {
Base base = (Base) this;
String filepath = Base.dirPath + base.getFileName();
ScoreDoc doc = new MusicXmlScoreDocFileInput().read(jsePlatformUtils().openFile(filepath), filepath);
ScoreLayout layout = new ScoreLayouter(doc, targetA4()).createScoreLayout();
return layout.getScoreFrameLayout(0);
}
}