доблены тесты для сравнения Location's
This commit is contained in:
@@ -8,6 +8,8 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import mc.core.world.World;
|
import mc.core.world.World;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class EntityLocation extends Location implements Cloneable {
|
public class EntityLocation extends Location implements Cloneable {
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@@ -31,4 +33,19 @@ public class EntityLocation extends Location implements Cloneable {
|
|||||||
public EntityLocation clone() {
|
public EntityLocation clone() {
|
||||||
return (EntityLocation) super.clone();
|
return (EntityLocation) super.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
if (!super.equals(o)) return false;
|
||||||
|
EntityLocation that = (EntityLocation) o;
|
||||||
|
return Float.compare(that.yaw, yaw) == 0 &&
|
||||||
|
Float.compare(that.pitch, pitch) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(super.hashCode(), yaw, pitch);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import mc.core.world.chunk.ChunkSection;
|
|||||||
|
|
||||||
import java.lang.ref.Reference;
|
import java.lang.ref.Reference;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class Location implements Cloneable {
|
public class Location implements Cloneable {
|
||||||
@Getter
|
@Getter
|
||||||
@@ -88,4 +89,20 @@ public class Location implements Cloneable {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) return true;
|
||||||
|
if (obj == null || getClass() != obj.getClass()) return false;
|
||||||
|
Location location = (Location) obj;
|
||||||
|
return Double.compare(location.x, x) == 0 &&
|
||||||
|
Double.compare(location.y, y) == 0 &&
|
||||||
|
Double.compare(location.z, z) == 0 &&
|
||||||
|
Objects.equals(refWorld.get(), location.refWorld.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(x, y, z, refWorld.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,30 @@
|
|||||||
package mc.core;
|
package mc.core;
|
||||||
|
|
||||||
import mc.core.world.World;
|
import mc.core.world.World;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
import static org.junit.Assert.assertSame;
|
import static org.junit.Assert.assertSame;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
public class TestEntityLocation {
|
public class TestEntityLocation {
|
||||||
|
private World mockWorld;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void before() {
|
||||||
|
mockWorld = mock(World.class);
|
||||||
|
when(mockWorld.getName()).thenReturn("mock_world");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cloneTest() {
|
public void cloneTest() {
|
||||||
World dummyWorld = mock(World.class);
|
EntityLocation firstLocation = new EntityLocation(10, 20, 30, 40, 50, mockWorld);
|
||||||
|
assertSame("Lost world reference before cloning", mockWorld, firstLocation.getWorld());
|
||||||
EntityLocation firstLocation = new EntityLocation(10, 20, 30, 40, 50, dummyWorld);
|
|
||||||
assertSame("Lost world reference before cloning", dummyWorld, firstLocation.getWorld());
|
|
||||||
EntityLocation locationClone = firstLocation.clone();
|
EntityLocation locationClone = firstLocation.clone();
|
||||||
|
|
||||||
assertEquals("X mismatch", firstLocation.getX(), locationClone.getX(), 0);
|
assertEquals("X mismatch", firstLocation.getX(), locationClone.getX(), 0);
|
||||||
@@ -23,4 +34,25 @@ public class TestEntityLocation {
|
|||||||
assertEquals("Yaw mismatch", firstLocation.getYaw(), locationClone.getYaw(), 0);
|
assertEquals("Yaw mismatch", firstLocation.getYaw(), locationClone.getYaw(), 0);
|
||||||
assertSame("World mismatch (accidental clone of the World object?)", firstLocation.getWorld(), locationClone.getWorld());
|
assertSame("World mismatch (accidental clone of the World object?)", firstLocation.getWorld(), locationClone.getWorld());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEquals() {
|
||||||
|
final ThreadLocalRandom rnd = ThreadLocalRandom.current();
|
||||||
|
final double minD = 0.0d, maxD = 10.0d;
|
||||||
|
final float minF = 0.0f, maxF = 359.9f;
|
||||||
|
final double x = rnd.nextDouble(minD, maxD);
|
||||||
|
final double y = rnd.nextDouble(minD, maxD);
|
||||||
|
final double z = rnd.nextDouble(minD, maxD);
|
||||||
|
final float yaw = rnd.nextFloat() * (maxF - minF) + minF;
|
||||||
|
final float pitch = rnd.nextFloat() * (maxF - minF) + minF;
|
||||||
|
|
||||||
|
EntityLocation loc1 = new EntityLocation(x, y, z, yaw, pitch, mockWorld);
|
||||||
|
EntityLocation loc2 = new EntityLocation(x, y, z, yaw, pitch, mockWorld);
|
||||||
|
assertEquals(loc1, loc2);
|
||||||
|
|
||||||
|
loc2 = new EntityLocation(x+3, y+1, z+2, yaw, pitch, mockWorld);
|
||||||
|
assertNotEquals(loc1, loc2);
|
||||||
|
loc2 = new EntityLocation(x, y, z, yaw+5, pitch-1, mockWorld);
|
||||||
|
assertNotEquals(loc1, loc2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,10 @@ import mc.core.world.chunk.Chunk;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
public class TestLocation {
|
public class TestLocation {
|
||||||
@@ -121,4 +124,20 @@ public class TestLocation {
|
|||||||
assertEquals(-2, chunk.getX());
|
assertEquals(-2, chunk.getX());
|
||||||
assertEquals(-2, chunk.getZ());
|
assertEquals(-2, chunk.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEquals() {
|
||||||
|
final ThreadLocalRandom rnd = ThreadLocalRandom.current();
|
||||||
|
final double minD = 0.0d, maxD = 10.0d;
|
||||||
|
final double x = rnd.nextDouble(minD, maxD);
|
||||||
|
final double y = rnd.nextDouble(minD, maxD);
|
||||||
|
final double z = rnd.nextDouble(minD, maxD);
|
||||||
|
|
||||||
|
Location loc1 = new Location(x, y, z, world);
|
||||||
|
Location loc2 = new Location(x, y, z, world);
|
||||||
|
assertEquals(loc1, loc2);
|
||||||
|
|
||||||
|
loc2 = new Location(x+3, y+1, z+2, world);
|
||||||
|
assertNotEquals(loc1, loc2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user