⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcmisd.cpp

📁 李刚 请赶快放开我的权限 我上载的源码都是很精湛的,请查阅,qing请加我 li_xue_ming@msn.com必要的话可以和我在线沟通
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// tcmisd.cpp
//

#include "tcmisd.h"

#include <cstdlib>
#include <cctype>
#include <sstream>
#include <iostream>
#include <fstream>
using namespace std;


//
// CTestCmisd实现

void CTestCmisd::WaitForNextTest( LPCSTR pszHint )
{
	cout << pszHint << endl << endl;
	getchar();
}

void CTestCmisd::Test()
{

  CAsnType *pCmps[MAX_ELEMENT] = {NULL};
  int iCmpsEleNum;

  TestComposeStruct( 0, iCmpsEleNum, pCmps );
  return;

  TestNewInstance ();

	TestAttributeId();
	TestAttribute();
  TestAttributeList();
	TestRDN();
	TestDN();
	TestFilter();
	TestGetReqArgument();

}

void CTestCmisd::TestAttributeId()
{
	cout << "Test CAttributeId : ........................................" << endl;

	CAttributeId aid1;
	aid1.Set( 100 );
	cout << "aid1 :		" << aid1.GetLocalForm() << endl;
	cout << "aid1 :		" << aid1.GetInteger().Get() << endl;
	aid1.GetInteger() = 3006;
	cout << "aid1.GetInteger() = 3006, aid1 is :	" << (ASNINTEGERTYPE)aid1 << endl;

	CAttributeId aid2;
	aid2.Set( 3, 2, 1, 2342 );
	CAsnObjectIdentifier & cOid = aid2.GetObjectIdentifier();
	CHAR str[11];
	cOid.Get( str, 10 );
	cout << "aid2 is : " << str << endl;

	aid2.ChoiceLocalForm();
	aid2.GetInteger() = 3007;
	cout << "aid2.ChoiceLocalForm(), GetInteger() = 3007, aid2 is : " 
		<< (ASNINTEGERTYPE)(aid2.GetInteger()) << endl;

	CAsnObjectIdentifier cOid2( "2 : 0 : 2543" );
	aid1.ChoiceGlobalForm();
	aid1.GetObjectIdentifier() = cOid2;
	aid1.Get( str, 10 );
	cout << "aid1.ChoiceGlobalForm(), GetObjectIdentifier() = ..., aid1 is : "
		<< str << endl;

/**/	CAsnBuffer b;
	CAttributeId aid3;
	PrintMsg( (LPSTR)"aid1 Encode : " );
 	if ( aid1.Serialize( b, TRUE ) )
    {
 		b.Dump(g_OmcDump);
    }
	cout << "aid3 Decode : " << endl;
	if ( aid3.Serialize( b, FALSE ) )
	{
		CAsnObjectIdentifier & oid3 = aid3.GetObjectIdentifier();
		cout << "aid3 length is : " << oid3.GetSize() << endl;
		cout << "aid3 is : " << (INT)oid3[0] << ':' << (INT)oid3[1] << ':' 
			<< (INT)oid3[2] << endl;
		cout << "aid1 == aid3 : " << ( aid1 == aid3 ) << endl;
        aid3.Dump( g_OmcDump );
	}

	cout << "aid2 Encode : " ;
	if ( aid2.Serialize( b, TRUE ) )
    {
		b.Dump(g_OmcDump);
    }
	cout << "aid3 Decode : " << endl;
	if ( aid3.Serialize( b, FALSE ) )
	{
		cout << "aid3 is INTEGER : " << aid3.IsIntegerChoiced() << endl;
		cout << "aid3 is : " << aid3.GetLocalForm() << endl;
		cout << "aid2 == aid3 : " << ( aid2 == aid3 ) << endl;
        aid3.Dump( g_OmcDump );
	}
/**/
	WaitForNextTest( "CAttributeId has tested ! \0 " );
}

