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

📄 testmarshalling2.cpp

📁 Software Testing Automation Framework (STAF)的开发代码
💻 CPP
字号:
/*****************************************************************************/
/* Software Testing Automation Framework (STAF)                              */
/* (C) Copyright IBM Corp. 2001                                              */
/*                                                                           */
/* This software is licensed under the Common Public License (CPL) V1.0.     */
/*****************************************************************************/

#include "STAF.h"
#include "STAF_iostream.h"
#include "STAFDataTypes.h"

// The purpose of this program is to simply create some basic data structures
// and validate the output of the size() and asString() methods.

int main(void)
{
    STAFObjectPtr masterList = STAFObject::createList();

    STAFObjectPtr none = STAFObject::createNone();

    masterList->append(none);

    STAFObjectPtr aString = STAFObject::createScalar("Hello world");

    masterList->append(aString);

    STAFObjectPtr aList = STAFObject::createList();

    aList->append("String1");
    aList->append("String2");
    aList->append("String3");
    aList->append("String4");
    aList->append("String5");

    masterList->append(aList);

    STAFObjectPtr aSimpleMap = STAFObject::createMap();

    aSimpleMap->put("key1", "value1");
    aSimpleMap->put("key2", "value2");
    aSimpleMap->put("key3", "value3");
    aSimpleMap->put("key4", "value4");

    masterList->append(aSimpleMap);

    STAFMapClassDefinitionPtr simpleMapClassDef =
        STAFMapClassDefinition::create("STAF/Test/TestMC2/TestMC2MapClass");

    simpleMapClassDef->addKey("key1", "Key 1");
    simpleMapClassDef->addKey("key2", "Key 2");
    simpleMapClassDef->addKey("key3", "Key 3");

    STAFObjectPtr aMapClassInstance = simpleMapClassDef->createInstance();

    aMapClassInstance->put("key1", "value1");
    aMapClassInstance->put("key2", "value2");
    aMapClassInstance->put("key3", "value3");

    masterList->append(aMapClassInstance);

    STAFObjectPtr aContext = STAFObject::createMarshallingContext();

    STAFMapClassDefinitionPtr mapClassDef1 =
        STAFMapClassDefinition::create("STAF/Test/TestMC2/SimpleMapClass1");

    mapClassDef1->addKey("key1", "Key 1");

    STAFMapClassDefinitionPtr mapClassDef2 =
        STAFMapClassDefinition::create("STAF/Test/TestMC2/SimpleMapClass2");

    mapClassDef2->addKey("key1", "Key 1");

    aContext->setMapClassDefinition(mapClassDef1);
    aContext->setMapClassDefinition(mapClassDef2);

    masterList->append(aContext);

    for (STAFObjectIteratorPtr iter = masterList->iterate();
         iter->hasNext();)
    {
        STAFObjectPtr thisObj = iter->next();

        switch (thisObj->type())
        {
            case kSTAFNoneObject:
            {
                cout << "Type: None, ";
                break;
            }
            case kSTAFScalarStringObject:
            {
                cout << "Type: Scalar String, ";
                break;
            }
            case kSTAFListObject:
            {
                cout << "Type: List, ";
                break;
            }
            case kSTAFMapObject:
            {
                cout << "Type: Map, ";
                break;
            }
            case kSTAFMarshallingContextObject:
            {
                cout << "Type: Marshalling Context, ";
                break;
            }
            default:
            {
                cout << "Type: Unknown, ";
                break;
            }
        }

        cout << "Size: " << thisObj->size() << ", ";
        cout << "As String: " << thisObj->asString() << endl;
    }

    STAFString marshalledData = masterList->marshall();

    cout << endl
         << "After marshalling, does this appear to be marshalled data: "
         << STAFObject::isMarshalledData(marshalledData) << endl;

    STAFObjectIteratorPtr mcdNameIter = aContext->mapClassDefinitionIterator();

    cout << endl << "Map class definition names:" << endl;

    while (mcdNameIter->hasNext())
    {
        cout << mcdNameIter->next()->asString() << endl;
    }

    return 0;
}

⌨️ 快捷键说明

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