+ @Test
+ public void testLeafCache() {
+ // The integers should be distinct
+ assertNotSame(CONT_DATA.getCaching().getValue(), CONT2_DATA.getCaching().getValue());
+
+ final BindingNormalizedNodeCachingCodec<Cont> cachingCodec = createContCachingCodec(Cont.class, MyType.class);
+ final NormalizedNode<?, ?> first = cachingCodec.serialize(CONT_DATA);
+ final NormalizedNode<?, ?> second = cachingCodec.serialize(CONT2_DATA);
+
+ assertNotEquals(first, second);
+ verifyLeafItemSame(first, second);
+ }
+
+ @Test
+ public void testDefaultInvocation() {
+ final BindingNormalizedNodeCachingCodec<Top> cachingCodec = createCachingCodec(Top.class, TopLevelList.class);
+
+ final Top input = new TopBuilder().build();
+ assertNull(input.getTopLevelList());
+ assertEquals(ImmutableMap.of(), input.nonnullTopLevelList());
+
+ final NormalizedNode<?, ?> dom = cachingCodec.serialize(input);
+ final Top output = cachingCodec.deserialize(dom);
+ assertTrue(input.equals(output));
+ assertTrue(output.equals(input));
+
+ assertNull(output.getTopLevelList());
+ assertEquals(ImmutableMap.of(), output.nonnullTopLevelList());
+ }
+