package com.xenoage.zong.core.music.util;
import org.junit.Test;
import static com.xenoage.utils.math.Fraction.fr;
import static com.xenoage.zong.core.music.util.BeatEList.beatEList;
import static org.junit.Assert.*;
/**
* Test cases for {@link BeatE}.
*
* @author Andreas Wenger
*/
public class BeatEListTest {
@Test public void addTest() {
BeatEList<Integer> list = beatEList();
list.add(50, fr(5));
list.add(30, fr(3));
list.add(20, fr(2));
list.add(40, fr(4));
list.add(31, fr(3));
list.add(32, fr(3));
list.add(80, fr(8));
list.add(60, fr(6));
assertEquals(8, list.getElements().size());
assertEquals(20, (int) list.getElements().get(0).element);
assertEquals(30, (int) list.getElements().get(1).element);
assertEquals(31, (int) list.getElements().get(2).element);
assertEquals(32, (int) list.getElements().get(3).element);
assertEquals(40, (int) list.getElements().get(4).element);
assertEquals(50, (int) list.getElements().get(5).element);
assertEquals(60, (int) list.getElements().get(6).element);
assertEquals(80, (int) list.getElements().get(7).element);
}
@Test public void setTest() {
BeatEList<Integer> list = beatEList();
list.set(50, fr(5));
list.set(30, fr(3));
list.set(20, fr(2));
list.set(40, fr(4));
list.set(31, fr(3));
list.set(32, fr(3));
list.set(80, fr(8));
list.set(60, fr(6));
assertEquals(6, list.getElements().size());
assertEquals(20, (int) list.getElements().get(0).element);
assertEquals(32, (int) list.getElements().get(1).element);
assertEquals(40, (int) list.getElements().get(2).element);
assertEquals(50, (int) list.getElements().get(3).element);
assertEquals(60, (int) list.getElements().get(4).element);
assertEquals(80, (int) list.getElements().get(5).element);
}
@Test public void filterTest() {
BeatEList<Integer> list = beatEList();
list.add(10, fr(1));
list.add(20, fr(2));
list.add(30, fr(3));
list.add(31, fr(3));
list.add(40, fr(4));
//before
BeatEList<Integer> expected = beatEList();
expected.add(10, fr(1));
expected.add(20, fr(2));
BeatEList<Integer> actual = list.filter(Interval.Before, fr(3));
assertEquals(expected, actual);
//at or after
expected = beatEList();
expected.add(30, fr(3));
expected.add(31, fr(3));
expected.add(40, fr(4));
actual = list.filter(Interval.AtOrAfter, fr(3));
assertEquals(expected, actual);
//after
expected = beatEList();
expected.add(40, fr(4));
actual = list.filter(Interval.After, fr(3));
assertEquals(expected, actual);
}
}