package musicxmltestsuite.tests.musicxmlin;
import static com.xenoage.zong.core.music.Pitch.pi;
import static com.xenoage.zong.core.position.MP.atMeasure;
import static org.junit.Assert.assertEquals;
import musicxmltestsuite.tests.base.Base12a;
import org.junit.Test;
import com.xenoage.zong.core.Score;
import com.xenoage.zong.core.music.clef.ClefSymbol;
import com.xenoage.zong.core.music.clef.ClefType;
public class Test12a
implements Base12a, MusicXmlInTest {
@Test public void test() {
Score score = getScore();
//check clefs and line position of c4
int m = 0;
checkClef(score, m++, ClefSymbol.G, 2, -2);
checkClef(score, m++, ClefSymbol.C, 4, 4);
checkClef(score, m++, ClefSymbol.C, 6, 6);
checkClef(score, m++, ClefSymbol.F, 6, 10);
checkClef(score, m++, ClefSymbol.PercTwoRects, 4, -2); //in Zong!, we use Perc = Treble
checkClef(score, m++, ClefSymbol.G8vb, 2, 5);
checkClef(score, m++, ClefSymbol.F8vb, 6, 17);
checkClef(score, m++, ClefSymbol.F, 4, 8);
checkClef(score, m++, ClefSymbol.G, 0, -4);
checkClef(score, m++, ClefSymbol.C, 8, 8);
checkClef(score, m++, ClefSymbol.C, 2, 2);
checkClef(score, m++, ClefSymbol.C, 0, 0);
checkClef(score, m++, ClefSymbol.PercTwoRects, 4, -2); //in Zong!, we use Perc = Treble
checkClef(score, m++, ClefSymbol.G8va, 2, -9);
checkClef(score, m++, ClefSymbol.F8va, 6, 3);
checkClef(score, m++, ClefSymbol.Tab, 4, -2); //in Zong!, we use Tab = Treble
checkClef(score, m++, ClefSymbol.None, 4, -2); //in Zong!, we use None = Treble
checkClef(score, m++, ClefSymbol.G, 2, -2);
}
private void checkClef(Score score, int measure, ClefSymbol expectedSymbol, int expectedClefLP,
int expectedC4LP) {
ClefType clef = score.getMeasure(atMeasure(0, measure)).getClefs().getFirst().getElement().getType();
assertEquals("measure " + measure, expectedSymbol, clef.getSymbol());
assertEquals("measure " + measure, expectedClefLP, clef.getLp());
assertEquals("measure " + measure, expectedC4LP, clef.getLp(pi('C', 0, 4)));
}
}