package de.lessvoid.nifty.controls.scrollbar;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Test the ScrollbarImpl.
*
* @author void
*/
public class ScrollbarImplTest {
private ScrollbarImpl scrollbar = new ScrollbarImpl();
private ScrollbarView view;
private float viewSize = 4.f;
@Before
public void before() {
view = createMock(ScrollbarView.class);
expect(view.getAreaSize()).andReturn(4).anyTimes();
expect(view.getMinHandleSize()).andReturn(1).anyTimes();
}
@After
public void after() {
verify(view);
}
@Test
public void testNoEntries() {
view.setHandle(0, 4);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
assertEquals(0.f, scrollbar.getValue());
}
@Test
public void testMaxEqualView() {
view.setHandle(0, 4);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
}
@Test
public void testMaxDoubleView() {
view.setHandle(0, 2);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 0.f, 8.f, viewSize, 1.f, 4.f);
}
@Test
public void testMaxView() {
view.setHandle(0, 1);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 0.f, 16.f, viewSize, 1.f, 4.f);
}
@Test
public void testCurrentValueTooBigValue() {
view.setHandle(0, 4);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 1.f, 4.f, viewSize, 1.f, 4.f);
}
@Test
public void testCurrentValueMaximumValue() {
view.setHandle(0, 4);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 4.f, 4.f, viewSize, 1.f, 4.f);
}
@Test
public void testMovingCurrentValue() {
view.setHandle(2, 1);
view.valueChanged(8.f);
replay(view);
scrollbar.bindToView(view, 8.f, 16.f, viewSize, 1.f, 4.f);
}
@Test
public void testStepUp() {
view.setHandle(0, 2);
view.valueChanged(0.f);
view.setHandle(1, 2);
view.valueChanged(2.f);
replay(view);
scrollbar.bindToView(view, 0.f, 8.f, viewSize, 2.f, 4.f);
scrollbar.stepUp();
}
@Test
public void testStepUpLimit() {
view.setHandle(2, 2);
view.valueChanged(4.f);
view.setHandle(2, 2);
replay(view);
scrollbar.bindToView(view, 8.f, 8.f, viewSize, 1.f, 4.f);
scrollbar.stepUp();
}
@Test
public void testStepDownLimit() {
view.setHandle(0, 2);
view.valueChanged(0.f);
view.setHandle(0, 2);
replay(view);
scrollbar.bindToView(view, 0.f, 8.f, viewSize, 2.f, 4.f);
scrollbar.stepDown();
}
@Test
public void testStepDown() {
view.setHandle(2, 2);
view.valueChanged(4.f);
view.setHandle(1, 2);
view.valueChanged(2.f);
replay(view);
scrollbar.bindToView(view, 4.f, 8.f, viewSize, 2.f, 4.f);
scrollbar.stepDown();
}
@Test
public void testPageUp() {
view.setHandle(0, 2);
view.valueChanged(0.f);
view.setHandle(2, 2);
view.valueChanged(4.f);
replay(view);
scrollbar.bindToView(view, 0.f, 8.f, viewSize, 2.f, 4.f);
scrollbar.stepPageUp();
}
@Test
public void testPageUpLimit() {
view.setHandle(2, 2);
view.valueChanged(4.f);
view.setHandle(2, 2);
replay(view);
scrollbar.bindToView(view, 8.f, 8.f, viewSize, 1.f, 4.f);
scrollbar.stepPageUp();
}
@Test
public void testPageDownLimit() {
view.setHandle(0, 2);
view.valueChanged(0.f);
view.setHandle(0, 2);
replay(view);
scrollbar.bindToView(view, 0.f, 8.f, viewSize, 2.f, 4.f);
scrollbar.stepPageDown();
}
@Test
public void testPageDown() {
view.setHandle(2, 2);
view.valueChanged(4.f);
view.setHandle(0, 2);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 4.f, 8.f, viewSize, 2.f, 4.f);
scrollbar.stepPageDown();
}
@Test
public void testSetValue() {
view.setHandle(0, 4);
view.valueChanged(0.f);
view.setHandle(0, 4);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
scrollbar.setValue(4.f);
assertEquals(0.f, scrollbar.getValue());
}
@Test
public void testSetValueMinLimit() {
view.setHandle(0, 4);
view.valueChanged(0.f);
view.setHandle(0, 4);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
scrollbar.setValue(-4.f);
assertEquals(0.f, scrollbar.getValue());
}
@Test
public void testSetValueMaxLimit() {
view.setHandle(0, 4);
view.valueChanged(0.f);
view.setHandle(0, 4);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
scrollbar.setValue(40.f);
assertEquals(0.f, scrollbar.getValue());
}
@Test
public void testSetup() {
view.setHandle(0, 4);
view.valueChanged(0.f);
view.setHandle(2, 2);
view.valueChanged(4.f);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
scrollbar.setup(4.f, 8.f, viewSize, 2.f, 4.f);
assertEquals(2.f, scrollbar.getButtonStepSize());
assertEquals(4.f, scrollbar.getValue());
assertEquals(4.f, scrollbar.getPageStepSize());
}
@Test
public void testSetMax() {
view.setHandle(0, 4);
view.valueChanged(0.f);
view.setHandle(0, 2);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
scrollbar.setWorldMax(8.f);
assertEquals(8.f, scrollbar.getWorldMax());
}
@Test
public void testSetPageStepSize() {
replay(view);
scrollbar.setPageStepSize(12.f);
assertEquals(12.f, scrollbar.getPageStepSize());
}
@Test
public void testInteractionCantMove() {
view.setHandle(0, 4);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 0.f, 4.f, viewSize, 1.f, 4.f);
scrollbar.interactionClick(3);
}
@Test
public void testPageDownInteractionClick() {
view.setHandle(0, 2);
view.valueChanged(0);
view.setHandle(2, 2);
view.valueChanged(4);
replay(view);
scrollbar.bindToView(view, 0.f, 8.f, viewSize, 1.f, 4.f);
scrollbar.interactionClick(3);
}
@Test
public void testPageUpInteractionClick() {
view.setHandle(2, 2);
view.valueChanged(4.f);
view.setHandle(0, 2);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 4.f, 8.f, viewSize, 1.f, 4.f);
scrollbar.interactionClick(1);
}
@Test
public void testMoveHandle() {
view.setHandle(2, 2);
view.valueChanged(4.f);
view.setHandle(0, 2);
view.valueChanged(0.f);
replay(view);
scrollbar.bindToView(view, 4.f, 8.f, viewSize, 1.f, 4.f);
scrollbar.interactionClick(3);
scrollbar.interactionMove(0);
}
}