Skip to content

Commit a2e1b31

Browse files
LarsEckartJayBazuziisidore
committed
*** t spiking xml formatting/transformation
Co-authored-by: Jay Bazuzi <[email protected]> Co-authored-by: Llewellyn Falco <[email protected]>
1 parent 257151a commit a2e1b31

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package org.approvaltests;
2+
3+
import org.approvaltests.core.Options;
4+
import org.junit.jupiter.api.Disabled;
5+
import org.junit.jupiter.api.Test;
6+
7+
import javax.xml.transform.OutputKeys;
8+
import javax.xml.transform.Source;
9+
import javax.xml.transform.Transformer;
10+
import javax.xml.transform.TransformerException;
11+
import javax.xml.transform.TransformerFactory;
12+
import javax.xml.transform.stream.StreamResult;
13+
import javax.xml.transform.stream.StreamSource;
14+
import java.io.IOException;
15+
import java.io.StringReader;
16+
import java.io.StringWriter;
17+
import java.io.Writer;
18+
19+
class XmlFormattingTest
20+
{
21+
@Disabled("SPIKE - continue next time")
22+
@Test
23+
void xmlWithEmojiesAndAmpersands()
24+
{
25+
var expected = """
26+
<?xml version='1.0' encoding='UTF-8'?>
27+
<a>
28+
<b>Tom &amp; Jerry</b>
29+
<emoji>😸</emoji>
30+
</a>
31+
""";
32+
String input = expected.replaceAll("\n", "").replace(" ", "");
33+
Approvals.verify(prettyPrint(input, 2), new Options().inline(expected));
34+
}
35+
private static String prettyPrint(String expected, int tabSize)
36+
{
37+
try
38+
{
39+
Source xmlInput = new StreamSource(new StringReader(expected));
40+
StringWriter stringWriter = new StringWriter();
41+
StreamResult xmlOutput = new StreamResult(stringWriter);
42+
TransformerFactory transformerFactory = TransformerFactory.newInstance();
43+
transformerFactory.setAttribute("indent-number", tabSize);
44+
Transformer transformer = transformerFactory.newTransformer();
45+
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
46+
transformer.transform(xmlInput, xmlOutput);
47+
try (Writer writer = xmlOutput.getWriter())
48+
{
49+
return writer.toString();
50+
}
51+
}
52+
catch (TransformerException | IOException e)
53+
{
54+
return expected;
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)