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") } }