summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/reflect/generic/ByteCodecs.scala52
-rw-r--r--test/files/run/bytecodecs.scala39
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)
+ }
+ }
+}