public void testIt() throws Exception {
    MyByteArrayOutputStream myByteArrayOutputStream = new MyByteArrayOutputStream();
    myByteArrayOutputStream.write(new byte[] {4, 10});
    assertEquals(2, myByteArrayOutputStream.size());
    assertEquals(4, myByteArrayOutputStream.deleteFirst());

    assertEquals(1, myByteArrayOutputStream.size());
    assertEquals(10, myByteArrayOutputStream.deleteFirst());

    assertEquals(0, myByteArrayOutputStream.size());

    myByteArrayOutputStream.write(new byte[] {1, 2, 3, 4});
    byte[] b = new byte[2];
    assertEquals(2, myByteArrayOutputStream.delete(b, 0, 2));
    assertEquals(1, b[0]);
    assertEquals(2, b[1]);
    assertEquals(2, myByteArrayOutputStream.size());

    assertEquals(2, myByteArrayOutputStream.delete(b, 0, 2));
    assertEquals(3, b[0]);
    assertEquals(4, b[1]);
    assertEquals(0, myByteArrayOutputStream.size());

    assertEquals(0, myByteArrayOutputStream.delete(b, 0, 2));
    myByteArrayOutputStream.write(new byte[] {7});

    assertEquals(1, myByteArrayOutputStream.delete(b, 0, 2));
    assertEquals(7, b[0]);

    b = new byte[1024];
    myByteArrayOutputStream.write(new byte[] {1, 2, 3, 4});
    assertEquals(4, myByteArrayOutputStream.delete(b, 0, 1024));

    myByteArrayOutputStream.write(new byte[] {1, 2});
    assertEquals(2, myByteArrayOutputStream.delete(b, 0, 1024));

    myByteArrayOutputStream = new MyByteArrayOutputStream(5);
    myByteArrayOutputStream.write(new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
    assertEquals(10, myByteArrayOutputStream.delete(b, 512, 1024));
  }