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 128 129 130 131 132 133 134 135 136 137 138 139
|
trait RichTest {
val s1 = """abc"""
val s2 = """abc\txyz\n"""
val s3 = """abc
xyz"""
val s4 = """abc
|xyz"""
val s5 = """abc
#xyz"""
def getObjectName: String = {
val cn = this.getClass().getName()
cn.substring(0, cn.length-1)
}
def length[A](it: Iterator[A]) = it.toList.length
def length[A](it: Iterable[A]) = it.toList.length
def run: Unit
}
object RichCharTest1 extends RichTest {
def run {
println("\n" + getObjectName + ":")
println('\40'.isWhitespace)
println('\011'.isWhitespace)
println('1'.asDigit == 1)
println('A'.asDigit == 10)
}
}
// object RichCharTest2 extends RichTest {
// case class C(s: String) {
// private val it = s.iterator
// private var c: Char = _
// def ch(): Char = c
// def nextch(): Unit = { c = if (it.hasNext) it.next else ';' }
// def err(msg: String) = println(msg)
// nextch()
// }
// def run {
// println("\n" + getObjectName + ":")
// val c1 = C("x4A;")
// val s1 = xml.Utility.parseCharRef(c1.ch, c1.nextch, c1.err)
// val c2 = C("74;")
// val s2 = xml.Utility.parseCharRef(c2.ch, c2.nextch, c2.err)
// println(s1 == s2)
// }
// }
object RichIntTest extends RichTest {
private val n = 10
private val m = -2
def run {
println("\n" + getObjectName + ":")
println(length(0 until n))
println(length(0 to n))
println(length(m until n))
println(length(m to n))
println(length(n until m))
println(length(n to m))
println(16.toBinaryString) // should be "10000"
println(16.toHexString) // should be "10"
println(16.toOctalString) // should be "20"
println(65537.toHexString) // should be "10001"
println((-1).toHexString) // should be "ffffffff"
}
}
object RichStringTest1 extends RichTest {
def run {
println("\n" + getObjectName + ":")
println("s1: " + s1)
println("s2: " + s2)
println("s3: " + s3)
println("s4: " + s4)
println("s5: " + s5)
}
}
object RichStringTest2 extends RichTest {
def run {
println("\n" + getObjectName + ":")
Console.print("s1: "); s1.lines foreach println
Console.print("s2: "); s2.lines foreach println
Console.print("s3: "); s3.lines foreach println
Console.print("s4: "); s4.lines foreach println
Console.print("s5: "); s5.lines foreach println
}
}
object RichStringTest3 extends RichTest {
def run {
println("\n" + getObjectName + ":")
println("s1: " + s1.stripLineEnd)
println("s2: " + s2.stripLineEnd)
println("s3: " + s3.stripLineEnd)
println("s4: " + s4.stripLineEnd)
println("s5: " + s5.stripLineEnd)
}
}
object RichStringTest4 extends RichTest {
def run {
println("\n" + getObjectName + ":")
println("s1: " + s1.stripMargin)
println("s2: " + s2.stripMargin)
println("s3: " + s3.stripMargin)
println("s4: " + s4.stripMargin)
println("s5: " + s5.stripMargin)
}
}
object RichStringTest5 extends RichTest {
def run {
println("\n" + getObjectName + ":")
println("s1: " + s3.stripMargin('#'))
println("s2: " + s3.stripMargin('#'))
println("s3: " + s3.stripMargin('#'))
println("s4: " + s4.stripMargin('#'))
println("s5: " + s5.stripMargin('#'))
}
}
object RichStringTest6 extends RichTest {
def run {
println("a:b:c:d".split(':').toList)
println("a.b.c.d".split('.').toList)
println("a$b$c$d".split('$').toList)
println("a^b^c^d".split('^').toList)
println("a\\b\\c\\d".split('\\').toList)
println("a:b:c.d".split(Array(':', '.')).toList)
println("a:b.c$d".split(Array(':', '.', '$')).toList)
}
}
/** xxx */
object Test {
def main(args: Array[String]) {
RichCharTest1.run
//RichCharTest2.run
RichIntTest.run
RichStringTest1.run
RichStringTest2.run
RichStringTest3.run
RichStringTest4.run
RichStringTest5.run
RichStringTest6.run
}
}
|