public void testArrayConstructor()
        {
            var u = new UnionInputStream(
                new MemoryStream(new byte[] { 1, 0, 2 }),
                new MemoryStream(new byte[] { 3 }),
                new MemoryStream(new byte[] { 4, 5 }));

            var r = new byte[5];
            Assert.AreEqual(5, u.Read(r, 0, 5));
            Assert.IsTrue(r.SequenceEqual(new byte[] { 1, 0, 2, 3, 4 }));
            Assert.AreEqual(1, u.Read(r, 0, 5));
            Assert.AreEqual(5, r[0]);
            Assert.AreEqual(-1, u.Read(r, 0, 5));
        }
 public void testEmptyStream()
 {
     var u = new UnionInputStream();
     Assert.IsTrue(u.isEmpty());
     Assert.AreEqual(-1, u.read());
     Assert.AreEqual(-1, u.Read(new byte[1], 0, 1));
     Assert.AreEqual(0, u.available());
     Assert.AreEqual(0, u.skip(1));
     u.Close();
 }
        public void testReadByteBlocks()
        {
            var u = new UnionInputStream();
            u.add(new MemoryStream(new byte[] { 1, 0, 2 }));
            u.add(new MemoryStream(new byte[] { 3 }));
            u.add(new MemoryStream(new byte[] { 4, 5 }));

            var r = new byte[5];
            Assert.AreEqual(5, u.Read(r, 0, 5));
            Assert.IsTrue(r.SequenceEqual(new byte[] { 1, 0, 2, 3, 4 }));
            Assert.AreEqual(1, u.Read(r, 0, 5));
            Assert.AreEqual(5, r[0]);
            Assert.AreEqual(-1, u.Read(r, 0, 5));
        }