public void testEncKrbCredPart() throws Exception
{
int size = optionalFieldValueList.size();
for ( int i = 0; i < size; i++ )
{
EncKrbCredPart expected = new EncKrbCredPart();
expected.setTicketInfo( ticketInfo );
Map<String, Field> EncKrbCrePartFieldNameMap = getFieldMap( expected );
List<FieldValueHolder> presentFieldList = new ArrayList<FieldValueHolder>();
FieldValueHolder fieldValHolder = optionalFieldValueList.get( i );
presentFieldList.add( fieldValHolder );
Field f = EncKrbCrePartFieldNameMap.get( Strings.toLowerCase( fieldValHolder.fieldName ) );
f.set( expected, fieldValHolder.value );
for ( int j = i + 1; j < size; j++ )
{
fieldValHolder = optionalFieldValueList.get( j );
presentFieldList.add( fieldValHolder );
f = EncKrbCrePartFieldNameMap.get( Strings.toLowerCase( fieldValHolder.fieldName ) );
f.set( expected, fieldValHolder.value );
}
ByteBuffer stream = ByteBuffer.allocate( expected.computeLength() );
expected.encode( stream );
stream.flip();
Asn1Decoder decoder = new Asn1Decoder();
EncKrbCredPartContainer container = new EncKrbCredPartContainer( stream );
try
{
decoder.decode( stream, container );
}
catch ( DecoderException e )
{
// NOTE: keep this sysout for easy debugging (no need to setup a logger)
System.out.println( "failed sequence:\n" + expected );
throw e;
}
EncKrbCredPart actual = container.getEncKrbCredPart();
assertValues( presentFieldList, actual );
}
}