Add FontCacheImplTest
This commit is contained in:
parent
52e0ecd6f6
commit
4800f7720a
1 changed files with 74 additions and 0 deletions
|
@ -0,0 +1,74 @@
|
|||
package net.kemitix.fontface;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class FontCacheImplTest {
|
||||
|
||||
private final URI fontLocation = new File("font.otf").toURI();
|
||||
private final String colour = "colour";
|
||||
@Mock
|
||||
private FontLoader fontLoader;
|
||||
@Mock
|
||||
private Font loadedFont;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
given(fontLoader.loadFont(any())).willReturn(loadedFont);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("When cache is empty then load font")
|
||||
public void emptyCache() {
|
||||
//given
|
||||
final FontCacheImpl fontCache = new FontCacheImpl(fontLoader);
|
||||
final FontFace fontFace = FontFace.of(fontLocation, 26, colour);
|
||||
//when
|
||||
fontCache.loadFont(fontFace);
|
||||
//then
|
||||
verify(fontLoader).loadFont(fontFace);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("When cache has font, but not size, then don't reload font")
|
||||
public void notInSize() {
|
||||
//given
|
||||
final FontCacheImpl fontCache = new FontCacheImpl(fontLoader);
|
||||
final FontFace previousFontFace = FontFace.of(fontLocation, 16, colour);
|
||||
fontCache.loadFont(previousFontFace);
|
||||
final FontFace fontFace = FontFace.of(fontLocation, 26, colour);
|
||||
//when
|
||||
fontCache.loadFont(fontFace);
|
||||
//then
|
||||
verify(fontLoader, times(1)).loadFont(previousFontFace);
|
||||
verifyNoMoreInteractions(fontLoader);
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("When cache has font in size, then don't load font")
|
||||
public void available() {
|
||||
//given
|
||||
final FontCacheImpl fontCache = new FontCacheImpl(fontLoader);
|
||||
final FontFace fontFace = FontFace.of(fontLocation, 26, colour);
|
||||
//when
|
||||
fontCache.loadFont(fontFace);
|
||||
fontCache.loadFont(fontFace);
|
||||
//then
|
||||
verify(fontLoader, times(1)).loadFont(fontFace);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue