//
// sio_8211DDRLeader_t.cpp
//


#include <iostream>
#include <strstream>

#include <cassert>


#ifdef _MSC_VER
#pragma warning(disable:4786)
#endif


using namespace std;


#include <sdts++/io/sio_8211DRLeader.h>


int main(int argc, char** argv)
{
	
  sio_8211DRLeader dr_leader;

  // insure that the leader got created with sane values

  assert( 'D' == dr_leader.getLeaderIdentifier() );
  assert( 0   == dr_leader.getRecordLength() );
  assert( 0   == dr_leader.getBaseAddrOfFieldArea() );
  assert( 0   == dr_leader.getSizeOfFieldLengthField() );
  assert( 0   == dr_leader.getSizeOfFieldPosField() );
  assert( 0   == dr_leader.getSizeOfFieldTagField() );

  // check the set functions

  dr_leader.setLeaderIdentifier( 'X' );
  dr_leader.setRecordLength( 1 );
  dr_leader.setBaseAddrOfFieldArea( 2 );
  dr_leader.setSizeOfFieldLengthField( 3 );
  dr_leader.setSizeOfFieldPosField( 4 );
  dr_leader.setSizeOfFieldTagField( 5 );

  assert( 'X' == dr_leader.getLeaderIdentifier() );
  assert( 1   == dr_leader.getRecordLength() );
  assert( 2   == dr_leader.getBaseAddrOfFieldArea() );
  assert( 3   == dr_leader.getSizeOfFieldLengthField() );
  assert( 4   == dr_leader.getSizeOfFieldPosField() );
  assert( 5   == dr_leader.getSizeOfFieldTagField() );


  // check stream I/O functions

  strstream ss;

  ss << dr_leader;


  sio_8211DRLeader second_dr_leader;

  ss >> second_dr_leader;


  // the second DDR leader should be the same as the first

  assert( 'X' == second_dr_leader.getLeaderIdentifier() );
  assert( 1   == second_dr_leader.getRecordLength() );
  assert( 2   == second_dr_leader.getBaseAddrOfFieldArea() );
  assert( 3   == second_dr_leader.getSizeOfFieldLengthField() );
  assert( 4   == second_dr_leader.getSizeOfFieldPosField() );
  assert( 5   == second_dr_leader.getSizeOfFieldTagField() );



  return 0; 
}



syntax highlighted by Code2HTML, v. 0.9.1