summaryrefslogtreecommitdiff
path: root/test/junit/scala/runtime/ScalaRunTimeTest.scala
blob: e28deae786e26595a1b89ffe59a5b65b7da58b2c (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
package scala.runtime

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

/** Tests for the private class DefaultPromise */
@RunWith(classOf[JUnit4])
class ScalaRunTimeTest {
  @Test
  def testIsTuple() {
    import ScalaRunTime.isTuple
    def check(v: Any) = {
      assertTrue(v.toString, isTuple(v))
    }

    val s = ""
    check(Tuple1(s))
    check((s, s))
    check((s, s, s))
    check((s, s, s, s))
    check((s, s, s, s, s))
    check((s, s, s, s, s, s))
    check((s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))
    check((s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s))

    // some specialized variants will have mangled classnames
    check(Tuple1(0))
    check((0, 0))
    check((0, 0, 0))
    check((0, 0, 0, 0))
    check((0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
    check((0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))

    case class C()
    val c = new C()
    assertFalse(c.toString, isTuple(c))
  }

  @Test
  def testStringOf() {
    import ScalaRunTime.stringOf
    import scala.collection._
    import parallel.ParIterable

    assertEquals("null", stringOf(null))
    assertEquals( "\"\"", stringOf(""))

    assertEquals("abc", stringOf("abc"))
    assertEquals("\" abc\"", stringOf(" abc"))
    assertEquals("\"abc \"", stringOf("abc "))

    assertEquals("""Array()""", stringOf(Array.empty[AnyRef]))
    assertEquals("""Array()""", stringOf(Array.empty[Int]))
    assertEquals("""Array(1, 2, 3)""", stringOf(Array(1, 2, 3)))
    assertEquals("""Array(a, "", " c", null)""", stringOf(Array("a", "", " c", null)))
    assertEquals("""Array(Array("", 1, Array(5)), Array(1))""",
        stringOf(Array(Array("", 1, Array(5)), Array(1))))

    val map = Map(1->"", 2->"a", 3->" a", 4->null)
    assertEquals(s"""${map.stringPrefix}(1 -> "", 2 -> a, 3 -> " a", 4 -> null)""", stringOf(map))
    assertEquals(s"""${map.stringPrefix}(1 -> "", 2 -> a)""", stringOf(map, 2))

    val iterable = Iterable("a", "", " c", null)
    assertEquals(s"""${iterable.stringPrefix}(a, "", " c", null)""", stringOf(iterable))
    assertEquals(s"""${iterable.stringPrefix}(a, "")""", stringOf(iterable, 2))

    val parIterable = ParIterable("a", "", " c", null)
    assertEquals(s"""${parIterable.stringPrefix}(a, "", " c", null)""", stringOf(parIterable))
    assertEquals(s"""${parIterable.stringPrefix}(a, "")""", stringOf(parIterable, 2))

    val traversable = new Traversable[Int] {
       def foreach[U](f: Int => U): Unit = (0 to 3).foreach(f)
    }
    assertEquals(s"${traversable.stringPrefix}(0, 1, 2, 3)", stringOf(traversable))
    assertEquals(s"${traversable.stringPrefix}(0, 1)", stringOf(traversable, 2))

    val tuple1 = Tuple1(0)
    assertEquals("(0,)", stringOf(tuple1))
    assertEquals("(0,)", stringOf(tuple1, 0))

    val tuple2 = Tuple2(0, 1)
    assertEquals("(0,1)", stringOf(tuple2))
    assertEquals("(0,1)", stringOf(tuple2, 0))

    val tuple3 = Tuple3(0, 1, 2)
    assertEquals("(0,1,2)", stringOf(tuple3))
    assertEquals("(0,1,2)", stringOf(tuple3, 0))

    val x = new Object {
        override def toString(): String = "this is the stringOf string"
    }
    assertEquals(stringOf(x), "this is the stringOf string")
    assertEquals(stringOf(x, 2), "this is the stringOf string")
  }
}