Added unit test for J3MLoader to cover the new texture parameters available in #295. Also fixed a couple of issues in the code to reduce logging that was not needed and removed redundant code. This update also updates junit to 4.12 and adds Mockito and Fest Assertions as test dependencies.
parent
be692a2ceb
commit
d319a7c5d3
@ -0,0 +1,117 @@ |
|||||||
|
package com.jme3.material.plugins; |
||||||
|
|
||||||
|
import com.jme3.asset.AssetInfo; |
||||||
|
import com.jme3.asset.AssetKey; |
||||||
|
import com.jme3.asset.AssetManager; |
||||||
|
import com.jme3.asset.TextureKey; |
||||||
|
import com.jme3.material.MatParamTexture; |
||||||
|
import com.jme3.material.Material; |
||||||
|
import com.jme3.material.MaterialDef; |
||||||
|
import com.jme3.shader.VarType; |
||||||
|
import com.jme3.texture.Texture; |
||||||
|
import org.junit.Before; |
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.Mockito; |
||||||
|
import org.mockito.runners.MockitoJUnitRunner; |
||||||
|
|
||||||
|
import static org.mockito.Matchers.any; |
||||||
|
import static org.mockito.Mockito.verify; |
||||||
|
import static org.mockito.Mockito.when; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Daniel Johansson |
||||||
|
* @since 2015-07-20 |
||||||
|
*/ |
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class J3MLoaderTest { |
||||||
|
|
||||||
|
private J3MLoader j3MLoader; |
||||||
|
|
||||||
|
@Mock |
||||||
|
private AssetInfo assetInfo; |
||||||
|
|
||||||
|
@Mock |
||||||
|
private AssetManager assetManager; |
||||||
|
|
||||||
|
@Mock |
||||||
|
private AssetKey<Material> assetKey; |
||||||
|
|
||||||
|
@Mock |
||||||
|
private MaterialDef materialDef; |
||||||
|
|
||||||
|
@Before |
||||||
|
public void setUp() throws Exception { |
||||||
|
when(assetKey.getExtension()).thenReturn(".j3m"); |
||||||
|
when(assetInfo.getManager()).thenReturn(assetManager); |
||||||
|
when(assetInfo.getKey()).thenReturn(assetKey); |
||||||
|
when(assetManager.loadAsset(any(AssetKey.class))).thenReturn(materialDef); |
||||||
|
|
||||||
|
j3MLoader = new J3MLoader(); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void oldStyleTextureParameters_shouldBeSupported() throws Exception { |
||||||
|
when(assetInfo.openStream()).thenReturn(J3MLoader.class.getResourceAsStream("/texture-parameters-oldstyle.j3m")); |
||||||
|
|
||||||
|
final Texture textureOldStyle = Mockito.mock(Texture.class); |
||||||
|
final Texture textureOldStyleUsingQuotes = Mockito.mock(Texture.class); |
||||||
|
|
||||||
|
final TextureKey textureKeyUsingQuotes = setupMockForTexture("OldStyleUsingQuotes", "old style using quotes/texture.png", true, textureOldStyleUsingQuotes); |
||||||
|
final TextureKey textureKeyOldStyle = setupMockForTexture("OldStyle", "old style/texture.png", true, textureOldStyle); |
||||||
|
|
||||||
|
j3MLoader.load(assetInfo); |
||||||
|
|
||||||
|
verify(assetManager).loadTexture(textureKeyUsingQuotes); |
||||||
|
verify(assetManager).loadTexture(textureKeyOldStyle); |
||||||
|
verify(textureOldStyle).setWrap(Texture.WrapMode.Repeat); |
||||||
|
verify(textureOldStyleUsingQuotes).setWrap(Texture.WrapMode.Repeat); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void newStyleTextureParameters_shouldBeSupported() throws Exception { |
||||||
|
when(assetInfo.openStream()).thenReturn(J3MLoader.class.getResourceAsStream("/texture-parameters-newstyle.j3m")); |
||||||
|
|
||||||
|
final Texture textureNoParameters = Mockito.mock(Texture.class); |
||||||
|
final Texture textureFlip = Mockito.mock(Texture.class); |
||||||
|
final Texture textureRepeat = Mockito.mock(Texture.class); |
||||||
|
final Texture textureRepeatAxis = Mockito.mock(Texture.class); |
||||||
|
final Texture textureMin = Mockito.mock(Texture.class); |
||||||
|
final Texture textureMag = Mockito.mock(Texture.class); |
||||||
|
final Texture textureCombined = Mockito.mock(Texture.class); |
||||||
|
|
||||||
|
final TextureKey textureKeyNoParameters = setupMockForTexture("Empty", "empty.png", false, textureNoParameters); |
||||||
|
final TextureKey textureKeyFlip = setupMockForTexture("Flip", "flip.png", true, textureFlip); |
||||||
|
setupMockForTexture("Repeat", "repeat.png", false, textureRepeat); |
||||||
|
setupMockForTexture("RepeatAxis", "repeat-axis.png", false, textureRepeatAxis); |
||||||
|
setupMockForTexture("Min", "min.png", false, textureMin); |
||||||
|
setupMockForTexture("Mag", "mag.png", false, textureMag); |
||||||
|
setupMockForTexture("Combined", "combined.png", true, textureCombined); |
||||||
|
|
||||||
|
j3MLoader.load(assetInfo); |
||||||
|
|
||||||
|
verify(assetManager).loadTexture(textureKeyNoParameters); |
||||||
|
verify(assetManager).loadTexture(textureKeyFlip); |
||||||
|
|
||||||
|
verify(textureRepeat).setWrap(Texture.WrapMode.Repeat); |
||||||
|
verify(textureRepeatAxis).setWrap(Texture.WrapAxis.T, Texture.WrapMode.Repeat); |
||||||
|
verify(textureMin).setMinFilter(Texture.MinFilter.Trilinear); |
||||||
|
verify(textureMag).setMagFilter(Texture.MagFilter.Bilinear); |
||||||
|
|
||||||
|
verify(textureCombined).setMagFilter(Texture.MagFilter.Nearest); |
||||||
|
verify(textureCombined).setMinFilter(Texture.MinFilter.BilinearNoMipMaps); |
||||||
|
verify(textureCombined).setWrap(Texture.WrapMode.Repeat); |
||||||
|
} |
||||||
|
|
||||||
|
private TextureKey setupMockForTexture(final String paramName, final String path, final boolean flipY, final Texture texture) { |
||||||
|
when(materialDef.getMaterialParam(paramName)).thenReturn(new MatParamTexture(VarType.Texture2D, paramName, texture, 0, null)); |
||||||
|
|
||||||
|
final TextureKey textureKey = new TextureKey(path, flipY); |
||||||
|
textureKey.setGenerateMips(true); |
||||||
|
|
||||||
|
when(assetManager.loadTexture(textureKey)).thenReturn(texture); |
||||||
|
|
||||||
|
return textureKey; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
Material Test : matdef.j3md { |
||||||
|
MaterialParameters { |
||||||
|
Empty: "empty.png" |
||||||
|
Flip: Flip "flip.png" |
||||||
|
Repeat: WrapRepeat "repeat.png" |
||||||
|
Min: MinTrilinear "min.png" |
||||||
|
Mag: MagBilinear "mag.png" |
||||||
|
RepeatAxis: WrapRepeat_T "repeat-axis.png" |
||||||
|
Combined: MagNearest MinBilinearNoMipMaps Flip WrapRepeat "combined.png" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,6 @@ |
|||||||
|
Material Test : matdef.j3md { |
||||||
|
MaterialParameters { |
||||||
|
OldStyle: Flip Repeat old style/texture.png |
||||||
|
OldStyleUsingQuotes: Repeat Flip "old style using quotes/texture.png" |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue