package com.xenoage.zong.core.music.group;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Tests for {@link StavesRange}.
*
* @author Andreas Wenger
*/
public class StavesRangeTest {
@Test public void insertTest() {
StavesRange r;
//insert before
r = new StavesRange(5, 10);
r.insert(4, 10);
assertEquals(new StavesRange(15, 20), r);
//insert within
r = new StavesRange(5, 10);
r.insert(5, 10);
assertEquals(new StavesRange(5, 20), r);
//insert within
r = new StavesRange(5, 10);
r.insert(10, 10);
assertEquals(new StavesRange(5, 20), r);
//insert after
r = new StavesRange(5, 10);
r.insert(11, 10);
assertEquals(new StavesRange(5, 10), r);
}
@Test public void removeTest() {
StavesRange r;
//remove completely
r = new StavesRange(5, 10);
assertTrue(r.remove(5, 6));
//remove completely
r = new StavesRange(5, 10);
assertTrue(r.remove(4, 7));
//remove completely
r = new StavesRange(5, 10);
assertTrue(r.remove(5, 7));
//remove completely
r = new StavesRange(5, 10);
assertTrue(r.remove(4, 8));
//remove before
r = new StavesRange(5, 10);
assertFalse(r.remove(2, 2));
assertEquals(new StavesRange(3, 8), r);
//remove around start
r = new StavesRange(5, 10);
assertFalse(r.remove(2, 4));
assertEquals(new StavesRange(2, 5), r);
//remove within
r = new StavesRange(5, 10);
assertFalse(r.remove(5, 5));
assertEquals(new StavesRange(5, 5), r);
//remove within
r = new StavesRange(5, 10);
assertFalse(r.remove(6, 5));
assertEquals(new StavesRange(5, 5), r);
//remove around end
r = new StavesRange(5, 10);
assertFalse(r.remove(8, 4));
assertEquals(new StavesRange(5, 7), r);
//remove after
r = new StavesRange(5, 10);
assertFalse(r.remove(11, 4));
assertEquals(new StavesRange(5, 10), r);
}
}