package org.oneandone.idev.johanna.store.id;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.UUID;
import org.apache.commons.codec.binary.Hex;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.Before;
/**
*
* JUnit test for {@link UUIDIdentifier}.
* @author Stephan Fuhrmann <stephan@tynne.de>
*/
public class UUIDIdentifierTest {
private IdentifierFactory identifierFactory;
@Before
public void init() {
identifierFactory = new IdentifierFactory('x', IdentifierFlavor.UUID);
}
@Test
public void testInitWithNoArgs() {
UUIDIdentifier identifier = new UUIDIdentifier(identifierFactory);
String uuidid = identifier.uniqid();
UUID uuid = UUID.fromString(uuidid);
assertNotNull(uuid);
}
@Test
public void testInitWithPrefix() {
UUIDIdentifier identifier = new UUIDIdentifier("prEfIx",identifierFactory);
String uuidid = identifier.uniqid();
UUID uuid = UUID.fromString(uuidid);
assertNotNull(uuid);
}
@Test(expected = NullPointerException.class)
public void testInitWithNullPrefix() {
UUIDIdentifier identifier = new UUIDIdentifier(null,identifierFactory);
}
@Test(expected = NullPointerException.class)
public void testInitWithNullPrefixAndNullId() {
UUIDIdentifier identifier = new UUIDIdentifier(null, null, identifierFactory);
}
@Test(expected = NullPointerException.class)
public void testInitWithNullPrefixAndId() {
UUIDIdentifier identifier = new UUIDIdentifier(null, UUID.randomUUID(), identifierFactory);
}
@Test(expected = NullPointerException.class)
public void testInitWithPrefixAndNullId() {
UUIDIdentifier identifier = new UUIDIdentifier("prEfIx", null, identifierFactory);
}
@Test
public void testPrefix() {
UUIDIdentifier identifier = new UUIDIdentifier("prEfIx", identifierFactory);
assertEquals("prEfIx", identifier.prefix());
assertEquals(0, identifier.toString().indexOf("prEfIx"));
}
@Test
public void testUniqid() {
UUID expect = UUID.randomUUID();
UUIDIdentifier identifier = new UUIDIdentifier("prEfIx", expect, identifierFactory);
String uuidid = identifier.uniqid();
UUID actual = UUID.fromString(uuidid);
assertEquals(expect, actual);
}
@Test
public void testForId() {
UUID expect = UUID.randomUUID();
String prefix = "pReFiX";
String id = expect.toString();
UUIDIdentifier identifier = UUIDIdentifier.forId(
prefix + identifierFactory.getIdentifierSeparator() + id, identifierFactory);
assertEquals(prefix, identifier.prefix());
assertEquals(id, identifier.uniqid());
}
@Test
public void testForIdWithIpv4() throws UnknownHostException {
UUID expect = UUID.randomUUID();
String prefix = Hex.encodeHexString(InetAddress.getByName("127.0.0.1").getAddress());
String id = expect.toString();
UUIDIdentifier identifier = UUIDIdentifier.forId(
prefix + identifierFactory.getIdentifierSeparator() + id, identifierFactory);
assertEquals(prefix, identifier.prefix());
assertEquals(id, identifier.uniqid());
}
@Test
public void testForIdWithIpv6() throws UnknownHostException {
UUID expect = UUID.randomUUID();
String prefix = Hex.encodeHexString(InetAddress.getByName("::1").getAddress());
String id = expect.toString();
UUIDIdentifier identifier = UUIDIdentifier.forId(
prefix + identifierFactory.getIdentifierSeparator() + id, identifierFactory);
assertEquals(prefix, identifier.prefix());
assertEquals(id, identifier.uniqid());
}
}