//
// sio_8211DDRLeader_t.cpp
//
// $Id: sio_8211DDRLeader_t.cpp,v 1.5 2002/11/27 00:21:34 mcoletti Exp $
//

#include <iostream>
#include <strstream>

#include <cassert>


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

using namespace std;


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


int main(int argc, char** argv)
{
	
  sio_8211DDRLeader ddr_leader;

  // insure that the leader got created with sane values

  assert( 'L' == ddr_leader.getLeaderIdentifier() );
  assert( 0   == ddr_leader.getRecordLength() );
  assert( 0   == ddr_leader.getBaseAddrOfFieldArea() );
  assert( 0   == ddr_leader.getSizeOfFieldLengthField() );
  assert( 0   == ddr_leader.getSizeOfFieldPosField() );
  assert( 0   == ddr_leader.getSizeOfFieldTagField() );
  assert( 6   == ddr_leader.getFieldControlLength() ); // this is hard-set to 6

  // check the set functions

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

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


  // check stream I/O functions

  strstream ss;

  ss << ddr_leader;


  sio_8211DDRLeader second_ddr_leader;

  ss >> second_ddr_leader;


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

  assert( 'X' == second_ddr_leader.getLeaderIdentifier() );
  assert( 1   == second_ddr_leader.getRecordLength() );
  assert( 2   == second_ddr_leader.getBaseAddrOfFieldArea() );
  assert( 3   == second_ddr_leader.getSizeOfFieldLengthField() );
  assert( 4   == second_ddr_leader.getSizeOfFieldPosField() );
  assert( 5   == second_ddr_leader.getSizeOfFieldTagField() );
  assert( 6   == second_ddr_leader.getFieldControlLength() ); // this is hard-set to 6


  return 0; 
}



syntax highlighted by Code2HTML, v. 0.9.1