public virtual void test_copyOf_from()
        {
            sbyte[]         bytes = new sbyte[] { 1, 2, 3 };
            ArrayByteSource test  = ArrayByteSource.copyOf(bytes, 1);

            assertEquals(test.size(), 2);
            assertEquals(test.read()[0], 2);
            assertEquals(test.read()[1], 3);
        }
        public virtual void test_from_ByteSource()
        {
            ByteSource      source = ByteSource.wrap(new sbyte[] { 1, 2, 3 });
            ArrayByteSource test   = ArrayByteSource.from(source);

            assertEquals(test.size(), 3);
            assertEquals(test.read()[0], 1);
            assertEquals(test.read()[1], 2);
            assertEquals(test.read()[2], 3);
        }
        public virtual void test_from_Supplier()
        {
            ByteSource      source = ByteSource.wrap(new sbyte[] { 1, 2, 3 });
            ArrayByteSource test   = ArrayByteSource.from(() => source.openStream());

            assertEquals(test.size(), 3);
            assertEquals(test.read()[0], 1);
            assertEquals(test.read()[1], 2);
            assertEquals(test.read()[2], 3);
        }
        public virtual void test_readUnsafe()
        {
            ArrayByteSource test = ArrayByteSource.copyOf(new sbyte[] { 1, 2, 3 });

            assertEquals(test.size(), 3);
            sbyte[] unsafeArray = test.readUnsafe();
            unsafeArray[0] = 4;     // abusing the unsafe array
            assertEquals(test.read()[0], 4);
            assertEquals(test.read()[1], 2);
            assertEquals(test.read()[2], 3);
        }
        //-------------------------------------------------------------------------
        public virtual void test_read()
        {
            ArrayByteSource test = ArrayByteSource.copyOf(new sbyte[] { 1, 2, 3 });

            assertEquals(test.size(), 3);
            sbyte[] safeArray = test.read();
            safeArray[0] = 4;
            assertEquals(test.read()[0], 1);
            assertEquals(test.read()[1], 2);
            assertEquals(test.read()[2], 3);
        }
        public virtual void test_ofUnsafe()
        {
            sbyte[]         bytes = new sbyte[] { 1, 2, 3 };
            ArrayByteSource test  = ArrayByteSource.ofUnsafe(bytes);

            assertEquals(test.size(), 3);
            assertEquals(test.read()[0], 1);
            assertEquals(test.read()[1], 2);
            assertEquals(test.read()[2], 3);
            bytes[0] = 4;     // abusing the unsafe factory
            assertEquals(test.read()[0], 4);
        }