Skip to content

Commit a65de8d

Browse files
authored
Merge pull request scala#217 from lrytz/jdkCollConv
Backport scala.jdk.CollectionConverters to 2.11 / 2.12
2 parents 016b68c + c3c39c0 commit a65de8d

File tree

2 files changed

+101
-0
lines changed

2 files changed

+101
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package scala.jdk
2+
3+
import scala.collection.convert.{DecorateAsJava, DecorateAsScala}
4+
5+
object CollectionConverters extends DecorateAsJava with DecorateAsScala
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
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

Comments
 (0)