diff --git a/jvm/src/test/scala/scala/xml/SerializationTest.scala b/jvm/src/test/scala/scala/xml/SerializationTest.scala new file mode 100644 index 000000000..6a63eae84 --- /dev/null +++ b/jvm/src/test/scala/scala/xml/SerializationTest.scala @@ -0,0 +1,45 @@ +package scala.xml + +import java.io._ + +import org.junit.Assert.assertEquals +import org.junit.Test + +class SerializationTest { + def roundTrip[T](obj: T): T = { + def serialize(in: T): Array[Byte] = { + val bos = new ByteArrayOutputStream() + val oos = new ObjectOutputStream(bos) + oos.writeObject(in) + oos.flush() + bos.toByteArray() + } + + def deserialize(in: Array[Byte]): T = { + val bis = new ByteArrayInputStream(in) + val ois = new ObjectInputStream(bis) + ois.readObject.asInstanceOf[T] + } + + deserialize(serialize(obj)) + } + + @Test + def xmlLiteral: Unit = { + val n = + assertEquals(n, roundTrip(n)) + } + + @Test + def empty: Unit = { + assertEquals(NodeSeq.Empty, roundTrip(NodeSeq.Empty)) + } + + @Test + def implicitConversion: Unit = { + val parent = + val children: Seq[Node] = parent.child + val asNodeSeq: NodeSeq = children + assertEquals(asNodeSeq, roundTrip(asNodeSeq)) + } +} diff --git a/shared/src/main/scala/scala/xml/NodeSeq.scala b/shared/src/main/scala/scala/xml/NodeSeq.scala index c498279e9..7092bb974 100644 --- a/shared/src/main/scala/scala/xml/NodeSeq.scala +++ b/shared/src/main/scala/scala/xml/NodeSeq.scala @@ -42,7 +42,7 @@ object NodeSeq { * @author Burak Emir * @version 1.0 */ -abstract class NodeSeq extends AbstractSeq[Node] with immutable.Seq[Node] with SeqLike[Node, NodeSeq] with Equality { +abstract class NodeSeq extends AbstractSeq[Node] with immutable.Seq[Node] with SeqLike[Node, NodeSeq] with Equality with Serializable { /** Creates a list buffer as builder for this class */ override protected[this] def newBuilder = NodeSeq.newBuilder