@Test
public void testSerialization() throws Exception {
long now = System.currentTimeMillis();
XAValueHolder<String> valueHolder = new XAValueHolder<>("value", now - 1000);
valueHolder.accessed(now, Duration.ofSeconds(100));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream outputStream = new ObjectOutputStream(baos);
outputStream.writeObject(valueHolder);
outputStream.close();
@SuppressWarnings("unchecked")
XAValueHolder<String> result = (XAValueHolder<String>) new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())).readObject();
assertThat(result.getId(), is(valueHolder.getId()));
assertThat(result.creationTime(), is(valueHolder.creationTime()));
assertThat(result.lastAccessTime(), is(valueHolder.lastAccessTime()));
assertThat(result.expirationTime(), is(valueHolder.expirationTime()));
assertThat(result.get(), is(valueHolder.get()));
}
}