protected void process(String desc, ParsingFunction<T> parser, SerializingFunction<T> serializer, String serId) throws Exception { PrismContext prismContext = getPrismContext(); System.out.println("================== Starting test for '" + desc + "' (serializer: " + serId + ") =================="); T value = parser.apply(prismContext.parserFor(getFile())); assertResolvableRawValues(value); // should be right here, before any getValue is called (TODO reconsider) System.out.println("Parsed value: " + desc); System.out.println(value.debugDump()); assertPrismValue(value); if (serializer != null) { String serialized = serializer.apply(value); System.out.println("Serialized:\n" + serialized); T reparsed = parser.apply(prismContext.parserFor(serialized)); assertResolvableRawValues(reparsed); // should be right here, before any getValue is called (TODO reconsider) System.out.println("Reparsed: " + desc); System.out.println(reparsed.debugDump()); assertPrismValue(reparsed); Collection<? extends ItemDelta> deltas = value.diff(reparsed); assertTrue("Deltas not empty", deltas.isEmpty()); assertTrue("Values not equal", value.equals(reparsed, EquivalenceStrategy.NOT_LITERAL)); } }