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

📄 reference.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================// Modified By:  Carol Ann Krug Graves, Hewlett-Packard Company//                   (carolann_graves@hp.com)//               Karl Schopmeyer - Add reference object tests.//               Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)//               David Dillard, VERITAS Software Corp.//                   (david.dillard@veritas.com)//               Vijay Eli, IBM (vijayeli@in.ibm.com), bug#2556.////%/////////////////////////////////////////////////////////////////////////////#include <Pegasus/Common/PegasusAssert.h>#include <cstdlib>#include <iostream>#include <Pegasus/Common/CIMObjectPath.h>#include <Pegasus/Common/CIMName.h>#include <Pegasus/Common/XmlWriter.h>#include <Pegasus/Common/MofWriter.h>#include <Pegasus/Common/InternalException.h>PEGASUS_USING_PEGASUS;PEGASUS_USING_STD;static char * verbose;void test01(){    {    String on1;    on1 = "//atp:77/root/cimv25:TennisPlayer.last=\"Rafter\",first=\"Patrick\"";    String on2;    on2 = "//atp:77/root/cimv25:TennisPlayer.first=\"Patrick\",last=\"Rafter\"";    CIMObjectPath r = on1;    PEGASUS_TEST_ASSERT(r.toString() != on1);    PEGASUS_TEST_ASSERT(r.toString() == on2);    CIMObjectPath r2 = r;    CIMObjectPath r3 = CIMObjectPath        ("//atp:77/root/cimv25:TennisPlayer.first=\"Chris\",last=\"Evert\"");    if (verbose)    {        XmlWriter::printValueReferenceElement(r);        cout << r.toString() << endl;    }    Buffer mofOut;    MofWriter::appendValueReferenceElement(mofOut, r);    r.clear();    }    {    CIMObjectPath r1 = CIMObjectPath        ("MyClass.z=true,y=1234,x=\"Hello World\"");    CIMObjectPath r2 = CIMObjectPath        ("myclass.X=\"Hello World\",Z=true,Y=1234");    CIMObjectPath r3 = CIMObjectPath ("myclass.X=\"Hello\",Z=true,Y=1234");    // cout << r1.toString() << endl;    // cout << r2.toString() << endl;    PEGASUS_TEST_ASSERT(r1 == r2);    PEGASUS_TEST_ASSERT(r1 != r3);    }     // Test case independence and order independence of parameters.    {	CIMObjectPath r1 = CIMObjectPath ("X.a=123,b=true");	CIMObjectPath r2 = CIMObjectPath ("x.B=TRUE,A=123");	PEGASUS_TEST_ASSERT(r1 == r2);	PEGASUS_TEST_ASSERT(r1.makeHashCode() == r2.makeHashCode());	CIMObjectPath r3 = CIMObjectPath ("x.B=TRUE,A=123,c=FALSE");	PEGASUS_TEST_ASSERT(r1 != r3);        String            keyValue;        Array<CIMKeyBinding> kbArray;	{	    Boolean found = false;	    kbArray = r3.getKeyBindings();	    for (Uint32 i = 0; i < kbArray.size(); i++)	    {			if (verbose)            {                cout << "keyName= " <<  kbArray[i].getName() << " Value= "    				 << kbArray[i].getValue() << endl;            }		if ( kbArray[i].getName() == CIMName ("B") )		{		    keyValue = kbArray[i].getValue();		    if(keyValue == "TRUE")			found = true;		}	    }	    if(!found)	    {			cerr << "Key Binding Test error " << endl;				exit(1);	    }		//ATTN: KS 12 May 2002 P3 DEFER - keybinding manipulation. too simplistic		// This code demonstrates that it is not easy to manipulate and		// test keybindings.  Needs better tool both in CIMObjectPath and		// separate.	}    }    // Test building from component parts of CIM Reference.    {	CIMObjectPath r1 ("atp:77", CIMNamespaceName ("root/cimv25"),            CIMName ("TennisPlayer"));	CIMObjectPath r2 ("//atp:77/root/cimv25:TennisPlayer.");	//cout << "r1 " << r1.toString() << endl;	//cout << "r2 " << r2.toString() << endl;	PEGASUS_TEST_ASSERT(r1 == r2);	PEGASUS_TEST_ASSERT(r1.toString() == r2.toString());    }    {	String hostName = "atp:77";	String nameSpace = "root/cimv2";	String className = "tennisplayer";	CIMObjectPath r1;	r1.setHost(hostName);	r1.setNameSpace(nameSpace);	r1.setClassName(className);	PEGASUS_TEST_ASSERT(r1.getClassName().equal(CIMName ("TENNISPLAYER")));	PEGASUS_TEST_ASSERT(!r1.getClassName().equal(CIMName ("blob")));	String newHostName = r1.getHost();	//cout << "HostName = " << newHostName << endl;	CIMObjectPath r2 (hostName, nameSpace, className);	PEGASUS_TEST_ASSERT(r1 == r2);     }     // Test cases for the Hostname.  CIMObjectPaths allows the     // host to include the domain. Eg. xyz.company.com     // First, try a good hostname     CIMObjectPath h0("//usoPen-9.ustA-1-a.org:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h1("//usoPen-9:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h2("//usoPen-9/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h3("//usoPen-9.ustA-1-a.org:0/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h4("//usoPen-9.ustA-1-a.org:9876543210/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h6("//usopen-9.usta-1-a.1org:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h7("//192.168.1.com:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h8("//192.168.0.org/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h9("//192.168.1.80.com:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h10("//192.168.0.80.org/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h11("//192.168.1.80.255.com:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h12("//192.168.0.80.254.org/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h13("//192.168.257.80.com:77/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h14("//192.256.0.80.org/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h15("//localhost/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h16("//ou812/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h17("//u812/root/cimv25:"                      "TennisPlayer.first=\"Chris\",last=\"Evert\"");          // Hostname with '_' character support checks, see bug#2556.     CIMObjectPath h18("//_atp:9999/_root/_cimv25:_TennisPlayer");     CIMObjectPath h19("//a_tp/_root/_cimv25:_TennisPlayer");     CIMObjectPath h20("//atp_:9999/_root/_cimv25:_TennisPlayer");     CIMObjectPath h21("//atp_-9:9999/_root/_cimv25:_TennisPlayer");     CIMObjectPath h22(         "//_a_t_p_-9.ustA-1-a.org:9999/_root/_cimv25:_TennisPlayer");     CIMObjectPath h23("//_/root/cimv25:_TennisPlayer");     CIMObjectPath h24("//_______/root/cimv25:_TennisPlayer");     // try IPAddress as hostname which should be good     CIMObjectPath h_ip0("//192.168.1.80:77/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     CIMObjectPath h_ip1("//192.168.0.255/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     Boolean errorDetected = false;     errorDetected = false;     try     {        // Octet out of range        CIMObjectPath h5("//192.168.256.80:77/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Missing port        CIMObjectPath h5("//192.168.1.80:/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Too many octets        CIMObjectPath h5("//192.168.1.80.12/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Too few octets        CIMObjectPath h5("//192.168.80:77/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Missing port        CIMObjectPath h1("//usopen-9.usta-1-a.org:/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Hostname (IP) without trailing '/' (with port)        CIMObjectPath h5("//192.168.256.80:77");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Hostname (IP) without trailing '/' (without port)        CIMObjectPath h5("//192.168.256.80");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Hostname without trailing '/' (with port)        CIMObjectPath h5("//usopen-9.usta-1-a.org:77");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Hostname without trailing '/' (without port)        CIMObjectPath h5("//usopen-9.usta-1-a.org");     } catch (const Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Invalid first character        CIMObjectPath h1("//+usopen-9.usta-1-a.1org:77/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Non-alphanum char (?)        CIMObjectPath h1("//usopen-9.usta?-1-a.org:77/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;     try     {        // Leading dot        CIMObjectPath h2("//.usopen-9.usta-1-a.org:77/root/cimv25:"                         "TennisPlayer.first=\"Chris\",last=\"Evert\"");     } catch (Exception&)     {        errorDetected = true;     }     PEGASUS_TEST_ASSERT(errorDetected);     errorDetected = false;

⌨️ 快捷键说明

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