summaryrefslogtreecommitdiff
path: root/test/files/run/streams.scala
blob: 350e103eab0b6ffe369c5fe376912060d0263230 (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
object Test extends App {
  val s0: Stream[Int] = Stream.empty
  println(s0.take(1))
  println(s0.takeWhile(_ > 0))
  println(s0.lengthCompare(-5) > 0)
  println(s0.lengthCompare(0) == 0)
  println(s0.lengthCompare(5) < 0)
  println

  val s1 = Stream.cons(1, Stream.empty)
  println(s1.toArray.deep)
  println(s1.take(1))
  println(s1.take(2))
  println(s1.drop(1))
  println(s1.drop(2))
  println(s1.drop(-1))
  println(s1.dropWhile(_ > 0))
  println(s1.lengthCompare(-5) > 0)
  println(s1.lengthCompare(0) > 0)
  println(s1.lengthCompare(1) == 0)
  println(s1.lengthCompare(5) < 0)
  println

  val s2 = s1.append(Stream.cons(2, Stream.empty))
  println(s2.toArray.deep)
  println(s2.drop(1))
  println(s2.drop(2))
  println(s2.drop(-1))
  println(s2.dropWhile(_ > 0))
  println(s2.lengthCompare(-5) > 0)
  println(s2.lengthCompare(0) > 0)
  println(s2.lengthCompare(1) > 0)
  println(s2.lengthCompare(2) == 0)
  println(s2.lengthCompare(5) < 0)
  println

  val s3 = Stream.range(1, 1000) //100000 (ticket #153: Stackoverflow)
  println(s3.length)

  // ticket #153
  def powers(x: Int) = if ((x&(x-1)) == 0) Some(x) else None
  println(s3.flatMap(powers).reverse.head)

  // large enough to generate StackOverflows (on most systems)
  // unless the following methods are tail call optimized.
  val size = 100000

  // test tail recursive methods
  println(Stream.from(1).take(size).last)
  println(Stream.from(1).drop(size))
  println(Stream.from(1).filter(_ > size).take(5))
  println(Stream.from(1).take(size).forall(_ >= 0))
  println(Stream.from(1).exists(_ > size))
  Stream.from(1).take(size).foreach( x => () )
  println(Stream.from(1).take(size).foldLeft(0)(_ + _))
  val arr = new Array[Int](size)
  Stream.from(1).take(size).copyToArray(arr, 0)

  println

  // ticket #6415
  lazy val x = { println("evaluated"); 1 }
  val s4 = 0 #:: x #:: Stream.empty

  println(s4.isDefinedAt(0))
}