void CTestCmisd::TestAttribute()
{
	cout << "Test CAttribute : ........................................" << endl;

	CAttribute a1;
	CAsnInteger * pi = new CAsnInteger( 234 );
	a1.Set( 100, pi );
	cout << "a1.Set( 100, INT(234) ), a1.id is : " << a1.GetLocalForm() 
		<< "; a1.value is : " << ((CAsnInteger*)(a1.GetValue()))->Get() << endl;

	CAttribute ax;
	BYTE str[] = { 0x02, 0x02, 0, 0xD3};
	a1.SetValue( str, 4, TRUE );

    ASNINTEGERTYPE nValueType = a1.GetValueType();
    cout << "value type is " << nValueType << endl;

/**/	CAsnBuffer b;
	cout << "a1 Encode : " ;
	if ( a1.Serialize( b, TRUE ) )
    {
		b.Dump(g_OmcDump);
    }
	cout << "ax Decode : " << endl;
	if ( ax.Serialize( b, FALSE ) )
	{
		cout << "ax.id is : " << ax.GetLocalForm() << endl;

        cout << "ax.value is : " << ((CAsnInteger*)(ax.GetValue()))->Get() << endl;
		cout << "a1 == ax : " << ( a1 == ax ) << endl;
        ax.Dump( g_OmcDump );
		
        LPBYTE val;
		ASNLENGTH len;
		ax.GetValue( val, len );
		cout << "ax.value encode is : " ;
		for ( INT i=0; i<2; i++ )
			cout << (INT)val[i] << ' ';
		cout << (INT)val[3] << endl;
	}
/**/

	WaitForNextTest( "CAttribute has tested ! \0 " );
}

void CTestCmisd::TestAttributeList()
{
	cout << "Test CAttributeList : ........................................" << endl;

    CAttributeList al1;
    POSITION pos;
    CAttribute* pa = al1.NewElement( pos );
    ASSERT( pa );
    pa->Set( 100, CAsnInteger( 1212 ) );
    cout << "al1 NewElement at tail, al1 is : " << endl;
    al1.Dump( g_OmcDump );
    cout << endl;

    pa = al1.NewElement( pos, FALSE );
    ASSERT( pa );
    pa->Set( 3005, new CAsnBoolean( TRUE ) );
    cout << "al1 NewElement at head, al1 is : " << endl;
    al1.Dump( g_OmcDump );
    cout << endl;

    CAttributeList al2 = al1;
    cout << "al2 = al1 : " << (al1 == al2 ) << endl;

    CAttributeList al3;
    al3 += al1;
    cout << "al3 += al1, al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;

    al3 += *pa;
    cout << "al3 += *pa, al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;
    CAttribute* pa2 = new CAttribute(*pa);
    al3 += pa2;
    cout << "al3 += pa2, al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;

    cout << "al3 search aid 3005 : \n";
    CAttributeId ai(3005);
    INT nIndex = 0;
    pos = al3.GetHeadValuePosition( ai );
    while ( pos != NULL )
    {
        cout << "al3 found No" << nIndex++ << ", value is : " << endl;
        CAsnBoolean * pb = (CAsnBoolean*)(al2.GetNextValue( ai, pos ));
        ASSERT( pb );
        pb->Dump( g_OmcDump );
        cout << endl;
    }

    cout << "al3 present pa : " << al3.IsPresent( *pa ) << endl;
    cout << "al3 present ai(" << ai.GetLocalForm() << ") : " << al3.IsPresent( ai ) << endl;

    cout << "al3 element count is " << al3.GetCount() << endl;
    al3.RemoveElement( ai );
    cout << "al3 remove element ai(" << ai.GetLocalForm() 
        << "), al3 element count is " << al3.GetCount() << ", al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;

    cout << "al2 == al3 : " << (al2 == al3 ) << endl;

    al3.AddHeadElement( *pa );
    al3.AddTailElement( new CAttribute(*pa) );
    cout << "al3 add head and tail element, count is " << al3.GetCount() << endl;

    CAttributeList * pal = new CAttributeList(al3);
    cout << "*pal == al3 : " << ( *pal == al3 ) << endl;
    al3.AddTailElement( pal );
    cout << "al3 add tail pal, al3 count is " << al3.GetCount() << ", al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;
    cout << "pal count is " << pal->GetCount() << ", pal is : " << endl;
    pal->Dump( g_OmcDump );
    cout << endl;
    delete pal;

    al3.RemoveTailElement();
    cout << "al3 remove tail element, al3 count is " << al3.GetCount() << ", al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;

    pos = al3.FindElementIndex( al3.GetCount() - 1 );
    ASSERT( pos != NULL );
    al3.RemoveElement( *(al3.GetElementAt( pos )) );
    cout << "al3 remove element, al3 count is " << al3.GetCount() << ", al3 is : " << endl;
    al3.Dump( g_OmcDump );
    cout << endl;

    cout << "al2 is equal al3 : " << (al2.IsEqual( al3 ) ) << endl;
    cout << "al2 is subset of al3 : " << ( al2.IsSubSetOf( al3 ) ) << endl;
    cout << "al2 is superset of al3 : " << ( al2.IsSuperSetOf( al3 ) ) << endl;
    cout << "al2 has intersection with al3 : " << ( al2.HasIntersection( al3 ) ) << endl;

/**/    CAsnBuffer b;
    cout << "al3 encode : ";
    if ( al3.Serialize( b, TRUE ) )
        b.Dump( g_OmcDump );
    CAttributeList al4;
    cout << "al4 decode : ";
    if ( al4.Serialize( b, FALSE ) )
    {
        cout << "al3 == al4 : " << ( al3 == al4 ) << endl;
        al4.Dump( g_OmcDump );
    }
/**/    

    BYTE byTemp[] = { 0x30, 0x15, 0x31, 0x08, 0x30, 0x06, 0x02, 0x01, 
        0x64 , 0x02, 0x01, 0x01, 0x31, 0x09, 0x30, 0x07, 0x02, 0x02, 
        0x04, 0x33, 0x02, 0x01, 0x01 };
    CAsnBuffer cTempBuffer( byTemp, sizeof(byTemp) );
    CDN cTempDN;
    ASSERT( cTempDN.Serialize( cTempBuffer, FALSE ) );

	WaitForNextTest( "CAttributeList has tested ! \0 " );
}

