app/src/androidTest/java/puscas/mobilertapp/engine/AcceleratorTest.java
package puscas.mobilertapp.engine;
import org.junit.Test;
import java.util.concurrent.TimeoutException;
import puscas.mobilertapp.AbstractTest;
import puscas.mobilertapp.ConstantsAndroidTests;
import puscas.mobilertapp.MainActivity;
import puscas.mobilertapp.constants.Accelerator;
import puscas.mobilertapp.constants.Scene;
import puscas.mobilertapp.constants.Shader;
/**
* The test suite for the {@link Accelerator}s used in {@link MainActivity}.
*/
public final class AcceleratorTest extends AbstractTest {
/**
* Tests rendering a scene without any {@link Accelerator}.
* It shouldn't render anything and be just a black image.
*
* @throws TimeoutException If it couldn't render the whole scene in time.
*/
@Test
public void testRenderSceneWithoutAccelerator() throws TimeoutException {
assertRenderScene(Scene.CORNELL, Shader.WHITTED, Accelerator.NONE, 1, 1, false, true);
}
/**
* Tests rendering a scene with the {@link Accelerator#NAIVE} accelerator.
*
* @throws TimeoutException If it couldn't render the whole scene in time.
*/
@Test
public void testRenderSceneWithNaive() throws TimeoutException {
mockFileManagerReply(false,
ConstantsAndroidTests.CORNELL_BOX_WATER_OBJ,
ConstantsAndroidTests.CORNELL_BOX_WATER_MTL,
ConstantsAndroidTests.CORNELL_BOX_WATER_CAM
);
assertRenderScene(Scene.OBJ, Shader.WHITTED, Accelerator.NAIVE, 1, 1, false, false);
}
/**
* Tests rendering a scene with the {@link Accelerator#REG_GRID} accelerator.
*
* @throws TimeoutException If it couldn't render the whole scene in time.
*/
@Test
public void testRenderSceneWithRegularGrid() throws TimeoutException {
mockFileManagerReply(false,
ConstantsAndroidTests.CORNELL_BOX_WATER_OBJ,
ConstantsAndroidTests.CORNELL_BOX_WATER_MTL,
ConstantsAndroidTests.CORNELL_BOX_WATER_CAM
);
assertRenderScene(Scene.OBJ, Shader.WHITTED, Accelerator.REG_GRID, 1, 1, false, false);
}
/**
* Tests rendering a scene with the {@link Accelerator#BVH} accelerator.
*
* @throws TimeoutException If it couldn't render the whole scene in time.
*/
@Test
public void testRenderSceneWithBVH() throws TimeoutException {
mockFileManagerReply(false,
ConstantsAndroidTests.CORNELL_BOX_WATER_OBJ,
ConstantsAndroidTests.CORNELL_BOX_WATER_MTL,
ConstantsAndroidTests.CORNELL_BOX_WATER_CAM
);
assertRenderScene(Scene.OBJ, Shader.WHITTED, Accelerator.BVH, 1, 1, false, false);
}
}