package org.iplantc.phyloviewer.shared.render;
import org.iplantc.phyloviewer.shared.math.Matrix33;
import org.iplantc.phyloviewer.shared.math.Vector2;
import org.junit.Test;
import junit.framework.TestCase;
public class TestViewport extends TestCase
{
double delta = 10E-14;
private Viewport createViewport(int x, int y, int width, int height)
{
Viewport viewport = new Viewport();
viewport.setX(x);
viewport.setY(y);
viewport.setWidth(width);
viewport.setHeight(height);
return viewport;
}
@Test
public void testCreateViewport()
{
int x = 0;
int y = 0;
int width = 100;
int height = 200;
Viewport viewport = createViewport(x, y, width, height);
assertEquals(x, viewport.getX());
assertEquals(y, viewport.getY());
assertEquals(width, viewport.getWidth());
assertEquals(height, viewport.getHeight());
}
@Test
public void testComputeWindowMatrix()
{
int x = 0;
int y = 0;
int width = 100;
int height = 200;
Viewport viewport = createViewport(x, y, width, height);
Matrix33 windowMatrix = viewport.computeWindowMatrix();
Vector2 v0 = new Vector2(-1, -1);
Vector2 v1 = new Vector2(1, 1);
v0 = windowMatrix.transform(v0);
v1 = windowMatrix.transform(v1);
assertEquals(x, v0.getX(), delta);
assertEquals(y, v0.getY(), delta);
assertEquals(width, v1.getX(), delta);
assertEquals(height, v1.getY(), delta);
}
@Test
public void testComputeWindowMatrix_nonZeroXAndY()
{
int x = 10;
int y = 20;
int width = 100;
int height = 200;
Viewport viewport = createViewport(x, y, width, height);
Matrix33 windowMatrix = viewport.computeWindowMatrix();
Vector2 v0 = new Vector2(-1, -1);
Vector2 v1 = new Vector2(1, 1);
v0 = windowMatrix.transform(v0);
v1 = windowMatrix.transform(v1);
assertEquals(x, v0.getX(), delta);
assertEquals(y, v0.getY(), delta);
assertEquals(width + x, v1.getX(), delta);
assertEquals(height + y, v1.getY(), delta);
}
}