{
//
// test immediate close
//
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
ArmoredOutputStream aOut = new ArmoredOutputStream(bOut);
aOut.close();
byte[] data = bOut.toByteArray();
if (data.length != 0)
{
fail("No data should have been written");
}
//
// multiple close
//
bOut = new ByteArrayOutputStream();
aOut = new ArmoredOutputStream(bOut);
aOut.write(sample);
aOut.close();
aOut.close();
int mc = markerCount(bOut.toByteArray());
if (mc < 1)
{
fail("No end marker found");
}
if (mc > 1)
{
fail("More than one end marker found");
}
//
// writing and reading single objects
//
bOut = new ByteArrayOutputStream();
aOut = new ArmoredOutputStream(bOut);
aOut.write(sample);
aOut.close();
ArmoredInputStream aIn = new ArmoredInputStream(new ByteArrayInputStream(bOut.toByteArray()));
PGPObjectFactory fact = new PGPObjectFactory(aIn);
int count = 0;
while (fact.nextObject() != null)
{
count++;
}
if (count != 1)
{
fail("wrong number of objects found: " + count);
}
//
// writing and reading multiple objects - in single block
//
bOut = new ByteArrayOutputStream();
aOut = new ArmoredOutputStream(bOut);
aOut.write(sample);
aOut.write(sample);
aOut.close();
aIn = new ArmoredInputStream(new ByteArrayInputStream(bOut.toByteArray()));
fact = new PGPObjectFactory(aIn);
count = 0;
while (fact.nextObject() != null)
{
count++;
}
if (count != 2)
{
fail("wrong number of objects found: " + count);
}
//
// writing and reading multiple objects - in single block
//
bOut = new ByteArrayOutputStream();
aOut = new ArmoredOutputStream(bOut);
aOut.write(sample);
aOut.close(); // does not close underlying stream
aOut = new ArmoredOutputStream(bOut);
aOut.write(sample);
aOut.close();
aIn = new ArmoredInputStream(new ByteArrayInputStream(bOut.toByteArray()));
count = 0;
boolean atLeastOne;