📄 tcmisd.cpp
字号:
// 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 + -