/*
* Copyright (C) 2006 Joe Walnes.
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 04. June 2006 by Joe Walnes
*/
package com.thoughtworks.xstream.io.copy;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.AbstractXMLReaderTest;
import com.thoughtworks.xstream.io.xml.CompactWriter;
import com.thoughtworks.xstream.io.xml.XppReader;
import java.io.StringReader;
import java.io.StringWriter;
public class HierarchicalStreamCopierTest extends AbstractXMLReaderTest {
private HierarchicalStreamCopier copier = new HierarchicalStreamCopier();
// This test leverages the existing (comprehensive) tests for the XML readers
// and adds an additional stage of copying in.
// factory method - overriding base class.
protected HierarchicalStreamReader createReader(String xml) throws Exception {
HierarchicalStreamReader sourceReader = new XppReader(new StringReader(xml));
StringWriter buffer = new StringWriter();
HierarchicalStreamWriter destinationWriter = new CompactWriter(buffer);
copier.copy(sourceReader, destinationWriter);
return new XppReader(new StringReader(buffer.toString()));
}
public void testSkipsValueIfEmpty() {
String input = "<root><empty1/><empty2></empty2><not-empty>blah</not-empty></root>";
String expected = "<root><empty1/><empty2/><not-empty>blah</not-empty></root>";
HierarchicalStreamReader sourceReader = new XppReader(new StringReader(input));
StringWriter buffer = new StringWriter();
HierarchicalStreamWriter destinationWriter = new CompactWriter(buffer);
copier.copy(sourceReader, destinationWriter);
assertEquals(expected, buffer.toString());
}
}