package co.codewizards.cloudstore.core.dto; import static co.codewizards.cloudstore.core.oio.OioFileFactory.*; import static java.lang.System.*; import static org.assertj.core.api.Assertions.*; import java.util.UUID; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import co.codewizards.cloudstore.core.Uid; import co.codewizards.cloudstore.core.dto.jaxb.DtoIo; import co.codewizards.cloudstore.core.oio.File; public class UidTest { private static final Logger logger = LoggerFactory.getLogger(UidTest.class); { logger.debug("[{}]<init>", Integer.toHexString(identityHashCode(this))); } @Test public void toAndFromBytes() { logger.debug("[{}]toAndFromBytes: entered.", Integer.toHexString(identityHashCode(this))); for (int i = 0; i < 1000; ++i) { final Uid uid1 = new Uid(); final byte[] bytes1 = uid1.toBytes(); final Uid uid2 = new Uid(bytes1); final byte[] bytes2 = uid2.toBytes(); assertThat(bytes2).isEqualTo(bytes1); assertThat(uid2).isEqualTo(uid1); } } @Test public void toAndFromString() { logger.debug("[{}]toAndFromString: entered.", Integer.toHexString(identityHashCode(this))); for (int i = 0; i < 1000; ++i) { final Uid uid1 = new Uid(); final String string1 = uid1.toString(); final Uid uid2 = new Uid(string1); final String string2 = uid2.toString(); // System.out.println("toAndFromString: " + string1); assertThat(string2).isEqualTo(string1); assertThat(uid2).isEqualTo(uid1); } } @Test public void toAndFromString_static() { logger.debug("[{}]toAndFromString_static: entered.", Integer.toHexString(identityHashCode(this))); final String a = "azAZaaaaaaaa0123456789"; final Uid uid1 = new Uid(a); final String string1 = uid1.toString(); final Uid uid2 = new Uid(string1); final String string2 = uid2.toString(); // System.out.println("toAndFromString_static: uid1=" + uid1); // System.out.println("toAndFromString_static: string1=" + string1); // System.out.println("toAndFromString_static: uid2=" + uid2); // System.out.println("toAndFromString_static: string2=" + string2); assertThat(string2).isEqualTo(string1); assertThat(uid2).isEqualTo(uid1); /* Taken from console out. If that changes, there would be mismappings /* of stored Uids on version upgrades. */ final String expected = "azAZaaaaaaaa012345678w"; assertThat(string1).isEqualTo(expected); } @Test public void toAndFromStringSpecialValues() { logger.debug("[{}]toAndFromStringSpecialValues: entered.", Integer.toHexString(identityHashCode(this))); final Uid uid1 = new Uid(0, 0); System.out.println(uid1); final Uid uid2 = new Uid(Long.MAX_VALUE, Long.MAX_VALUE); // System.out.println(uid2); final Uid uid3 = new Uid(Long.MIN_VALUE, Long.MIN_VALUE); // System.out.println(uid3); final Uid uid4 = new Uid(0, 1); // System.out.println(uid4); final Uid uid5 = new Uid(1, 0); // System.out.println(uid5); final Uid uid6 = new Uid(10000000, 0); // System.out.println(uid6); } @Test public void toAndFromStringUUIDComparison() { logger.debug("[{}]toAndFromStringUUIDComparison: entered.", Integer.toHexString(identityHashCode(this))); for (int i = 0; i < 1000; ++i) { final UUID uid1 = UUID.randomUUID(); final String string1 = uid1.toString(); final UUID uid2 = UUID.fromString(string1); final String string2 = uid2.toString(); // System.out.println(string1); assertThat(string2).isEqualTo(string1); assertThat(uid2).isEqualTo(uid1); } } @Test public void uidListToXmlAndBack() throws Exception { UidList uidList = new UidList(); uidList.add(new Uid()); uidList.add(new Uid()); uidList.add(new Uid()); DtoIo<UidList> dtoIo = new DtoIo<UidList>() { }; File tmpFile = createTempFile("uidList.", ".xml"); dtoIo.serialize(uidList, tmpFile); UidList uidList2 = dtoIo.deserialize(tmpFile); assertThat(uidList2).isEqualTo(uidList); tmpFile.delete(); } }