package tests;
import gl.Color;
public class GlTests extends SimpleTesting {
@Override
public void run() throws Exception {
testColorEquality();
}
/**
* Checks that {@link Color#equals} behaves correctly.
*
* @throws Exception
*/
private void testColorEquality() throws Exception {
Color colorOne, colorTwo;
// Basic equality tests
colorOne = new Color(0.6f, 0.2f, 0.1f, 0f);
colorTwo = new Color(0.6f, 0.2f, 0.1f, 0f);
assertEquals(colorOne, colorTwo);
assertEquals(colorOne.hashCode(), colorTwo.hashCode());
colorTwo = colorOne;
assertEquals(colorOne, colorTwo);
assertEquals(colorOne.hashCode(), colorTwo.hashCode());
assertEquals(colorOne, colorOne.copy());
assertFalse(colorOne.equals(null));
assertFalse(colorOne.equals(new Object()));
// Check that floating point arithmetics do not affect equals
colorOne = new Color(0.3f, 0.3f, 0.3f, 0f);
colorTwo = new Color(0.2f + 0.1f, 0.6f / 2f, 38.4348f / 128.128f, 0f);
assertFalse(0.3f == 38.4348f / 128.128f);
assertEquals(colorOne, colorTwo);
assertEquals(colorOne.hashCode(), colorTwo.hashCode());
// Check that the same colors constructed in different ways are equal
// TODO: These tests are currently failing because apparently floating
// point arithmetic is not precise enough.
// assertEquals(0xFF80FF40, new Color(0xFF80FF40).toIntARGB());
//
// colorOne = new Color(0.5f, 1f, 0.25f, 1f);
// colorTwo = new Color("#FF80FF40");
//
// assertEquals(colorOne, colorTwo);
// assertEquals(colorOne.hashCode(), colorTwo.hashCode());
// colorOne = new Color(0.5f, 1f, 0.25f, 1f);
// colorTwo = new Color(android.graphics.Color.argb(255, 128, 64, 255));
//
// assertEquals(colorOne, colorTwo);
// assertEquals(colorOne.hashCode(), colorTwo.hashCode());
}
}