aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t8188.scala
blob: 9ee542f2ae1aee401a107296881e30381d07277d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
object Test {
  def main(args: Array[String]): Unit = {
    import java.io.ByteArrayInputStream
    import java.io.ByteArrayOutputStream
    import java.io.ObjectInputStream
    import java.io.ObjectOutputStream
    import scala.collection.concurrent.TrieMap
   
    def ser[T](o: T): Array[Byte] = {
      val baos = new ByteArrayOutputStream()
      new ObjectOutputStream(baos).writeObject(o)
      baos.toByteArray()
    }

    def deser[T](bs: Array[Byte]): T =
      new ObjectInputStream(new ByteArrayInputStream(bs)).readObject().asInstanceOf[T]
   
    def cloneViaSerialization[T](t: T): T = deser(ser(t))
   
    val f = cloneViaSerialization(_: TrieMap[Int, Int])
    val tm = TrieMap(1 -> 2)
    assert( f(f(tm)) == tm )
    assert( ser(tm).length == ser(f(tm)).length )
  }
}