package com.xenoage.zong.io.midi.out.repetitions;
import org.junit.Test;
import java.util.List;
import static com.xenoage.utils.collections.CollectionUtils.alist;
import static com.xenoage.utils.math.Fraction._0;
import static com.xenoage.zong.core.position.Time.time;
import static com.xenoage.zong.io.midi.out.repetitions.Repetitions.mergeRepetitions;
import static org.junit.Assert.*;
/**
* Tests for {@link Repetitions}.
*
* @author Andreas Wenger
*/
public class RepetitionsTest {
@Test public void mergeRepetitionsTest() {
//test two connected ranges
List<Repetition> merged = mergeRepetitions(alist(repetition(0, 4), repetition(4, 8)));
List<Repetition> expected = alist(repetition(0, 8));
assertEquals(expected, merged);
//test two unconnected ranges
merged = mergeRepetitions(alist(repetition(0, 4), repetition(5, 8)));
expected = alist(repetition(0, 4), repetition(5, 8));
assertEquals(expected, merged);
//test longer score
merged = mergeRepetitions(
alist(repetition(0, 4), repetition(3, 5), repetition(5, 7), repetition(3, 4), repetition(4, 8),
repetition(8, 9), repetition(12, 15), repetition(15, 16)));
expected = alist(repetition(0, 4), repetition(3, 7), repetition(3, 9), repetition(12, 16));
assertEquals(expected, merged);
}
public static Repetition repetition(int startMeasure, int endMeasure) {
return new Repetition(time(startMeasure, _0), time(endMeasure, _0));
}
}