// Path: src/main/java/com/github/davidmoten/rx2/util/ZippedEntry.java
// public final class ZippedEntry {
// 
//     final String name; // entry name
//     final long time; // last modification time
//     // final FileTime mtime; // last modification time, from extra field data
//     // final FileTime atime; // last access time, from extra field data
//     // final FileTime ctime; // creation time, from extra field data
//     final long crc; // crc-32 of entry data
//     final long size; // uncompressed size of entry data
//     final long csize; // compressed size of entry data
//     final int method; // compression method
//     final byte[] extra; // optional extra field data for entry
//     final String comment; // optional comment string for entry
//     private final InputStream is;
// 
//     public ZippedEntry(ZipEntry e, InputStream is) {
//         this.name = e.getName();
//         this.time = e.getTime();
//         // this.mtime = e.getLastModifiedTime();
//         // this.atime = e.getLastAccessTime();
//         // this.ctime = e.getCreationTime();
//         this.crc = e.getCrc();
//         this.size = e.getSize();
//         this.csize = e.getCompressedSize();
//         this.method = e.getMethod();
//         this.extra = e.getExtra();
//         this.comment = e.getComment();
//         this.is = is;
//     }
// 
//     public InputStream getInputStream() {
//         return is;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public long getTime() {
//         return time;
//     }
// 
//     // public FileTime getLastModifiedTime() {
//     // return mtime;
//     // }
// 
//     // public FileTime getLastAccessTime() {
//     // return atime;
//     // }
// 
//     // public FileTime getCreatedtime() {
//     // return ctime;
//     // }
// 
//     public long getCrc() {
//         return crc;
//     }
// 
//     public long getSize() {
//         return size;
//     }
// 
//     public long getCompressedSize() {
//         return csize;
//     }
// 
//     public int getMethod() {
//         return method;
//     }
// 
//     public byte[] getExtra() {
//         return extra;
//     }
// 
//     public String getComment() {
//         return comment;
//     }
// 
// }


import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import org.junit.Test;
import com.github.davidmoten.junit.Asserts;
import com.github.davidmoten.rx2.util.ZippedEntry;
import io.reactivex.Flowable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;
                .assertError(FileNotFoundException.class);
    }

    @Test
    public void testBytesFromInputStreamDefaultBufferSize() {
        String s = "hello there";
        Bytes.from(new ByteArrayInputStream(s.getBytes(Strings.UTF_8))) //
                .to(Bytes.collect()) //
                .map(new Function<byte[], String>() {

                    @Override
                    public String apply(byte[] b) throws Exception {
                        return new String(b, Strings.UTF_8);
                    }
                }) //
                .test().assertValue("hello there") //
                .assertComplete();
    }

    @Test
    public void testBytesFromFileDefaultBufferSize() throws IOException {
        File file = new File("target/testFromFile");
        file.delete();
        FileOutputStream out = new FileOutputStream(file);
        out.write("abcdefg".getBytes());
        out.close();
        final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        Bytes //
                .from(file) //
                .doOnNext(new Consumer<byte[]>() {
// Path: src/main/java/com/github/davidmoten/rx2/util/ZippedEntry.java
// public final class ZippedEntry {
// 
//     final String name; // entry name
//     final long time; // last modification time
//     // final FileTime mtime; // last modification time, from extra field data
//     // final FileTime atime; // last access time, from extra field data
//     // final FileTime ctime; // creation time, from extra field data
//     final long crc; // crc-32 of entry data
//     final long size; // uncompressed size of entry data
//     final long csize; // compressed size of entry data
//     final int method; // compression method
//     final byte[] extra; // optional extra field data for entry
//     final String comment; // optional comment string for entry
//     private final InputStream is;
// 
//     public ZippedEntry(ZipEntry e, InputStream is) {
//         this.name = e.getName();
//         this.time = e.getTime();
//         // this.mtime = e.getLastModifiedTime();
//         // this.atime = e.getLastAccessTime();
//         // this.ctime = e.getCreationTime();
//         this.crc = e.getCrc();
//         this.size = e.getSize();
//         this.csize = e.getCompressedSize();
//         this.method = e.getMethod();
//         this.extra = e.getExtra();
//         this.comment = e.getComment();
//         this.is = is;
//     }
// 
//     public InputStream getInputStream() {
//         return is;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public long getTime() {
//         return time;
//     }
// 
//     // public FileTime getLastModifiedTime() {
//     // return mtime;
//     // }
// 
//     // public FileTime getLastAccessTime() {
//     // return atime;
//     // }
// 
//     // public FileTime getCreatedtime() {
//     // return ctime;
//     // }
// 
//     public long getCrc() {
//         return crc;
//     }
// 
//     public long getSize() {
//         return size;
//     }
// 
//     public long getCompressedSize() {
//         return csize;
//     }
// 
//     public int getMethod() {
//         return method;
//     }
// 
//     public byte[] getExtra() {
//         return extra;
//     }
// 
//     public String getComment() {
//         return comment;
//     }
// 
// }


// Path: src/test/java/com/github/davidmoten/rx2/BytesTest.java
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import org.junit.Test;
import com.github.davidmoten.junit.Asserts;
import com.github.davidmoten.rx2.util.ZippedEntry;
import io.reactivex.Flowable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;

                .assertError(FileNotFoundException.class);
    }

    @Test
    public void testBytesFromInputStreamDefaultBufferSize() {
        String s = "hello there";
        Bytes.from(new ByteArrayInputStream(s.getBytes(Strings.UTF_8))) //
                .to(Bytes.collect()) //
                .map(new Function<byte[], String>() {

                    @Override
                    public String apply(byte[] b) throws Exception {
                        return new String(b, Strings.UTF_8);
                    }
                }) //
                .test().assertValue("hello there") //
                .assertComplete();
    }

    @Test
    public void testBytesFromFileDefaultBufferSize() throws IOException {
        File file = new File("target/testFromFile");
        file.delete();
        FileOutputStream out = new FileOutputStream(file);
        out.write("abcdefg".getBytes());
        out.close();
        final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        Bytes //
                .from(file) //
                .doOnNext(new Consumer<byte[]>() {
                    @Override