summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKota Mizushima <mizukota@gmail.com>2012-01-23 18:53:05 +0900
committerRobert J. Macomber <robert.macomber@socrata.com>2012-03-02 11:42:13 -0800
commit1864e6d1c1b0034e31af7515305ceaaaeeb5c72b (patch)
treeff5d656f4a2a2dc10f545ef8530b0ed89a4754dd /test
parent841f074e2bb52c5b4b707b9c42f8640e9f62e0e5 (diff)
downloadscala-1864e6d1c1b0034e31af7515305ceaaaeeb5c72b.tar.gz
scala-1864e6d1c1b0034e31af7515305ceaaaeeb5c72b.tar.bz2
scala-1864e6d1c1b0034e31af7515305ceaaaeeb5c72b.zip
Add test case for SI-4835 (https://issues.scala-lang.org/browse/SI-4835)
This test case only confirm that StreamIterator's lazyiness is not broken. Test case about memory consumption could be created. However, such a test cause a greatly increased time of test.
Diffstat (limited to 'test')
-rw-r--r--test/files/run/t4835.check7
-rw-r--r--test/files/run/t4835.scala38
2 files changed, 45 insertions, 0 deletions
diff --git a/test/files/run/t4835.check b/test/files/run/t4835.check
new file mode 100644
index 0000000000..531c3d7bb6
--- /dev/null
+++ b/test/files/run/t4835.check
@@ -0,0 +1,7 @@
+-1 0 1 2 3 4 5 6 7 8 9
+-1 1 3 5 7 9 11 13 15 17 19
+1 1
+2 1 2
+2 1 A 2
+3 1 2 3
+3 1 A 2 B 3
diff --git a/test/files/run/t4835.scala b/test/files/run/t4835.scala
new file mode 100644
index 0000000000..50d161be40
--- /dev/null
+++ b/test/files/run/t4835.scala
@@ -0,0 +1,38 @@
+/*
+ * Test case for SI-4835. This tests confirm that the fix
+ * doesn't break laziness. To test memory consumption,
+ * I need to confirm that OutOfMemoryError doesn't occur.
+ * I could create such tests. However, such tests consume
+ * too much time and memory.
+ */
+object Test {
+ private final val INFINITE = -1
+ def testStreamIterator(num: Int, stream: Stream[Int]): Unit = {
+ val iter = stream.iterator
+ print(num)
+ // if num == -1, then steram is infinite sequence
+ if (num == INFINITE) {
+ for(i <- 0 until 10) {
+ print(" " + iter.next())
+ }
+ } else {
+ while(iter.hasNext) {
+ print(" " + iter.next())
+ }
+ }
+ println()
+ }
+
+ def main(args: Array[String]): Unit = {
+ import Stream.{from, cons, empty}
+ testStreamIterator(INFINITE, from(0))
+ testStreamIterator(INFINITE, from(0).filter(_ % 2 == 1))
+ testStreamIterator(1, Stream(1))
+ testStreamIterator(2, Stream(1, 2))
+ //Stream with side effect
+ testStreamIterator(2, cons(1, cons({ print(" A"); 2}, empty)))
+ testStreamIterator(3, Stream(1, 2, 3))
+ //Stream with side effect
+ testStreamIterator(3, cons(1, cons({ print(" A"); 2}, cons({ print(" B"); 3}, Stream.empty))))
+ }
+}