public void testSerialization_caching() throws Exception { Queue<String> original = QueueTools.linkedQueue(20); original.enqueue("first"); Queue<String> clone = TestTools.serialize(original); assertEquals(original.peek(), clone.peek()); assertEquals(original.dequeue(), clone.dequeue()); assertNotSame(original, clone); assertTrue(original.isEmpty()); assertEquals(original.isEmpty(), clone.isEmpty()); original.enqueue("second"); assertFalse(original.isEmpty()); // clone should still be empty assertTrue(clone.isEmpty()); Object factory = ObjectTools.get(original, "nodeFactory"); assertTrue(factory.toString().startsWith("LinkedQueue.CachingNodeFactory")); }