package de.lessvoid.nifty.render.image.areaprovider;
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 static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import org.junit.Test;
import de.lessvoid.nifty.Size;
import de.lessvoid.nifty.layout.Box;
import de.lessvoid.nifty.render.NiftyImage;
import de.lessvoid.nifty.spi.render.RenderImage;
public class CachedAreaProviderTest {
@Test
public void testGetSourceAreaReturnsSameAreaAsCachedProvider() {
RenderImage image = createMock(RenderImage.class);
AreaProvider areaProvider = createMock(AreaProvider.class);
expect(areaProvider.getSourceArea(image)).andReturn(new Box(1, 2, 3, 4)).anyTimes();
replay(areaProvider);
CachedAreaProvider cachedAreaProvider = new CachedAreaProvider(areaProvider);
assertEquals(cachedAreaProvider.getSourceArea(image), areaProvider.getSourceArea(image));
verify(areaProvider);
}
@Test
public void testGetSourceAreaCachesReturnedValueForASingleImage() {
RenderImage image = createMock(RenderImage.class);
AreaProvider areaProvider = createMock(AreaProvider.class);
expect(areaProvider.getSourceArea(image)).andReturn(new Box(1, 2, 3, 4));
replay(areaProvider);
CachedAreaProvider cachedAreaProvider = new CachedAreaProvider(areaProvider);
assertSame(cachedAreaProvider.getSourceArea(image), cachedAreaProvider.getSourceArea(image));
verify(areaProvider);
}
@Test
public void testGetSourceAreaInvalidatesCachedAreaForADifferentImage() {
RenderImage firstImage = createMock(RenderImage.class);
RenderImage secondImage = createMock(RenderImage.class);
AreaProvider areaProvider = createMock(AreaProvider.class);
expect(areaProvider.getSourceArea(firstImage)).andReturn(new Box(1, 2, 3, 4));
expect(areaProvider.getSourceArea(secondImage)).andReturn(new Box(1, 2, 3, 4));
replay(areaProvider);
CachedAreaProvider cachedAreaProvider = new CachedAreaProvider(areaProvider);
assertNotSame(cachedAreaProvider.getSourceArea(firstImage), cachedAreaProvider.getSourceArea(secondImage));
verify(areaProvider);
}
@Test
public void testSetParametersInvalidatesCachedArea() {
RenderImage image = createMock(RenderImage.class);
AreaProvider areaProvider = createMock(AreaProvider.class);
CachedAreaProvider cachedAreaProvider = new CachedAreaProvider(areaProvider);
expect(areaProvider.getSourceArea(image)).andReturn(new Box(1, 2, 3, 4));
expect(areaProvider.getSourceArea(image)).andReturn(new Box(1, 2, 3, 4));
replay(areaProvider);
Box firstArea = cachedAreaProvider.getSourceArea(image);
cachedAreaProvider.setParameters(null);
Box secondArea = cachedAreaProvider.getSourceArea(image);
assertNotSame(firstArea, secondArea);
verify(areaProvider);
}
@Test
public void testGetNativeSizeReturnsReturnsSameSizeAsCachedProvider() {
NiftyImage image = createMock(NiftyImage.class);
AreaProvider areaProvider = createMock(AreaProvider.class);
expect(areaProvider.getNativeSize(image)).andReturn(new Size(1, 2)).anyTimes();
replay(areaProvider);
CachedAreaProvider cachedAreaProvider = new CachedAreaProvider(areaProvider);
assertEquals(cachedAreaProvider.getNativeSize(image), areaProvider.getNativeSize(image));
verify(areaProvider);
}
}