package com.intrbiz.bergamot.crypto.util; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.math.BigInteger; import java.util.UUID; import org.junit.Test; public class TestSerialNum { @Test() public void testSerialNumEquals() { UUID id = UUID.randomUUID(); short rev = 23; SerialNum sn1 = new SerialNum(id, rev); SerialNum sn2 = new SerialNum(id, rev); assertThat(sn1, is(equalTo(sn2))); } @Test() public void testSerialNumHashcode() { UUID id = UUID.randomUUID(); short rev = 53; SerialNum sn1 = new SerialNum(id, rev); SerialNum sn2 = new SerialNum(id, rev); assertThat(sn1.hashCode(), is(equalTo(sn2.hashCode()))); } @Test() public void testSerialNumRevision() { UUID id = UUID.randomUUID(); short rev = 53; SerialNum sn1 = new SerialNum(id, rev); SerialNum sn2 = sn1.revision(); assertThat(sn1.getId(), is(equalTo(id))); assertThat(sn2.getId(), is(equalTo(id))); assertThat(sn1.getRev(), is(equalTo(rev))); assertThat(sn2.getRev(), is(equalTo((short) (rev + 1)))); } @Test() public void testSerialNumToBytes() { UUID id = UUID.randomUUID(); short rev = 13; // create our serial SerialNum sn1 = new SerialNum(id, rev); assertThat(sn1.getVersion(), is(equalTo((byte) 0))); // encode byte[] ba = sn1.toBytes(); assertThat(ba, is(notNullValue())); assertThat(ba.length, is(equalTo(18))); // decode SerialNum sn2 = SerialNum.fromBytes(ba); // assert they match assertThat(sn1, is(equalTo(sn2))); assertThat(ba, is(equalTo(sn2.toBytes()))); } @Test() public void testSerialNumToString() { UUID id = UUID.randomUUID(); short rev = 16; // create our serial SerialNum sn1 = new SerialNum(id, rev); // encode String s = sn1.toString(); // decode SerialNum sn2 = SerialNum.fromString(s); // assert they match assertThat(sn1, is(equalTo(sn2))); assertThat(s, is(equalTo(sn2.toString()))); } @Test() public void testSerialNumToBigInt() { UUID id = UUID.randomUUID(); short rev = 16; // create our serial SerialNum sn1 = new SerialNum(id, rev); // encode BigInteger bi = sn1.toBigInt(); // decode SerialNum sn2 = SerialNum.fromBigInt(bi); // assert they match assertThat(sn1, is(equalTo(sn2))); assertThat(bi, is(equalTo(sn2.toBigInt()))); } @Test() public void testSerialNumToBigIntV2() { UUID id = UUID.randomUUID(); short rev = 16; // create our serial SerialNum sn1 = new SerialNum(id, rev, SerialNum.VERSION_2, 0x0001); // encode BigInteger bi = sn1.toBigInt(); // decode SerialNum sn2 = SerialNum.fromBigInt(bi); // assert they match assertThat(sn1, is(equalTo(sn2))); assertThat(bi, is(equalTo(sn2.toBigInt()))); } @Test() public void testSerialNumV2() { UUID id = UUID.randomUUID(); short rev = 16; short mode = SerialNum.MODE_TEMPLATE; // create our serial SerialNum sn1 = SerialNum.version2(id, rev, mode); assertThat(sn1.getId(), is(equalTo(id))); assertThat(sn1.getRev(), is(equalTo(rev))); assertThat(sn1.getMode(), is(equalTo(mode))); assertThat(sn1.isVersion2(), is(equalTo(true))); assertThat(sn1.isTemplate(), is(equalTo(true))); // encode BigInteger bi = sn1.toBigInt(); // decode SerialNum sn2 = SerialNum.fromBigInt(bi); // assert they match assertThat(sn1, is(equalTo(sn2))); assertThat(bi, is(equalTo(sn2.toBigInt()))); } }