mosstest/tests/net/mosstest/tests/NodePositionTest.java

149 lines
7.3 KiB
Java

package net.mosstest.tests;
import net.mosstest.scripting.NodePosition;
import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
import static org.junit.Assert.fail;
public class NodePositionTest {
public static final int CHUNK_DIMENSION = 16;
public static final int[] coords = {0, 1, -1, 16, -16, 67, -66, 269, -267,
65601, -65601, Integer.MAX_VALUE, Integer.MIN_VALUE};
@Test
public void testHashCode() {
for (int i = 0; i < coords.length; i++) {
for (int j = 0; j < coords.length; j++) {
for (int k = 0; k < coords.length; k++) {
for (byte x = 0; x < CHUNK_DIMENSION; x += 8) {
for (byte y = 0; y < CHUNK_DIMENSION; y += 8) {
for (byte z = 0; z < CHUNK_DIMENSION; z += 8) {
NodePosition pos1 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
NodePosition pos2 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
Assert.assertEquals(
"Mismatched hashCodes for value-identical NodePosition objects",
pos1.hashCode(), pos2.hashCode());
}
}
}
}
}
}
}
@Test
public void testByteArrayReadWrite() {
for (int i = 0; i < coords.length; i++) {
for (int j = 0; i < coords.length; i++) {
for (int k = 0; i < coords.length; i++) {
for (byte x = 0; x < CHUNK_DIMENSION; x+=8) {
for (byte y = 0; y < CHUNK_DIMENSION; y+=8) {
for (byte z = 0; z < CHUNK_DIMENSION; z+=4) {
NodePosition pos1 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
byte[] bytes = pos1.toBytes();
NodePosition pos2;
try {
pos2 = new NodePosition(bytes);
Assert.assertTrue(
"NodePosition nmarshaled from byte[] fails equals() check with original NodePosition.",
pos1.equals(pos2));
} catch (IOException e) {
fail("IOException caught in unmarshaling NodePosition from byte[]");
}
}
}
}
}
}
}
}
@Test
public void testEqualsObject() {
for (int i = 0; i < coords.length; i++) {
for (int j = 0; j < coords.length; j++) {
for (int k = 0; k < coords.length; k++) {
for (byte x = 0; x < CHUNK_DIMENSION; x+=8) {
for (byte y = 0; y < CHUNK_DIMENSION; y+=8) {
for (byte z = 0; z < CHUNK_DIMENSION; z+=4) {
NodePosition pos1 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
NodePosition pos2 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
Assert.assertTrue(
"Value-equal objects fail equals() check",
pos1.equals(pos2));
Assert.assertTrue(
"Value-equal objects fail equals() check",
pos2.equals(pos1));
NodePosition pos3 = new NodePosition(
0, coords[i] + 1, coords[j], coords[k],
x, y, z);
NodePosition pos4 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
Assert.assertFalse(
"Value-unequal objects erroneously pass equals() check for x",
pos3.equals(pos4));
Assert.assertFalse(
"Value-unequal objects erroneously pass equals() check for x",
pos4.equals(pos3));
NodePosition pos5 = new NodePosition(0, coords[i],
coords[j] + 1, coords[k], x, y, z);
NodePosition pos6 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
Assert.assertFalse(
"Value-unequal objects erroneously pass equals() check for y",
pos5.equals(pos6));
Assert.assertFalse(
"Value-unequal objects erroneously pass equals() check for y",
pos6.equals(pos5));
NodePosition pos7 = new NodePosition(0, coords[i],
coords[j], coords[k] + 1, x, y, z);
NodePosition pos8 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, z);
Assert.assertFalse(
"Value-unequal objects erroneously pass equals() check for z",
pos7.equals(pos8));
Assert.assertFalse(
"Value-unequal objects erroneously pass equals() check for z",
pos8.equals(pos7));
}
}
}
}
}
}
}
@Test
public void testToBytes() {
for (int i = 0; i < coords.length; i++) {
for (int j = 0; j < coords.length; j++) {
for (int k = 0; k < coords.length; k++) {
for (byte x = 0; x < CHUNK_DIMENSION; x+=4) {
for (byte y = 0; y < CHUNK_DIMENSION; y+=8) {
NodePosition pos1 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, (byte)0);
NodePosition pos2 = new NodePosition(0, coords[i],
coords[j], coords[k], x, y, (byte)0);
org.junit.Assert.assertArrayEquals(
pos1.toBytes(), pos2.toBytes());
}
}
}
}
}
}
}