summaryrefslogtreecommitdiff
path: root/test/junit/scala/collection/convert/NullSafetyToJavaTest.scala
blob: da0513ed8ae71bc99fefd1ad74802a940d141eed (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package scala.collection.convert

import java.util.{concurrent => juc}
import java.{lang => jl, util => ju}

import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4

import scala.collection.JavaConverters._
import scala.collection.convert.ImplicitConversions._
import scala.collection.{concurrent, mutable}

// SI-9113: tests to insure that wrappers return null instead of wrapping it as a collection

@RunWith(classOf[JUnit4])
class NullSafetyToJavaTest {
  @Test def testIteratorWrapping(): Unit = {
    val nullIterator: Iterator[AnyRef] = null
    val jIterator: ju.Iterator[AnyRef] = nullIterator

    assert(jIterator == null)
  }

  @Test def testEnumerationWrapping(): Unit = {
    val nullEnumeration: Iterator[AnyRef] = null
    val enumeration: ju.Iterator[AnyRef] = nullEnumeration

    assert(enumeration == null)
  }

  @Test def testIterableWrapping(): Unit = {
    val nullIterable: Iterable[AnyRef] = null
    val iterable: jl.Iterable[AnyRef] = asJavaIterable(nullIterable)

    assert(iterable == null)
  }

  @Test def testCollectionWrapping(): Unit = {
    val nullCollection: Iterable[AnyRef] = null
    val collection: ju.Collection[AnyRef] = nullCollection

    assert(collection == null)
  }

  @Test def testBufferWrapping(): Unit = {
    val nullList: mutable.Buffer[AnyRef] = null
    val buffer: ju.List[AnyRef] = nullList

    assert(buffer == null)
  }

  @Test def testSetWrapping(): Unit = {
    val nullSet: mutable.Set[AnyRef] = null
    val set: ju.Set[AnyRef] = nullSet

    assert(set == null)
  }

  @Test def testMapWrapping(): Unit = {
    val nullMap: mutable.Map[AnyRef, AnyRef] = null
    val map: ju.Map[AnyRef, AnyRef] = nullMap

    assert(map == null)
  }

  @Test def testConcurrentMapWrapping(): Unit = {
    val nullConMap: concurrent.Map[AnyRef, AnyRef] = null
    val conMap: juc.ConcurrentMap[AnyRef, AnyRef] = nullConMap

    assert(conMap == null)
  }

  @Test def testDictionaryWrapping(): Unit = {
    val nullDict: mutable.Map[AnyRef, AnyRef] = null
    val dict: ju.Dictionary[AnyRef, AnyRef] = nullDict

    assert(dict == null)
  }

  // Implicit conversion to ju.Properties is not available

  @Test def testIteratorDecoration(): Unit = {
    val nullIterator: Iterator[AnyRef] = null

    assert(nullIterator.asJava == null)
  }

  @Test def testEnumerationDecoration(): Unit = {
    val nullEnumeration: Iterator[AnyRef] = null

    assert(nullEnumeration.asJavaEnumeration == null)
  }

  @Test def testIterableDecoration(): Unit = {
    val nullIterable: Iterable[AnyRef] = null

    assert(nullIterable.asJava == null)
  }

  @Test def testCollectionDecoration(): Unit = {
    val nullCollection: Iterable[AnyRef] = null

    assert(nullCollection.asJavaCollection == null)
  }

  @Test def testBufferDecoration(): Unit = {
    val nullBuffer: mutable.Buffer[AnyRef] = null

    assert(nullBuffer.asJava == null)
  }

  @Test def testSetDecoration(): Unit = {
    val nullSet: Set[AnyRef] = null

    assert(nullSet.asJava == null)
  }

  @Test def testMapDecoration(): Unit = {
    val nullMap: mutable.Map[AnyRef, AnyRef] = null

    assert(nullMap.asJava == null)
  }

  @Test def testConcurrentMapDecoration(): Unit = {
    val nullConMap: concurrent.Map[AnyRef, AnyRef] = null

    assert(nullConMap.asJava == null)
  }

  @Test def testDictionaryDecoration(): Unit = {
    val nullDict: mutable.Map[AnyRef, AnyRef] = null

    assert(nullDict.asJavaDictionary == null)
  }

  // Decorator conversion to ju.Properties is not available
}