package com.xenoage.zong.core.position; import com.xenoage.zong.core.Score; import org.junit.Test; import static com.xenoage.utils.kernel.Range.range; import static com.xenoage.utils.math.Fraction.fr; import static com.xenoage.zong.core.position.MP.atBeat; import static com.xenoage.zong.core.position.MP.atElement; import static org.junit.Assert.*; /** * Tests for {@link Score}. * * @author Andreas Wenger */ public class MPTest { @Test public void compareTimeToTest() { int otherStaff = 1; int otherVoice = 1; //test: earlier, equal time, later for (int test : new int[]{-1, 0, 1}) { //equal time (with beats) String msg = "First MP should be " + new String[]{"earlier", "equal", "later"}[test+1]; for (int m : range(0, 2)) { //measure for (int b : range(1, 2)) { //beat assertEquals(msg, test, atBeat(0, m, 0, fr(b + test, 4)).compareTimeTo(atBeat(0, m, 0, fr(b, 4)))); assertEquals(msg, test, atBeat(otherStaff, m, 0, fr(b + test, 4)).compareTimeTo(atBeat(0, m, 0, fr(b, 4)))); assertEquals(msg, test, atBeat(0, m, 0, fr(b + test, 4)).compareTimeTo(atBeat(0, m, otherVoice, fr(b, 4)))); } } //equal time (with element index) for (int m : range(0, 2)) { //measure for (int i : range(1, 2)) { //element index assertEquals(msg, test, atElement(0, m, 0, i + test).compareTimeTo(atElement(0, m, 0, i))); assertEquals(msg, test, atElement(otherStaff, m, 0, i + test).compareTimeTo(atElement(0, m, 0, i))); assertEquals(msg, test, atElement(0, m, 0, i + test).compareTimeTo(atElement(0, m, otherVoice, i))); } } } } }