|  | 
|  | 1 | +package scala.jdk | 
|  | 2 | + | 
|  | 3 | +import java.{lang => jl, util => ju} | 
|  | 4 | + | 
|  | 5 | +import org.junit.Test | 
|  | 6 | + | 
|  | 7 | +import scala.collection.compat._ | 
|  | 8 | +import scala.collection.{mutable => m} | 
|  | 9 | +import scala.jdk.CollectionConverters._ | 
|  | 10 | +import scala.{collection => c} | 
|  | 11 | + | 
|  | 12 | +class CollectionConvertersTest { | 
|  | 13 | +  @Test | 
|  | 14 | +  def extensions(): Unit = { | 
|  | 15 | +    val it = "a b c".split(" ").iterator | 
|  | 16 | + | 
|  | 17 | +    { | 
|  | 18 | +      val j = it.asJava | 
|  | 19 | +      val je = it.asJavaEnumeration | 
|  | 20 | +      val s = (j: ju.Iterator[String]).asScala | 
|  | 21 | +      assert((s: Iterator[String]) eq it) | 
|  | 22 | +      val es = (je: ju.Enumeration[String]).asScala | 
|  | 23 | +      assert((es: Iterator[String]) eq it) | 
|  | 24 | +    } | 
|  | 25 | + | 
|  | 26 | +    { | 
|  | 27 | +      val i: c.Iterable[String] = it.to(Iterable) | 
|  | 28 | +      val j = i.asJava | 
|  | 29 | +      val jc = i.asJavaCollection | 
|  | 30 | +      val s = (j: jl.Iterable[String]).asScala | 
|  | 31 | +      assert((s: c.Iterable[String]) eq i) | 
|  | 32 | +      val cs = (jc: ju.Collection[String]).asScala | 
|  | 33 | +      assert((cs: c.Iterable[String]) eq i) | 
|  | 34 | +    } | 
|  | 35 | + | 
|  | 36 | +    { | 
|  | 37 | +      val b: m.Buffer[String] = it.to(m.Buffer) | 
|  | 38 | +      val j = b.asJava | 
|  | 39 | +      val s = (j: ju.List[String]).asScala | 
|  | 40 | +      assert((s: m.Buffer[String]) eq b) | 
|  | 41 | +    } | 
|  | 42 | + | 
|  | 43 | +    { | 
|  | 44 | +      val q: m.Seq[String] = it.to(m.Seq) | 
|  | 45 | +      val j = q.asJava | 
|  | 46 | +      val s = (j: ju.List[String]).asScala | 
|  | 47 | +      assert((s: m.Buffer[String]) == q) // not eq | 
|  | 48 | +    } | 
|  | 49 | + | 
|  | 50 | +    { | 
|  | 51 | +      val q: c.Seq[String] = it.to(c.Seq) | 
|  | 52 | +      val j = q.asJava | 
|  | 53 | +      val s = (j: ju.List[String]).asScala | 
|  | 54 | +      assert((s: m.Buffer[String]) == q) // not eq | 
|  | 55 | +    } | 
|  | 56 | + | 
|  | 57 | +    { | 
|  | 58 | +      val t: m.Set[String] = it.to(m.Set) | 
|  | 59 | +      val j = t.asJava | 
|  | 60 | +      val s = (j: ju.Set[String]).asScala | 
|  | 61 | +      assert((s: m.Set[String]) eq t) | 
|  | 62 | +    } | 
|  | 63 | + | 
|  | 64 | +    { | 
|  | 65 | +      val t: c.Set[String] = it.to(c.Set) | 
|  | 66 | +      val j = t.asJava | 
|  | 67 | +      val s = (j: ju.Set[String]).asScala | 
|  | 68 | +      assert((s: m.Set[String]) == t) // not eq | 
|  | 69 | +    } | 
|  | 70 | + | 
|  | 71 | +    { | 
|  | 72 | +      val p: m.Map[String, String] = m.Map(it.map(a => (a, a)).toSeq: _*) | 
|  | 73 | +      val j = p.asJava | 
|  | 74 | +      val jd = p.asJavaDictionary | 
|  | 75 | +      val s = (j: ju.Map[String, String]).asScala | 
|  | 76 | +      assert((s: m.Map[String, String]) eq p) | 
|  | 77 | +      val ds = (jd: ju.Dictionary[String, String]).asScala | 
|  | 78 | +      assert((ds: m.Map[String, String]) eq p) | 
|  | 79 | +    } | 
|  | 80 | + | 
|  | 81 | +    { | 
|  | 82 | +      val p: c.Map[String, String] = c.Map(it.map(a => (a, a)).toSeq: _*) | 
|  | 83 | +      val j = p.asJava | 
|  | 84 | +      val s = (j: ju.Map[String, String]).asScala | 
|  | 85 | +      assert((s: m.Map[String, String]) == p) // not eq | 
|  | 86 | +    } | 
|  | 87 | + | 
|  | 88 | +//    Scala.js doesn't like the concurrent packages | 
|  | 89 | +//    { | 
|  | 90 | +//      val p: scala.collection.concurrent.Map[String, String] = scala.collection.concurrent.TrieMap(it.map(a => (a, a)).toSeq: _*) | 
|  | 91 | +//      val j = p.asJava | 
|  | 92 | +//      val s = (j: java.util.concurrent.ConcurrentMap[String, String]).asScala | 
|  | 93 | +//      assert((s: scala.collection.concurrent.Map[String, String]) eq p) | 
|  | 94 | +//    } | 
|  | 95 | +  } | 
|  | 96 | +} | 
0 commit comments