//
// $Id: sb_ForeignID_t.cpp,v 1.4 2000/08/08 21:17:35 mcoletti Exp $
//
#include <cassert>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#include <sdts++/builder/sb_ForeignID.h>
void
testUsageModifier( sb_ForeignID & frid, sb_ForeignID::usage_t ut )
{
sb_ForeignID tmp_frid( frid );
// save the original packed identifier string so that we can
// compare it with ones that have the usage modifier character
// added to it
std::string packed_id;
frid.packedIdentifierString( packed_id );
// now set the usage modifier
tmp_frid.usageModifier( ut );
std::string tmp_packed_id;
assert( tmp_frid.packedIdentifierString( tmp_packed_id ) );
switch ( ut )
{
case sb_ForeignID::none :
cerr << "invalid usage modifier\n";
exit( 1 );
break;
case sb_ForeignID::start_node :
assert( sb_ForeignID::start_node == tmp_frid.usageModifier() );
assert( packed_id + 'S' == tmp_packed_id );
break;
case sb_ForeignID::end_node :
assert( sb_ForeignID::end_node == tmp_frid.usageModifier() );
assert( packed_id + 'E' == tmp_packed_id );
break;
case sb_ForeignID::left_polygon :
assert( sb_ForeignID::left_polygon == tmp_frid.usageModifier() );
assert( packed_id + 'L' == tmp_packed_id );
break;
case sb_ForeignID::right_polygon :
assert( sb_ForeignID::right_polygon == tmp_frid.usageModifier() );
assert( packed_id + 'R' == tmp_packed_id );
break;
case sb_ForeignID::forward_orientation :
assert( sb_ForeignID::forward_orientation == tmp_frid.usageModifier() );
assert( packed_id + 'F' == tmp_packed_id );
break;
case sb_ForeignID::backward_orientation :
assert( sb_ForeignID::backward_orientation == tmp_frid.usageModifier() );
assert( packed_id + 'B' == tmp_packed_id );
break;
case sb_ForeignID::interior_polygon :
assert( sb_ForeignID::interior_polygon == tmp_frid.usageModifier() );
assert( packed_id + 'I' == tmp_packed_id );
break;
case sb_ForeignID::exterior_polygon :
assert( sb_ForeignID::exterior_polygon == tmp_frid.usageModifier() );
assert( packed_id + 'X' == tmp_packed_id );
break;
default :
cerr << "invalid usage modifier\n";
exit( 1 );
break;
}
} // testUsageModifier
int
main( int argc, char** argv )
{
string module_name( "LE01" );
int record_number( 99 );
sb_ForeignID::usage_t usage( sb_ForeignID::none );
// check ctor; set some values and insure accessors return them again
sb_ForeignID frid( module_name, record_number, usage );
assert( module_name == frid.moduleName() );
assert( record_number == frid.recordID() );
assert( sb_ForeignID::none == frid.usageModifier() );
// now insure that the generated packed foreign id string is correct
std::string packed_id( "LE01#99" );
std::string tmp_packed_id;
assert( frid.packedIdentifierString( tmp_packed_id ) );
assert( packed_id == tmp_packed_id );
// now insure that the copy ctor works; similar testing for regular ctor
{
sb_ForeignID tmp_frid( frid );
assert( module_name == tmp_frid.moduleName() );
assert( record_number == tmp_frid.recordID() );
assert( usage == tmp_frid.usageModifier() );
// this includes checking the generated packed ID again
std::string tmp_packed_id;
assert( tmp_frid.packedIdentifierString( tmp_packed_id ) );
assert( packed_id == tmp_packed_id );
}
// now test the hey out of the usage modifier stuff
testUsageModifier( frid, sb_ForeignID::start_node );
testUsageModifier( frid, sb_ForeignID::end_node );
testUsageModifier( frid, sb_ForeignID::left_polygon );
testUsageModifier( frid, sb_ForeignID::right_polygon );
testUsageModifier( frid, sb_ForeignID::forward_orientation );
testUsageModifier( frid, sb_ForeignID::backward_orientation );
testUsageModifier( frid, sb_ForeignID::interior_polygon );
testUsageModifier( frid, sb_ForeignID::exterior_polygon );
exit( 0 );
}
syntax highlighted by Code2HTML, v. 0.9.1