package org.gradoop.common.model.impl.id;
import org.bson.types.ObjectId;
import org.junit.Test;
import java.nio.ByteBuffer;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
public class GradoopIdTest {
@Test
public void testEquals() throws Exception {
GradoopId id1 = GradoopId.get();
GradoopId id2 = GradoopId.get();
GradoopId id3 = id1;
assertTrue(id1.equals(id1));
assertFalse(id1.equals(id2));
assertTrue(id1.equals(id3));
}
@Test
public void testHashCode() throws Exception {
GradoopId id1 = GradoopId.get();
GradoopId id2 = GradoopId.get();
GradoopId id3 = id1;
assertTrue(id1.hashCode() == id1.hashCode());
assertFalse(id1.hashCode() == id2.hashCode());
assertTrue(id1.hashCode() == id3.hashCode());
}
@Test
public void testCompareTo() throws Exception {
GradoopId id1 = GradoopId.get();
GradoopId id2 = GradoopId.get();
assertThat(id1.compareTo(id1), is(0));
assertTrue(id1.compareTo(id2) != 0);
}
@Test
public void testFromString() {
GradoopId originalId = GradoopId.get();
GradoopId fromStringId = GradoopId.fromString(originalId.toString());
assertTrue(
"reconstruction from string failed",
originalId.equals(fromStringId)
);
}
@Test
public void testGetRawBytes() {
GradoopId originalId = GradoopId.get();
assertEquals(GradoopId.ID_SIZE, originalId.toByteArray().length);
assertEquals(
"Reconstruction failed",
originalId,
GradoopId.fromByteArray(originalId.toByteArray())
);
}
@Test
public void testFromBytes() {
ObjectId bsonId = ObjectId.get();
GradoopId expectedId = new GradoopId(bsonId);
byte[] bytes = new byte[GradoopId.ID_SIZE];
ByteBuffer buffer = ByteBuffer.wrap(bytes);
buffer.putInt(bsonId.getTimestamp());
byte b1,b2,b3;
int machineId = bsonId.getMachineIdentifier();
b3 = (byte)(machineId & 0xFF);
b2 = (byte)((machineId >> 8) & 0xFF);
b1 = (byte)((machineId >> 16) & 0xFF);
buffer.put(b1);
buffer.put(b2);
buffer.put(b3);
buffer.putShort(bsonId.getProcessIdentifier());
int counter = bsonId.getCounter();
b3 = (byte)(counter & 0xFF);
b2 = (byte)((counter >> 8) & 0xFF);
b1 = (byte)((counter >> 16) & 0xFF);
buffer.put(b1);
buffer.put(b2);
buffer.put(b3);
GradoopId newId = GradoopId.fromByteArray(bytes);
assertEquals(expectedId, newId);
}
}