diff options
-rw-r--r-- | src/library/scala/reflect/generic/ByteCodecs.scala | 52 | ||||
-rw-r--r-- | test/files/run/bytecodecs.scala | 39 |
2 files changed, 49 insertions, 42 deletions
diff --git a/src/library/scala/reflect/generic/ByteCodecs.scala b/src/library/scala/reflect/generic/ByteCodecs.scala index 21f4d5f5c1..1f42008837 100644 --- a/src/library/scala/reflect/generic/ByteCodecs.scala +++ b/src/library/scala/reflect/generic/ByteCodecs.scala @@ -119,9 +119,13 @@ object ByteCodecs { dst } - def decode7to8(src: Array[Byte], srclen: Int, dstlen: Int) { + @deprecated("use 2-argument version instead") + def decode7to8(src: Array[Byte], srclen: Int, dstlen: Int) { decode7to8(src, srclen) } + + def decode7to8(src: Array[Byte], srclen: Int) { var i = 0 var j = 0 + val dstlen = (srclen * 7 + 7) / 8 while (i + 7 < srclen) { var out: Int = src(i) var in: Byte = src(i + 1) @@ -185,49 +189,13 @@ object ByteCodecs { def encode(xs: Array[Byte]): Array[Byte] = avoidZero(encode8to7(xs)) + @deprecated("use 1-argument version instead") + def decode(xs: Array[Byte], dstlen: Int) { decode(xs) } + /** Destructively decode array xs */ - def decode(xs: Array[Byte], dstlen: Int) { + def decode(xs: Array[Byte]) { val len = regenerateZero(xs) - decode7to8(xs, len, dstlen) - } - -// test & debug, preliminary ---------------------------------- - - def test8to7(xs: Array[Byte]) { - val ys = encode8to7(xs) - decode7to8(ys, ys.length, xs.length) - assert(ys.take(xs.length).deep == xs.deep, - "test8to7("+xs.deep+") failed, result = "+ys.take(xs.length).deep) - } - - def testAll(xs: Array[Byte]) { - val ys = encode(xs) - decode(ys, xs.length) - assert(ys.take(xs.length).deep == xs.deep, - "testAll("+xs.deep+") failed, result = "+ys.take(xs.length).deep) - } - - def test(inputs: Array[Byte]*) { - for (input <- inputs) { - test8to7(input) - testAll(input) - } - } - - def main(args: Array[String]) { - test( - Array(1, 2, 3), - Array(1, 2, 3, 4, 5, 6, 7), - Array(1, -2, 0, -3, -5, -6, -7), - Array(1, 3, -1, -128, 0, 0, -128, 1, 2, 3)) - val rand = new scala.util.Random() - for (i <- 1 until 50000) { - if (i % 100 == 0) println("tested "+i) - var xs = new Array[Byte](i) - rand.nextBytes(xs) - test(xs) - } - println("tested OK") + decode7to8(xs, len) } } diff --git a/test/files/run/bytecodecs.scala b/test/files/run/bytecodecs.scala new file mode 100644 index 0000000000..bf8a0f8ed3 --- /dev/null +++ b/test/files/run/bytecodecs.scala @@ -0,0 +1,39 @@ +import scala.reflect.generic.ByteCodecs._ + +object Test { + + def test8to7(xs: Array[Byte]) { + val ys = encode8to7(xs) + decode7to8(ys, ys.length) + assert(ys.take(xs.length).deep == xs.deep, + "test8to7("+xs.deep+") failed, result = "+ys.take(xs.length).deep) + } + + def testAll(xs: Array[Byte]) { + val ys = encode(xs) + decode(ys) + assert(ys.take(xs.length).deep == xs.deep, + "testAll("+xs.deep+") failed, result = "+ys.take(xs.length).deep) + } + + def test(inputs: Array[Byte]*) { + for (input <- inputs) { + test8to7(input) + testAll(input) + } + } + + def main(args: Array[String]) { + test( + Array(1, 2, 3), + Array(1, 2, 3, 4, 5, 6, 7), + Array(1, -2, 0, -3, -5, -6, -7), + Array(1, 3, -1, -128, 0, 0, -128, 1, 2, 3)) + val rand = new scala.util.Random() + for (i <- 1 until 5000) { + var xs = new Array[Byte](i) + rand.nextBytes(xs) + test(xs) + } + } +} |