1/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */ 2package com.jcraft.jzlib 3 4import org.junit.runner.RunWith 5import org.junit.runners.JUnit4 6import org.junit.{Test, Before} 7import org.junit.Assert._ 8import org.hamcrest.CoreMatchers._ 9 10import java.io.{ByteArrayOutputStream => BAOS, ByteArrayInputStream => BAIS} 11 12import JZlib._ 13 14@RunWith(classOf[JUnit4]) 15class DeflaterInflaterStreamTest { 16 17 @Before 18 def setUp = { 19 } 20 21 @Test 22 def one_by_one = { 23 val data1 = randombuf(1024) 24 implicit val buf = new Array[Byte](1) 25 26 val baos = new BAOS 27 val gos = new DeflaterOutputStream(baos) 28 data1 -> gos 29 gos.close 30 31 val baos2 = new BAOS 32 new InflaterInputStream(new BAIS(baos.toByteArray)) -> baos2 33 val data2 = baos2.toByteArray 34 35 assertThat(data2.length, is(data1.length)) 36 assertThat(data2, is(data1)) 37 } 38 39 @Test 40 def read_write_with_buf = { 41 42 (1 to 100 by 3).foreach { i => 43 44 implicit val buf = new Array[Byte](i) 45 46 val data1 = randombuf(10240) 47 48 val baos = new BAOS 49 val gos = new DeflaterOutputStream(baos) 50 data1 -> gos 51 gos.close 52 53 val baos2 = new BAOS 54 new InflaterInputStream(new BAIS(baos.toByteArray)) -> baos2 55 val data2 = baos2.toByteArray 56 57 assertThat(data2.length, is(data1.length)) 58 assertThat(data2, is(data1)) 59 } 60 } 61 62 @Test 63 def read_write_with_buf_nowrap = { 64 65 (1 to 100 by 3).foreach { i => 66 67 implicit val buf = new Array[Byte](i) 68 69 val data1 = randombuf(10240) 70 71 val baos = new BAOS 72 val deflater = new Deflater(JZlib.Z_DEFAULT_COMPRESSION, 73 JZlib.DEF_WBITS, 74 true) 75 val gos = new DeflaterOutputStream(baos, deflater) 76 data1 -> gos 77 gos.close 78 79 val baos2 = new BAOS 80 val inflater = new Inflater(JZlib.DEF_WBITS, true) 81 new InflaterInputStream(new BAIS(baos.toByteArray), inflater) -> baos2 82 val data2 = baos2.toByteArray 83 84 assertThat(data2.length, is(data1.length)) 85 assertThat(data2, is(data1)) 86 } 87 } 88 89 @Test 90 def read_write_with_nowrap = { 91 implicit val buf = new Array[Byte](100) 92 93 List(randombuf(10240), 94 """{"color":2,"id":"EvLd4UG.CXjnk35o1e8LrYYQfHu0h.d*SqVJPoqmzXM::Ly::Snaps::Store::Commit"}""".getBytes) foreach { data1 => 95 96 val deflater = new Deflater(JZlib.Z_DEFAULT_COMPRESSION, 97 JZlib.MAX_WBITS, 98 true) 99 100 val inflater = new Inflater(JZlib.MAX_WBITS, true) 101 102 val baos = new BAOS 103 val gos = new DeflaterOutputStream(baos, deflater) 104 data1 -> gos 105 gos.close 106 107 val baos2 = new BAOS 108 new InflaterInputStream(new BAIS(baos.toByteArray), inflater) -> baos2 109 val data2 = baos2.toByteArray 110 111 assertThat(data2.length, is(data1.length)) 112 assertThat(data2, is(data1)) 113 } 114 } 115} 116