Add a test for NextIterator.
This commit is contained in:
parent
1a175d13b9
commit
e7f1a69c6b
68
core/src/test/scala/spark/util/NextIteratorSuite.scala
Normal file
68
core/src/test/scala/spark/util/NextIteratorSuite.scala
Normal file
|
@ -0,0 +1,68 @@
|
|||
package spark.util
|
||||
|
||||
import org.scalatest.FunSuite
|
||||
import org.scalatest.matchers.ShouldMatchers
|
||||
import scala.collection.mutable.Buffer
|
||||
import java.util.NoSuchElementException
|
||||
|
||||
class NextIteratorSuite extends FunSuite with ShouldMatchers {
|
||||
test("one iteration") {
|
||||
val i = new StubIterator(Buffer(1))
|
||||
i.hasNext should be === true
|
||||
i.next should be === 1
|
||||
i.hasNext should be === false
|
||||
intercept[NoSuchElementException] { i.next() }
|
||||
}
|
||||
|
||||
test("two iterations") {
|
||||
val i = new StubIterator(Buffer(1, 2))
|
||||
i.hasNext should be === true
|
||||
i.next should be === 1
|
||||
i.hasNext should be === true
|
||||
i.next should be === 2
|
||||
i.hasNext should be === false
|
||||
intercept[NoSuchElementException] { i.next() }
|
||||
}
|
||||
|
||||
test("empty iteration") {
|
||||
val i = new StubIterator(Buffer())
|
||||
i.hasNext should be === false
|
||||
intercept[NoSuchElementException] { i.next() }
|
||||
}
|
||||
|
||||
test("close is called once for empty iterations") {
|
||||
val i = new StubIterator(Buffer())
|
||||
i.hasNext should be === false
|
||||
i.hasNext should be === false
|
||||
i.closeCalled should be === 1
|
||||
}
|
||||
|
||||
test("close is called once for non-empty iterations") {
|
||||
val i = new StubIterator(Buffer(1, 2))
|
||||
i.next should be === 1
|
||||
i.next should be === 2
|
||||
// close isn't called until we check for the next element
|
||||
i.closeCalled should be === 0
|
||||
i.hasNext should be === false
|
||||
i.closeCalled should be === 1
|
||||
i.hasNext should be === false
|
||||
i.closeCalled should be === 1
|
||||
}
|
||||
|
||||
class StubIterator(ints: Buffer[Int]) extends NextIterator[Int] {
|
||||
var closeCalled = 0
|
||||
|
||||
override def getNext() = {
|
||||
if (ints.size == 0) {
|
||||
finished = true
|
||||
0
|
||||
} else {
|
||||
ints.remove(0)
|
||||
}
|
||||
}
|
||||
|
||||
override def close() {
|
||||
closeCalled += 1
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue