diff --git a/shared/src/main/scala/scala/xml/PCData.scala b/shared/src/main/scala/scala/xml/PCData.scala index 5b8ee07c2..1df109e25 100644 --- a/shared/src/main/scala/scala/xml/PCData.scala +++ b/shared/src/main/scala/scala/xml/PCData.scala @@ -26,7 +26,7 @@ class PCData(data: String) extends Atom[String](data) { * @return the input string buffer with the formatted CDATA section */ override def buildString(sb: StringBuilder): StringBuilder = - sb append "".format(data) + sb append "".format(data.replaceAll("]]>", "]]]]>")) } /** diff --git a/shared/src/test/scala/scala/xml/PCDataTest.scala b/shared/src/test/scala/scala/xml/PCDataTest.scala new file mode 100644 index 000000000..78fd494fb --- /dev/null +++ b/shared/src/test/scala/scala/xml/PCDataTest.scala @@ -0,0 +1,37 @@ +package scala.xml + +import org.junit.Test +import org.junit.Assert.assertEquals + +class PCDataTest { + + @Test + def emptyTest = { + val pcdata = new PCData("") + assertEquals("", pcdata.toString) + } + + @Test + def bracketTest = { + val pcdata = new PCData("[]") + assertEquals("", pcdata.toString) + } + + @Test + def hellaBracketingTest = { + val pcdata = new PCData("[[[[[[[[]]]]]]]]") + assertEquals("", pcdata.toString) + } + + @Test + def simpleNestingTest = { + val pcdata = new PCData("]]>") + assertEquals("]]>", pcdata.toString) + } + + @Test + def recursiveNestingTest = { + val pcdata = new PCData("") + assertEquals("]]>", pcdata.toString) + } +}