void CTestCmisd::TestRDN()
{
	cout << "Test CRDN : ........................................" << endl;

    CRDN rdn1;
    POSITION pos;
    CAttribute* pa = rdn1.NewElement( pos );
    ASSERT( pa );
    pa->Set( 100, CAsnInteger( 1212 ) );
    cout << "rdn1 NewElement at tail, rdn1 is : " << endl;
    rdn1.Dump( g_OmcDump );
    cout << endl;

    pa = rdn1.NewElement( pos, FALSE );
    ASSERT( pa );
    pa->Set( 3005, new CAsnBoolean( TRUE ) );
    cout << "rdn1 NewElement at head, rdn1 is : " << endl;
    rdn1.Dump( g_OmcDump );
    cout << endl;

    CRDN rdn2 = rdn1;
    cout << "rdn2 = rdn1 : " << (rdn1 == rdn2 ) << endl;

    CRDN rdn3;
    rdn3 += rdn1;
    cout << "rdn3 += rdn1, rdn3 is : " << endl;
    rdn3.Dump( g_OmcDump );
    cout << endl;

    rdn3 += *pa;
    cout << "rdn3 += *pa, rdn3 is : " << endl;
    rdn3.Dump( g_OmcDump );
    cout << endl;
    CAttribute* pa2 = new CAttribute(*pa);
    rdn3 += pa2;
    cout << "rdn3 += pa2, rdn3 is : " << endl;
    rdn3.Dump( g_OmcDump );
    cout << endl;

    cout << "rdn3 search aid 3005 : \n";
    CAttributeId ai(3005);
    INT nIndex = 0;
    pos = rdn3.GetHeadValuePosition( ai );
    while ( pos != NULL )
    {
        cout << "rdn3 found No" << nIndex++ << ", value is : " << endl;
        CAsnBoolean * pb = (CAsnBoolean*)(rdn2.GetNextValue( ai, pos ));
        ASSERT( pb );
        pb->Dump( g_OmcDump );
        cout << endl;
    }

    cout << "rdn3 present pa : " << rdn3.IsPresent( *pa ) << endl;
    cout << "rdn3 present ai(" << ai.GetLocalForm() << ") : " << rdn3.IsPresent( ai ) << endl;

    cout << "rdn3 element count is " << rdn3.GetCount() << endl;
    rdn3.RemoveElement( ai );
    cout << "rdn3 remove element ai(" << ai.GetLocalForm() 
        << "), rdn3 element count is " << rdn3.GetCount() << ", rdn3 is : " << endl;
    rdn3.Dump( g_OmcDump );
    cout << endl;

    cout << "rdn2 == rdn3 : " << (rdn2 == rdn3 ) << endl;

    rdn3.AddHeadElement( *pa );
    rdn3.AddTailElement( new CAttribute(*pa) );
    cout << "rdn3 add head and tail element, count is " << rdn3.GetCount() << endl;

    CRDN * pal = new CRDN(rdn3);
    cout << "*pal == rdn3 : " << ( *pal == rdn3 ) << endl;
    rdn3.AddTailElement( pal );
    cout << "rdn3 add tail pal, rdn3 count is " << rdn3.GetCount() << ", rdn3 is : " << endl;
    rdn3.Dump( g_OmcDump );
    cout << endl;
    cout << "pal count is " << pal->GetCount() << ", pal is : " << endl;
    pal->Dump( g_OmcDump );
    cout << endl;
    delete pal;

    rdn3.RemoveTailElement();
    cout << "rdn3 remove tail element, rdn3 count is " << rdn3.GetCount() << ", rdn3 is : " << endl;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -