This list is closed, nobody may subscribe to it.
2006 |
Jan
(4) |
Feb
(17) |
Mar
(8) |
Apr
(21) |
May
(9) |
Jun
(22) |
Jul
(30) |
Aug
(22) |
Sep
(24) |
Oct
(27) |
Nov
(9) |
Dec
(11) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(12) |
Feb
(1) |
Mar
(6) |
Apr
(7) |
May
(12) |
Jun
(56) |
Jul
(45) |
Aug
(12) |
Sep
(3) |
Oct
(37) |
Nov
(69) |
Dec
(29) |
2008 |
Jan
(20) |
Feb
(21) |
Mar
(4) |
Apr
(14) |
May
(5) |
Jun
(33) |
Jul
(12) |
Aug
(4) |
Sep
(34) |
Oct
(12) |
Nov
(8) |
Dec
(7) |
2009 |
Jan
(12) |
Feb
(3) |
Mar
(10) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(3) |
Aug
|
Sep
|
Oct
(3) |
Nov
(4) |
Dec
|
2010 |
Jan
(2) |
Feb
|
Mar
(5) |
Apr
(6) |
May
|
Jun
(2) |
Jul
(5) |
Aug
(3) |
Sep
|
Oct
(1) |
Nov
|
Dec
(10) |
2011 |
Jan
(2) |
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
(12) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(3) |
Mar
(8) |
Apr
|
May
(16) |
Jun
(10) |
Jul
(2) |
Aug
(1) |
Sep
(9) |
Oct
(3) |
Nov
(4) |
Dec
(2) |
2013 |
Jan
(13) |
Feb
(5) |
Mar
(5) |
Apr
(4) |
May
(3) |
Jun
(1) |
Jul
(4) |
Aug
(5) |
Sep
|
Oct
|
Nov
(3) |
Dec
(4) |
2014 |
Jan
(9) |
Feb
(2) |
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(41) |
Oct
(24) |
Nov
(4) |
Dec
|
2015 |
Jan
(7) |
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
(6) |
Jul
|
Aug
|
Sep
|
Oct
(17) |
Nov
(5) |
Dec
|
2016 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(3) |
2017 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <tp...@us...> - 2006-08-14 05:00:38
|
Revision: 90 Author: tpot Date: 2006-08-13 22:00:23 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=90&view=rev Log Message: ----------- Expand the CIM operations tests for enumerateclasses function. Modified Paths: -------------- testsuite/test_cim_operations.py Modified: testsuite/test_cim_operations.py =================================================================== --- testsuite/test_cim_operations.py 2006-08-14 04:58:13 UTC (rev 89) +++ testsuite/test_cim_operations.py 2006-08-14 05:00:23 UTC (rev 90) @@ -340,6 +340,49 @@ # Schema manipulation interface tests ################################################################# +class ClassVerifier: + """Base class for testing CIMClass instances.""" + + def verify_property(self, p): + + self.assert_(p.value is None) + + self.assert_(isinstance(p, (CIMProperty, CIMPropertyReference, + CIMPropertyArray))) + + if isinstance(p, CIMPropertyReference): + self.assert_(p.reference_class) + + def verify_qualifier(self, q): + self.assert_(q.name) + self.assert_(q.value) + + def verify_method(self, m): + pass + + def verify_class(self, cl): + + # Verify simple attributes + + self.assert_(cl.classname) + + if cl.superclass is not None: + self.assert_(cl.superclass) + + # Verify properties + + self.assert_(len(cl.properties) > 0) + [self.verify_property(p) for p in cl.properties.values()] + + # Verify qualifiers + + self.assert_(len(cl.qualifiers) > 0) + [self.verify_qualifier(q) for q in cl.qualifiers.values()] + + # Verify methods + + [self.verify_method(m) for m in cl.methods.values()] + class EnumerateClassNames(ClientTest): def runtest(self): @@ -347,14 +390,15 @@ names = self.cimcall(self.conn.EnumerateClassNames) [self.assert_(isinstance(n, StringTypes)) for n in names] -class EnumerateClasses(ClientTest): +class EnumerateClasses(ClientTest, ClassVerifier): def runtest(self): classes = self.cimcall(self.conn.EnumerateClasses) [self.assert_(isinstance(c, CIMClass)) for c in classes] + [self.verify_class(c) for c in classes] -class GetClass(ClientTest): +class GetClass(ClientTest, ClassVerifier): def runtest(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-14 04:58:27
|
Revision: 89 Author: tpot Date: 2006-08-13 21:58:13 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=89&view=rev Log Message: ----------- Add xml round trip test for CIMClass. Modified Paths: -------------- testsuite/test_tupleparse.py Modified: testsuite/test_tupleparse.py =================================================================== --- testsuite/test_tupleparse.py 2006-08-14 04:49:14 UTC (rev 88) +++ testsuite/test_tupleparse.py 2006-08-14 04:58:13 UTC (rev 89) @@ -63,6 +63,54 @@ 'uint8array': [Uint8(1), Uint8(2)], 'ref': CIMInstanceName('CIM_Bar')})) +class ParseCIMClass(TupleTest): + """Test parsing of CIMClass objects.""" + + def runtest(self): + + self.test(CIMClass('CIM_Foo')) + self.test(CIMClass('CIM_Foo', superclass = 'CIM_bar')) + + self.test(CIMClass( + 'CIM_CollectionInSystem', + qualifiers = {'ASSOCIATION': + CIMQualifier('ASSOCIATION', True, + overridable = False), + + 'Aggregation': + CIMQualifier('Aggregation', True, + overridable = False), + 'Version': + CIMQualifier('Version', '2.6.0', + tosubclass = False, + translatable = False), + 'Description': + CIMQualifier('Description', + 'CIM_CollectionInSystem is an association used to establish a parent-child relationship between a collection and an \'owning\' System such as an AdminDomain or ComputerSystem. A single collection should not have both a CollectionInOrganization and a CollectionInSystem association.', + translatable = True)}, + properties = {'Parent': + CIMPropertyReference( + 'Parent', None, + reference_class = 'CIM_System', + qualifiers = {'Key': + CIMQualifier('Key', True, + overridable = False), + 'Aggregate': + CIMQualifier('Aggregate', True, + overridable = False), + 'Max': + CIMQualifier('Max', Uint32(1))}), + 'Child': + CIMPropertyReference( + 'Child', None, + reference_class = 'CIM_Collection', + qualifiers = {'Key': + CIMQualifier('Key', True, + overridable = False)} + ) + } + )) + ################################################################# # Main function ################################################################# @@ -70,6 +118,7 @@ tests = [ ParseCIMInstanceName, ParseCIMInstance, + ParseCIMClass, ] if __name__ == '__main__': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-14 04:49:35
|
Revision: 88 Author: tpot Date: 2006-08-13 21:49:14 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=88&view=rev Log Message: ----------- Hook up self.qualifiers to tocimxml() methods for all classes. Add keyword arguments for flavours when creating CIMQualifier instances. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-08-14 04:11:06 UTC (rev 87) +++ trunk/cim_obj.py 2006-08-14 04:49:14 UTC (rev 88) @@ -485,8 +485,8 @@ self.type, VALUE(atomic_to_cim_xml(self.value)), class_origin = self.class_origin, - propagated = self.propagated) - + propagated = self.propagated, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) class CIMPropertyArray(PropertyBase): """A property holding an array of values.""" @@ -529,7 +529,8 @@ VALUE_ARRAY([VALUE(v) for v in value]), array_size, self.class_origin, - self.propagated) + self.propagated, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) class CIMPropertyReference(PropertyBase): """A property holding a reference. @@ -571,7 +572,8 @@ value_reference, reference_class = self.reference_class, class_origin = self.class_origin, - propagated = self.propagated) + propagated = self.propagated, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) # # Object definition classes @@ -585,7 +587,6 @@ def __init__(self, classname, keybindings = {}): self.classname = classname self.keybindings = NocaseDict(keybindings) - self.qualifiers = NocaseDict() def __cmp__(self, other): @@ -594,9 +595,8 @@ elif not isinstance(other, CIMInstanceName): return 1 - return cmp(self.classname.lower(), other.classname.lower()) or \ - cmp(self.keybindings, other.keybindings) or \ - cmp(self.qualifiers, other.qualifiers) + return (cmp(self.classname.lower(), other.classname.lower()) or + cmp(self.keybindings, other.keybindings)) def __str__(self): s = '%s.' % self.classname @@ -719,7 +719,7 @@ self.classname = classname self.properties = NocaseDict() - self.qualifiers = NocaseDict() + self.qualifiers = NocaseDict(qualifiers) # Assign initialised property values @@ -830,9 +830,11 @@ props.append(CIMProperty(key, value)) - return cim_xml.INSTANCE(self.classname, [p.tocimxml() for p in props]) + return cim_xml.INSTANCE( + self.classname, + properties = [p.tocimxml() for p in props], + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) - class CIMNamedInstance(XMLObject): def __init__(self, name, instance): @@ -897,6 +899,7 @@ self.classname, properties = [p.tocimxml() for p in self.properties.values()], methods = [m.tocimxml() for m in self.methods.values()], + qualifiers = [q.tocimxml() for q in self.qualifiers.values()], superclass = self.superclass) @@ -916,9 +919,10 @@ return cim_xml.METHOD( self.name, parameters = [p.tocimxml() for p in self.parameters.values()], - return_type = self.return_type, - class_origin = self.class_origin, - propagated = self.propagated) + return_type = self.return_type, + class_origin = self.class_origin, + propagated = self.propagated, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) def __repr__(self): return '%s(name=%s, return_type=%s...)' % \ @@ -1004,7 +1008,10 @@ ParameterBase.__init__(self, name, type, qualifiers = qualifiers) def tocimxml(self): - return cim_xml.PARAMETER(self.name, self.type) + return cim_xml.PARAMETER( + self.name, + self.type, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) class CIMParameterReference(ParameterBase): @@ -1013,7 +1020,10 @@ qualifiers = qualifiers) def tocimxml(self): - return cim_xml.PARAMETER_REFERENCE(self.name, self.reference_class) + return cim_xml.PARAMETER_REFERENCE( + self.name, + self.reference_class, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) class CIMParameterArray(ParameterBase): @@ -1027,7 +1037,11 @@ if self.array_size is not None: array_size = str(self.array_size) - return cim_xml.PARAMETER_ARRAY(self.name, self.type, array_size) + return cim_xml.PARAMETER_ARRAY( + self.name, + self.type, + array_size, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) class CIMParameterRefArray(ParameterBase): @@ -1040,11 +1054,15 @@ def tocimxml(self): array_size = None + if self.array_size is not None: array_size = str(self.array_size) return cim_xml.PARAMETER_REFARRAY( - self.name, self.reference_class, array_size) + self.name, + self.reference_class, + array_size, + qualifiers = [q.tocimxml() for q in self.qualifiers.values()]) class CIMQualifier(XMLObject): """Represents static annotations of a class, method, property, etc. @@ -1052,10 +1070,15 @@ Includes information such as a documentation string and whether a property is a key.""" - def __init__(self, name, value, propagated = None): + def __init__(self, name, value, propagated = None, overridable = None, + tosubclass = None, toinstance = None, translatable = None): self.name = name self.propagated = propagated + self.overridable = overridable + self.tosubclass = tosubclass + self.toinstance = toinstance + self.translatable = translatable # Don't let anyone set integer or float values. You must use # a subclass from the cim_type module. @@ -1077,7 +1100,11 @@ return (cmp(self.name.lower(), other.name.lower()) or cmp(self.value, other.value) or - cmp(self.propagated, other.propagated)) + cmp(self.propagated, other.propagated) or + cmp(self.overridable, other.overridable) or + cmp(self.tosubclass, other.tosubclass) or + cmp(self.toinstance, other.toinstance) or + cmp(self.translatable, other.translatable)) def tocimxml(self): @@ -1089,9 +1116,12 @@ return QUALIFIER(self.name, cim_types.cimtype(self.value), value, - propagated = self.propagated) - - + propagated = self.propagated, + overridable = self.overridable, + tosubclass = self.tosubclass, + toinstance = self.toinstance, + translatable = self.translatable) + def tocimxml(value): """Convert an arbitrary object to CIM xml. Works with cim_obj objects and builtin types.""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-14 04:11:33
|
Revision: 87 Author: tpot Date: 2006-08-13 21:11:06 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=87&view=rev Log Message: ----------- Break out qualifier flavours in to keyword arguments, instead of a dictionary. Modified Paths: -------------- testsuite/test_cim_xml.py trunk/cim_xml.py Modified: testsuite/test_cim_xml.py =================================================================== --- testsuite/test_cim_xml.py 2006-08-14 03:11:42 UTC (rev 86) +++ testsuite/test_cim_xml.py 2006-08-14 04:11:06 UTC (rev 87) @@ -663,10 +663,17 @@ # VALUE + attributes self.xml.append(cim_xml.QUALIFIER( - 'IMPISH', 'string', cim_xml.VALUE('true'), - propagated = 'true', - qualifier_flavours = {'OVERRIDABLE': 'true'})) + 'Key', 'string', cim_xml.VALUE('true'), + overridable = 'true')) + self.xml.append(cim_xml.QUALIFIER( + 'Description', 'string', cim_xml.VALUE('blahblah'), + translatable = 'true')) + + self.xml.append(cim_xml.QUALIFIER( + 'Version', 'string', cim_xml.VALUE('foorble'), + tosubclass = 'false', translatable = 'true')) + # VALUE.ARRAY self.xml.append(cim_xml.QUALIFIER( Modified: trunk/cim_xml.py =================================================================== --- trunk/cim_xml.py 2006-08-14 03:11:42 UTC (rev 86) +++ trunk/cim_xml.py 2006-08-14 04:11:06 UTC (rev 87) @@ -624,7 +624,8 @@ """ def __init__(self, name, type, data, propagated = None, - qualifier_flavours = {}, xml_lang = None): + overridable = None, tosubclass = None, toinstance = None, + translatable = None, xml_lang = None): Element.__init__(self, 'QUALIFIER') @@ -634,11 +635,20 @@ if propagated is not None: self.setAttribute('PROPAGATED', str(propagated).lower()) + if overridable is not None: + self.setAttribute('OVERRIDABLE', str(overridable).lower()) + + if tosubclass is not None: + self.setAttribute('TOSUBCLASS', str(tosubclass).lower()) + + if toinstance is not None: + self.setAttribute('TOINSTANCE', str(toinstance).lower()) + + if translatable is not None: + self.setAttribute('TRANSLATABLE', str(translatable).lower()) + self.setOptionalAttribute('xml:lang', xml_lang) - for qf in qualifier_flavours.items(): - self.setAttribute(qf[0], qf[1]) - self.appendChild(data) class PROPERTY(CIMElement): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-14 03:12:06
|
Revision: 86 Author: tpot Date: 2006-08-13 20:11:42 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=86&view=rev Log Message: ----------- Rewrite CIMQualifier class and start adding tests. Modified Paths: -------------- testsuite/test_cim_obj.py trunk/cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-08-14 01:28:45 UTC (rev 85) +++ testsuite/test_cim_obj.py 2006-08-14 03:11:42 UTC (rev 86) @@ -683,22 +683,82 @@ self.validate(CIMPropertyReference('Foo', CIMInstanceName('CIM_Foo'))) ################################################################# -# CIMPropertyReference +# CIMQualifier ################################################################# +class InitCIMQualifier(TestCase): + """Test initialising a CIMQualifier object.""" + + def runtest(self): + + CIMQualifier('Revision', '2.7.0', 'string') + CIMQualifier('RevisionList', ['1', '2', '3'], propagated = False) + +class CIMQualifierAttrs(TestCase): + """Test attributes of CIMQualifier object.""" + + def runtest(self): + + q = CIMQualifier('Revision', '2.7.0') + + self.assert_equal(q.name, 'Revision') + self.assert_equal(q.value, '2.7.0') + self.assert_equal(q.propagated, None) + + q = CIMQualifier('RevisionList', [1, 2, 3], propagated = False) + + self.assert_equal(q.name, 'RevisionList') + self.assert_equal(q.value, [1, 2, 3]) + self.assert_equal(q.propagated, False) + +class CompareCIMQualifier(TestCase): + """Compare CIMQualifier objects.""" + + def runtest(self): + + self.assert_equal(CIMQualifier('Spotty', 'Foot'), + CIMQualifier('Spotty', 'Foot')) + + self.assert_equal(CIMQualifier('Spotty', 'Foot'), + CIMQualifier('spotty', 'Foot')) + + self.assert_notequal(CIMQualifier('Spotty', 'Foot'), + CIMQualifier('Spotty', 'foot')) + +class CIMQualifierString(TestCase): + + def runtest(self): + + s = str(CIMQualifier('RevisionList', ['1', '2', '3'], + propagated = False)) + + self.assert_re_search('RevisionList', s) + +class CIMQualifierToXML(ValidateTest): + + def runtest(self): + + self.validate(CIMQualifier('Spotty', 'Foot')) + self.validate(CIMQualifier('Revision', Real32(2.7))) + + self.validate(CIMQualifier('RevisionList', + [Uint16(x) for x in 1, 2, 3], + propagated = False)) + +################################################################# +# CIMNamedInstance +################################################################# + class InitCIMNamedInstance(TestCase): """Test initialising a CIMNamedInstance object.""" def runtest(self): - # Very boring - it has a name and an instance property - name = CIMInstanceName('CIM_Foo', {'Name': 'Foo', 'Chicken': 'Ham'}) instance = CIMInstance('CIM_Foo', {'Name': 'Foo', 'Chicken': 'Ham'}) CIMNamedInstance(name, instance) - class CIMNamedInstanceAttrs(TestCase): """Test attributes of CIMNamedInstance object.""" @@ -1112,7 +1172,7 @@ tests = [ ############################################################# - # Property classes + # Property and qualifier classes ############################################################# # CIMProperty @@ -1139,6 +1199,14 @@ CIMPropertyReferenceString, CIMPropertyReferenceToXML, + # CIMQualifier + + InitCIMQualifier, + CIMQualifierAttrs, + CompareCIMQualifier, + CIMQualifierString, + CIMQualifierToXML, + ############################################################# # Instance and instance name classes ############################################################# Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-08-14 01:28:45 UTC (rev 85) +++ trunk/cim_obj.py 2006-08-14 03:11:42 UTC (rev 86) @@ -1046,34 +1046,52 @@ return cim_xml.PARAMETER_REFARRAY( self.name, self.reference_class, array_size) -class CIMQualifier: +class CIMQualifier(XMLObject): """Represents static annotations of a class, method, property, etc. Includes information such as a documentation string and whether a property is a key.""" - def __init__(self, name, value, overridable=None, propagated=None, - toinstance=None, tosubclass=None, translatable=None): + + def __init__(self, name, value, propagated = None): + self.name = name + self.propagated = propagated + + # Don't let anyone set integer or float values. You must use + # a subclass from the cim_type module. + + if type(value) == int or type(value) == float or type(value) == long: + raise TypeError('Must use a CIM type assigning numeric values.') + self.value = value - self.overridable = overridable - self.propagated = propagated - self.toinstance = toinstance - self.tosubclass = tosubclass - self.translatable = translatable - def __repr__(self): return "%s(%s, ...)" % (self.__class__.__name__, `self.name`) def __cmp__(self, other): + if self is other: return 0 elif not isinstance(other, CIMQualifier): return 1 - return cmp(self.__dict__, other.__dict__) - + return (cmp(self.name.lower(), other.name.lower()) or + cmp(self.value, other.value) or + cmp(self.propagated, other.propagated)) + def tocimxml(self): + + if type(self.value) == list: + value = VALUE_ARRAY([VALUE(v) for v in self.value]) + else: + value = VALUE(self.value) + + return QUALIFIER(self.name, + cim_types.cimtype(self.value), + value, + propagated = self.propagated) + + def tocimxml(value): """Convert an arbitrary object to CIM xml. Works with cim_obj objects and builtin types.""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-14 01:29:10
|
Revision: 85 Author: tpot Date: 2006-08-13 18:28:45 -0700 (Sun, 13 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=85&view=rev Log Message: ----------- Fix and test iterator functions for NoCaseDict object. Modified Paths: -------------- testsuite/test_nocasedict.py trunk/cim_obj.py Modified: testsuite/test_nocasedict.py =================================================================== --- testsuite/test_nocasedict.py 2006-08-09 04:38:04 UTC (rev 84) +++ testsuite/test_nocasedict.py 2006-08-14 01:28:45 UTC (rev 85) @@ -152,6 +152,21 @@ self.assert_('Dog' in self.d) self.assert_(not 'Cat' in self.d) +class TestIterkeys(BaseTest): + def runtest(self): + for k in self.d.iterkeys(): + self.assert_(k in ['Budgie', 'Dog']) + +class TestItervalues(BaseTest): + def runtest(self): + for v in self.d.itervalues(): + self.assert_(v in ['Cat', 'Fish']) + +class TestIteritems(BaseTest): + def runtest(self): + for i in self.d.iteritems(): + self.assert_(i in [('Budgie', 'Fish'), ('Dog', 'Cat')]) + tests = [ TestInit, TestGetitem, @@ -170,6 +185,9 @@ TestPopItem, TestEqual, TestContains, + TestIterkeys, + TestItervalues, + TestIteritems, ] if __name__ == '__main__': Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-08-09 04:38:04 UTC (rev 84) +++ trunk/cim_obj.py 2006-08-14 01:28:45 UTC (rev 85) @@ -124,16 +124,16 @@ # Iterators def iterkeys(self): - for key in self.data.itervalues(): - yield key[0] + for item in self.data.iteritems(): + yield item[1][0] def itervalues(self): - for key in self.data.itervalues(): - yield key[1] + for item in self.data.iteritems(): + yield item[1][1] def iteritems(self): - for key, value in self.data.iteritems(): - yield value[0], value[1] + for item in self.data.iteritems(): + yield item[1] # Other stuff @@ -891,7 +891,6 @@ or cmp(self.properties, other.properties) or cmp(self.qualifiers, other.qualifiers) or cmp(self.methods, other.methods)) - def tocimxml(self): return cim_xml.CLASS( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-09 04:38:20
|
Revision: 84 Author: tpot Date: 2006-08-08 21:38:04 -0700 (Tue, 08 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=84&view=rev Log Message: ----------- Test that keybinding types are checked when comparing CIMInstanceName objects. Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-08-09 04:36:04 UTC (rev 83) +++ testsuite/test_cim_obj.py 2006-08-09 04:38:04 UTC (rev 84) @@ -192,6 +192,14 @@ self.assert_equal(obj1, obj2) + # Test keybinding types are not confused in comparisons + + self.assert_notequal(CIMInstanceName('CIM_Foo', {'Foo': '42'}), + CIMInstanceName('CIM_Foo', {'Foo': 42})) + + self.assert_notequal(CIMInstanceName('CIM_Foo', {'Bar': True}), + CIMInstanceName('CIM_Foo', {'Bar': 'TRUE'})) + class CIMInstanceNameString(TestCase): """Test string representation functions for CIMInstanceName objects.""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-09 04:36:19
|
Revision: 83 Author: tpot Date: 2006-08-08 21:36:04 -0700 (Tue, 08 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=83&view=rev Log Message: ----------- When converting a CIMInstanceName to a string, make sure we don't put quotes around long keybinding values otherwise it's confusing as to which type the keybinding actually is. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-08-02 04:51:51 UTC (rev 82) +++ trunk/cim_obj.py 2006-08-09 04:36:04 UTC (rev 83) @@ -605,7 +605,7 @@ s = s + '%s=' % key - if type(value) == int: + if type(value) == int or type(value) == long: s = s + str(value) else: s = s + '"%s"' % value This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-02 04:52:12
|
Revision: 82 Author: tpot Date: 2006-08-01 21:51:51 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=82&view=rev Log Message: ----------- In order to pass the native types vs CIMProperty types comparison test we need to convert CIMInstance.property values from native to CIMProperty types. This necessitates some changes to the dictionary interface functions, but luckily we have a test suite. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-08-02 04:40:34 UTC (rev 81) +++ trunk/cim_obj.py 2006-08-02 04:51:51 UTC (rev 82) @@ -718,12 +718,12 @@ properties is a list of full CIMProperty objects. """ self.classname = classname - self.properties = NocaseDict(properties) + self.properties = NocaseDict() + self.qualifiers = NocaseDict() - for key, value in properties.items(): - self[key] = value + # Assign initialised property values - self.qualifiers = NocaseDict() + [self.__setitem__(k, v) for k, v in properties.items()] def __cmp__(self, other): @@ -745,29 +745,59 @@ # A whole bunch of dictionary methods that map to the equivalent # operation on self.properties. - def __getitem__(self, key): return self.properties[key] - def __delitem__(self, key): del self.properties[key] - def __len__(self): return len(self.properties) - def has_key(self, key): return self.properties.has_key(key) - def keys(self): return self.properties.keys() - def values(self): return self.properties.values() - def items(self): return self.properties.items() - def iterkeys(self): return self.properties.iterkeys() - def itervalues(self): return self.properties.itervalues() - def iteritems(self): return self.properties.iteritems() + def __getitem__(self, key): + return self.properties[key].value + def __delitem__(self, key): + del self.properties[key] + + def __len__(self): + return len(self.properties) + + def has_key(self, key): + return self.properties.has_key(key) + + def keys(self): + return self.properties.keys() + + def values(self): + return [v.value for v in self.properties.values()] + + def items(self): + return [(k, v.value) for k, v in self.properties.items()] + + def iterkeys(self): + return self.properties.iterkeys() + + def itervalues(self): + for k, v in self.properties.iteritems(): + yield v.value + + def iteritems(self): + for k, v in self.properties.iteritems(): + yield (k, v.value) + def __setitem__(self, key, value): # Don't let anyone set integer or float values. You must use # a subclass from the cim_type module. - # TODO: Lift this into a common function that checks a CIM - # value is acceptable. - if type(value) == int or type(value) == float or type(value) == long: raise TypeError('Must use a CIM type assigning numeric values.') - self.properties[key] = value + # Convert value to appropriate PyWBEM type + + if isinstance(value, (CIMProperty, CIMPropertyReference, + CIMPropertyArray)): + v = value + elif isinstance(value, CIMInstanceName): + v = CIMPropertyReference(key, value) + elif isinstance(value, list): + v = CIMPropertyArray(key, value) + else: + v = CIMProperty(key, value) + + self.properties[key] = v def tocimxml(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-02 04:40:53
|
Revision: 81 Author: tpot Date: 2006-08-01 21:40:34 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=81&view=rev Log Message: ----------- Some fixes for dictionary interface test: - check for extra elements in keys(), values() and items() tests - add tests for iterkeys(), itervalues() and iteritems() Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-08-02 04:02:41 UTC (rev 80) +++ testsuite/test_cim_obj.py 2006-08-02 04:40:34 UTC (rev 81) @@ -62,18 +62,39 @@ keys = obj.keys() self.assert_('Chicken' in keys and 'Beans' in keys) + self.assert_(len(keys) == 2) # Test values values = obj.values() self.assert_('Ham' in values and 42 in values) - + self.assert_(len(values) == 2) + # Test items items = obj.items() + self.assert_(('Chicken', 'Ham') in items and + ('Beans', 42) in items) + self.assert_(len(items) == 2) + # Test iterkeys + + keys = list(obj.iterkeys()) + self.assert_('Chicken' in keys and 'Beans' in keys) + self.assert_(len(keys) == 2) + + # Test itervalues + + values = list(obj.itervalues()) + self.assert_('Ham' in values and 42 in values) + self.assert_(len(values) == 2) + + # Test iteritems + + items = list(obj.iteritems()) self.assert_(('Chicken', 'Ham') in items and - ('Beans', 42) in items) + ('Beans', 42) in items) + self.assert_(len(items) == 2) ################################################################# # CIMInstanceName This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-02 04:03:01
|
Revision: 80 Author: tpot Date: 2006-08-01 21:02:41 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=80&view=rev Log Message: ----------- >From my reading of the XML standard and the DTD the PROPAGATED attribute isn't #REQUIRED to be present all the time. Modified Paths: -------------- trunk/cim_xml.py Modified: trunk/cim_xml.py =================================================================== --- trunk/cim_xml.py 2006-08-02 03:46:35 UTC (rev 79) +++ trunk/cim_xml.py 2006-08-02 04:02:41 UTC (rev 80) @@ -631,9 +631,7 @@ self.setName(name) self.setAttribute('TYPE', type) - if propagated is None: - self.setAttribute('PROPAGATED', 'false') - else: + if propagated is not None: self.setAttribute('PROPAGATED', str(propagated).lower()) self.setOptionalAttribute('xml:lang', xml_lang) @@ -674,9 +672,7 @@ self.setOptionalAttribute('CLASSORIGIN', class_origin) - if propagated is None: - self.setAttribute('PROPAGATED', 'false') - else: + if propagated is not None: self.setAttribute('PROPAGATED', str(propagated).lower()) self.setOptionalAttribute('xml:lang', xml_lang) @@ -718,9 +714,7 @@ self.setOptionalAttribute('ARRAYSIZE', array_size) self.setOptionalAttribute('CLASSORIGIN', class_origin) - if propagated is None: - self.setAttribute('PROPAGATED', 'false') - else: + if propagated is not None: self.setAttribute('PROPAGATED', str(propagated).lower()) self.setOptionalAttribute('xml:lang', xml_lang) @@ -754,9 +748,7 @@ self.setOptionalAttribute('REFERENCECLASS', reference_class) self.setOptionalAttribute('CLASSORIGIN', class_origin) - if propagated is None: - self.setAttribute('PROPAGATED', 'false') - else: + if propagated is not None: self.setAttribute('PROPAGATED', str(propagated).lower()); self.appendChildren(qualifiers) @@ -789,9 +781,7 @@ self.setOptionalAttribute('TYPE', return_type) self.setOptionalAttribute('CLASSORIGIN', class_origin) - if propagated is None: - self.setAttribute('PROPAGATED', 'false') - else: + if propagated is not None: self.setAttribute('PROPAGATED', str(propagated).lower()) self.appendChildren(qualifiers + parameters) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-02 03:46:57
|
Revision: 79 Author: tpot Date: 2006-08-01 20:46:35 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=79&view=rev Log Message: ----------- Add a collection of tests to check that we can convert a PyWBEM object to XML, reparse it, and still end up with what we started with. CIMInstanceName and CIMInstance supported so far. Added Paths: ----------- testsuite/test_tupleparse.py Added: testsuite/test_tupleparse.py =================================================================== --- testsuite/test_tupleparse.py (rev 0) +++ testsuite/test_tupleparse.py 2006-08-02 03:46:35 UTC (rev 79) @@ -0,0 +1,76 @@ +#!/usr/bin/python +# +# Test XML parsing routines. +# +# These tests check that we don't lose any information by converting +# an object to XML then parsing it again. The round trip should +# produce an object that is identical to the one we started with. +# + +from comfychair import main, TestCase +from pywbem import * + +from pywbem.tupletree import xml_to_tupletree +from pywbem.tupleparse import parse_any + +class TupleTest(TestCase): + + def test(self, obj): + + # Convert object to xml + + xml = obj.tocimxml().toxml() + self.log('before: %s' % xml) + + # Parse back to an object + + result = parse_any(xml_to_tupletree(xml)) + self.log('after: %s' % result.tocimxml().toxml()) + + # Assert that the before and after objects should be equal + + self.assert_equal(obj, result) + +class ParseCIMInstanceName(TupleTest): + """Test parsing of CIMInstanceName objects.""" + + def runtest(self): + + self.test(CIMInstanceName('CIM_Foo')) + + self.test(CIMInstanceName('CIM_Foo', + {'Name': 'Foo', + 'Chicken': 'Ham'})) + + self.test( + CIMInstanceName('CIM_Foo', {'Name': 'Foo', + 'Number': 42, + 'Boolean': False, + 'Ref': CIMInstanceName('CIM_Bar')})) + +class ParseCIMInstance(TupleTest): + """Test parsing of CIMInstance objects.""" + + def runtest(self): + + self.test(CIMInstance('CIM_Foo')) + + self.test( + CIMInstance( + 'CIM_Foo', + {'string': 'string', + 'uint8': Uint8(0), + 'uint8array': [Uint8(1), Uint8(2)], + 'ref': CIMInstanceName('CIM_Bar')})) + +################################################################# +# Main function +################################################################# + +tests = [ + ParseCIMInstanceName, + ParseCIMInstance, + ] + +if __name__ == '__main__': + main(tests) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-02 03:39:24
|
Revision: 78 Author: tpot Date: 2006-08-01 20:39:08 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=78&view=rev Log Message: ----------- Add a test where we compare a CIMInstance with properties built from native python types with one built by hand using CIMProperty instances. Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-08-02 00:14:10 UTC (rev 77) +++ testsuite/test_cim_obj.py 2006-08-02 03:39:08 UTC (rev 78) @@ -332,6 +332,24 @@ CIMInstance('CIM_Foo', {'Null': CIMProperty('Null', Uint32(0))})) + # Mix of CIMProperty and native Python types + + self.assert_equal( + CIMInstance( + 'CIM_Foo', + {'string': 'string', + 'uint8': Uint8(0), + 'uint8array': [Uint8(1), Uint8(2)], + 'ref': CIMInstanceName('CIM_Bar')}), + CIMInstance( + 'CIM_Foo', + {'string': CIMProperty('string', 'string'), + 'uint8': CIMProperty('uint8', Uint8(0)), + 'uint8Array': + CIMPropertyArray('uint8Array', [Uint8(1), Uint8(2)]), + 'ref': CIMPropertyReference('ref', CIMInstanceName('CIM_Bar'))}) + ) + class CIMInstanceString(TestCase): """Test string representation functions for CIMInstance objects.""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-08-02 00:14:26
|
Revision: 77 Author: tpot Date: 2006-08-01 17:14:10 -0700 (Tue, 01 Aug 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=77&view=rev Log Message: ----------- Add some more test cases for CIMInstanceName involving boolean and reference keybindings. Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-07-24 22:26:40 UTC (rev 76) +++ testsuite/test_cim_obj.py 2006-08-02 00:14:10 UTC (rev 77) @@ -79,8 +79,6 @@ # CIMInstanceName ################################################################# -# TODO: implement more tests in CIMInstanceNameToXML - class InitCIMInstanceName(TestCase): """A CIMInstanceName can be initialised with just a classname, or a classname and dict of keybindings.""" @@ -90,12 +88,21 @@ # Initialise with classname only obj = CIMInstanceName('CIM_Foo') + self.assert_(len(obj.keys()) == 0) # Initialise with keybindings dict obj = CIMInstanceName('CIM_Foo', {'Name': 'Foo', 'Chicken': 'Ham'}) self.assert_(len(obj.keys()) == 2) + # Initialise with all possible keybindings types + + obj = CIMInstanceName('CIM_Foo', {'Name': 'Foo', + 'Number': 42, + 'Boolean': False, + 'Ref': CIMInstanceName('CIM_Bar')}) + self.assert_(len(obj.keys()) == 4) + class CIMInstanceNameAttrs(TestCase): """Valid attributes for CIMInstanceName are 'classname' and 'keybindings'.""" @@ -148,6 +155,22 @@ self.assert_notequal(CIMInstanceName('CIM_Foo', {'Cheepy': 'Birds'}), CIMInstanceName('CIM_Foo', {'cheepy': 'birds'})) + # Test a bunch of different keybinding types + + obj1 = CIMInstanceName('CIM_Foo', {'Name': 'Foo', + 'Number': 42, + 'Boolean': False, + 'Ref': + CIMInstanceName('CIM_Bar')}) + + obj2 = CIMInstanceName('CIM_Foo', {'Name': 'Foo', + 'Number': 42, + 'Boolean': False, + 'Ref': + CIMInstanceName('CIM_Bar')}) + + self.assert_equal(obj1, obj2) + class CIMInstanceNameString(TestCase): """Test string representation functions for CIMInstanceName objects.""" @@ -191,6 +214,11 @@ self.validate(CIMInstanceName('CIM_Foo')) self.validate(CIMInstanceName('CIM_Foo', {'Cheepy': 'Birds'})) + self.validate(CIMInstanceName('CIM_Foo', {'Name': 'Foo', + 'Number': 42, + 'Boolean': False, + 'Ref': + CIMInstanceName('CIM_Bar')})) ################################################################# # CIMInstance This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ba...@us...> - 2006-07-24 22:26:52
|
Revision: 76 Author: bartw Date: 2006-07-24 15:26:40 -0700 (Mon, 24 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=76&view=rev Log Message: ----------- bringing tupleparse.py in line with recent changes to cim_obj.py Modified Paths: -------------- trunk/tupleparse.py Modified: trunk/tupleparse.py =================================================================== --- trunk/tupleparse.py 2006-07-24 22:12:25 UTC (rev 75) +++ trunk/tupleparse.py 2006-07-24 22:26:40 UTC (rev 76) @@ -955,9 +955,8 @@ a = attrs(tt) - return cim_obj.CIMParameter(a['NAME'], + return cim_obj.CIMParameterArray(a['NAME'], type=a['TYPE'], - is_array=True, array_size=a.get('ARRAYSIZE'), qualifiers=quals) @@ -980,10 +979,8 @@ a = attrs(tt) - return cim_obj.CIMParameter(a['NAME'], - is_reference=True, - is_array=True, - type=a.get('REFERENCECLASS'), + return cim_obj.CIMParameterRefArray(a['NAME'], + reference_class=a.get('REFERENCECLASS'), array_size=a.get('ARRAYSIZE'), qualifiers=quals) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ba...@us...> - 2006-07-24 22:12:39
|
Revision: 75 Author: bartw Date: 2006-07-24 15:12:25 -0700 (Mon, 24 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=75&view=rev Log Message: ----------- bringing tupleparse.py in line with recent changes to cim_obj.py Modified Paths: -------------- trunk/tupleparse.py Modified: trunk/tupleparse.py =================================================================== --- trunk/tupleparse.py 2006-07-23 23:55:55 UTC (rev 74) +++ trunk/tupleparse.py 2006-07-24 22:12:25 UTC (rev 75) @@ -891,7 +891,7 @@ a = attrs(tt) return cim_obj.CIMMethod(a['NAME'], - type=a.get('TYPE'), + return_type=a.get('TYPE'), parameters=parameters, qualifiers=qualifiers, class_origin=a.get('CLASSORIGIN'), @@ -932,9 +932,8 @@ a = attrs(tt) - return cim_obj.CIMParameter(a['NAME'], - is_reference=True, - type=a.get('REFERENCECLASS'), + return cim_obj.CIMParameterReference(a['NAME'], + reference_class=a.get('REFERENCECLASS'), qualifiers=quals) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-23 23:55:59
|
Revision: 74 Author: tpot Date: 2006-07-23 16:55:55 -0700 (Sun, 23 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=74&view=rev Log Message: ----------- Pass parameters to CIMMethod.tocimxml() method. Make sure array_size property is converted to a string for the tocimxml() method of CIMParameterArray and CIMParameterRefArray classes. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-07-23 23:53:41 UTC (rev 73) +++ trunk/cim_obj.py 2006-07-23 23:55:55 UTC (rev 74) @@ -884,10 +884,12 @@ self.propagated = propagated def tocimxml(self): - return cim_xml.METHOD(self.name, - return_type = self.return_type, - class_origin = self.class_origin, - propagated = self.propagated) + return cim_xml.METHOD( + self.name, + parameters = [p.tocimxml() for p in self.parameters.values()], + return_type = self.return_type, + class_origin = self.class_origin, + propagated = self.propagated) def __repr__(self): return '%s(name=%s, return_type=%s...)' % \ @@ -991,8 +993,13 @@ qualifiers = qualifiers) def tocimxml(self): - return cim_xml.PARAMETER_ARRAY(self.name, self.type, self.array_size) + array_size = None + if self.array_size is not None: + array_size = str(self.array_size) + + return cim_xml.PARAMETER_ARRAY(self.name, self.type, array_size) + class CIMParameterRefArray(ParameterBase): def __init__(self, name, reference_class = None, array_size = None, @@ -1002,8 +1009,13 @@ qualifiers = qualifiers) def tocimxml(self): - return cim_xml.PARAMETER_REFARRAY(self.name, self.reference_class, - self.array_size) + + array_size = None + if self.array_size is not None: + array_size = str(self.array_size) + + return cim_xml.PARAMETER_REFARRAY( + self.name, self.reference_class, array_size) class CIMQualifier: """Represents static annotations of a class, method, property, etc. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-23 23:53:45
|
Revision: 73 Author: tpot Date: 2006-07-23 16:53:41 -0700 (Sun, 23 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=73&view=rev Log Message: ----------- Add String and ToXML tests for CIMMethod and other classes used for schema manipulation. Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-07-23 22:59:51 UTC (rev 72) +++ testsuite/test_cim_obj.py 2006-07-23 23:53:41 UTC (rev 73) @@ -732,6 +732,13 @@ CIMClass('CIM_Foo', properties = properties, methods = methods)) +class CIMClassString(TestCase): + + def runtest(self): + + s = str(CIMClass('CIM_Foo')) + self.assert_re_search('CIM_Foo', s) + class CIMClassToXML(ValidateTest): def runtest(self): @@ -770,7 +777,8 @@ m = CIMMethod('FooMethod', 'uint32', parameters = {'Param1': CIMParameter('Param1', 'uint32'), - 'Param2': CIMParameter('Param2', 'string')}) + 'Param2': CIMParameter('Param2', 'string')} + ) self.assert_(m.name == 'FooMethod') self.assert_(m.return_type == 'uint32') @@ -786,6 +794,27 @@ self.assert_equal(CIMMethod('FooMethod', 'uint32'), CIMMethod('fooMethod', 'uint32')) +class CIMMethodString(TestCase): + + def runtest(self): + + s = str(CIMMethod('FooMethod', 'uint32')) + + self.assert_re_search('FooMethod', s) + self.assert_re_search('uint32', s) + +class CIMMethodToXML(ValidateTest): + + def runtest(self): + + self.validate(CIMMethod('FooMethod', 'uint32')) + + self.validate( + CIMMethod('FooMethod', 'uint32', + parameters = {'Param1': CIMParameter('Param1', 'uint32'), + 'Param2': CIMParameter('Param2', 'string')} + )) + ################################################################# # CIMParameter ################################################################# @@ -819,6 +848,22 @@ self.assert_notequal(CIMParameter('Param1', 'uint32'), CIMParameter('param1', 'string')) +class CIMParameterString(TestCase): + + def runtest(self): + + s = str(CIMParameter('Param1', 'uint32')) + + self.assert_re_search('Param1', s) + self.assert_re_search('uint32', s) + +class CIMParameterToXML(ValidateTest): + + def runtest(self): + + self.validate(CIMParameter('Param1', 'uint32')) + self.validate(CIMParameter('Param1', 'string')) + ################################################################# # CIMParameterReference ################################################################# @@ -854,6 +899,21 @@ self.assert_notequal(CIMParameterReference('RefParam', 'CIM_Foo'), CIMParameterReference('RefParam', 'CIM_Bar')) + +class CIMParameterReferenceString(TestCase): + + def runtest(self): + + s = str(CIMParameterReference('RefParam', 'CIM_Foo')) + + self.assert_re_search('RefParam', s) + self.assert_re_search('CIM_Foo', s) + +class CIMParameterReferenceToXML(ValidateTest): + + def runtest(self): + + self.validate(CIMParameterReference('RefParam', 'CIM_Foo')) ################################################################# # CIMParameterArray @@ -893,6 +953,24 @@ CIMParameterArray('ArrayParam', 'string', array_size = 10)) +class CIMParameterArrayString(TestCase): + + def runtest(self): + + s = str(CIMParameterArray('ArrayParam', 'uint32', array_size = 10)) + + self.assert_re_search('ArrayParam', s) + self.assert_re_search('uint32', s) + self.assert_re_search('10', s) + +class CIMParameterArrayToXML(ValidateTest): + + def runtest(self): + + self.validate(CIMParameterArray('ArrayParam', 'uint32')) + self.validate(CIMParameterArray('ArrayParam', 'uint32', + array_size = 10)) + ################################################################# # CIMParameterRefArray ################################################################# @@ -932,6 +1010,26 @@ CIMParameterRefArray('arrayParam', 'CIM_foo', array_size = 10)) +class CIMParameterRefArrayString(TestCase): + + def runtest(self): + + s = str(CIMParameterRefArray('RefArrayParam', 'CIM_Foo', + array_size = 10)) + + self.assert_re_search('RefArrayParam', s) + self.assert_re_search('CIM_Foo', s) + self.assert_re_search('10', s) + +class CIMParameterRefArrayToXML(ValidateTest): + + def runtest(self): + + self.validate(CIMParameterRefArray('RefArrayParam')) + self.validate(CIMParameterRefArray('RefArrayParam', 'CIM_Foo')) + self.validate( + CIMParameterRefArray('RefArrayParam', 'CIM_Foo', array_size = 10)) + ################################################################# # Main function ################################################################# @@ -1005,6 +1103,7 @@ InitCIMClass, CIMClassAttrs, CompareCIMClass, + CIMClassString, CIMClassToXML, # CIMMethod @@ -1012,30 +1111,40 @@ InitCIMMethod, CIMMethodAttrs, CompareCIMMethod, + CIMMethodString, + CIMMethodToXML, # CIMParameter InitCIMParameter, CIMParameterAttrs, CompareCIMParameter, + CIMParameterString, + CIMParameterToXML, # CIMParameterReference InitCIMParameterReference, CIMParameterReferenceAttrs, CompareCIMParameterReference, + CIMParameterReferenceString, + CIMParameterReferenceToXML, # CIMParameterArray InitCIMParameterArray, CIMParameterArrayAttrs, CompareCIMParameterArray, + CIMParameterArrayString, + CIMParameterArrayToXML, # CIMParameterRefArray InitCIMParameterRefArray, CIMParameterRefArrayAttrs, CompareCIMParameterRefArray, + CIMParameterRefArrayString, + CIMParameterRefArrayToXML, ] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-23 22:59:59
|
Revision: 72 Author: tpot Date: 2006-07-23 15:59:51 -0700 (Sun, 23 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=72&view=rev Log Message: ----------- Add some comments. Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-07-21 06:07:36 UTC (rev 71) +++ testsuite/test_cim_obj.py 2006-07-23 22:59:51 UTC (rev 72) @@ -938,6 +938,10 @@ tests = [ + ############################################################# + # Property classes + ############################################################# + # CIMProperty InitCIMProperty, @@ -962,6 +966,10 @@ CIMPropertyReferenceString, CIMPropertyReferenceToXML, + ############################################################# + # Instance and instance name classes + ############################################################# + # CIMInstanceName InitCIMInstanceName, @@ -988,6 +996,10 @@ CIMNamedInstanceString, CIMNamedInstanceToXML, + ############################################################# + # Schema classes + ############################################################# + # CIMClass InitCIMClass, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-21 06:07:47
|
Revision: 71 Author: tpot Date: 2006-07-20 23:07:36 -0700 (Thu, 20 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=71&view=rev Log Message: ----------- Case-insensitive comparison fixes for: - all object location classes - reference_class and superclass properties - parameter names Change order of constructor parameters for CIMClass and CIMMethod to make them a bit more logical. Add return_type to CIMMethod.__repr__() Fix typo in CIMMethod.__cmp__() and PropertyBase.reference_class. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-07-21 05:40:57 UTC (rev 70) +++ trunk/cim_obj.py 2006-07-21 06:07:36 UTC (rev 71) @@ -232,9 +232,9 @@ elif not isinstance(other, CIMObjectLocation): return 1 - return (cmp(self.host, other.host) or + return (cmp(self.host.lower(), other.host.lower()) or cmp(self.localnamespacepath, other.localnamespacepath) or - cmp(self.classname, other.classname) or + cmp(self.classname.lower(), other.classname.lower()) or cmp(self.instancename, other.instancename)) @@ -549,9 +549,17 @@ def __cmp__(self, other): - return (PropertyBase.__cmp__(self, other) - or cmp(self.reference_class, other.reference_class)) + reference_class = self.reference_class + if reference_class is not None: + reference_class = reference_class.lower() + other_reference_class = other.reference_class + if other_reference_class is not None: + other_reference_class = other_reference_class.lower() + + return (PropertyBase.__cmp__(self, other) or + cmp(reference_class, other_reference_class)) + def tocimxml(self): value_reference = None @@ -820,12 +828,10 @@ (self.__class__.__name__, `self.name.classname`) class CIMClass(XMLObject): - """Class, including a description of properties, methods and qualifiers. - superclass may be None.""" - def __init__(self, classname, properties = {}, qualifiers = None, - methods = {}, superclass = None): - assert isinstance(classname, StringTypes) + def __init__(self, classname, properties = {}, methods = {}, + superclass = None, qualifiers = None): + self.classname = classname self.properties = NocaseDict(properties) self.qualifiers = NocaseDict(qualifiers) @@ -836,13 +842,22 @@ return "%s(%s, ...)" % (self.__class__.__name__, `self.classname`) def __cmp__(self, other): + if self is other: return 0 elif not isinstance(other, CIMClass): return 1 - return (cmp(self.classname, other.classname) - or cmp(self.superclass, other.superclass) + superclass = self.superclass + if superclass is not None: + superclass = superclass.lower() + + other_superclass = other.superclass + if other_superclass is not None: + other_superclass = other_superclass.lower() + + return (cmp(self.classname.lower(), other.classname.lower()) + or cmp(superclass, other_superclass) or cmp(self.properties, other.properties) or cmp(self.qualifiers, other.qualifiers) or cmp(self.methods, other.methods)) @@ -858,8 +873,9 @@ class CIMMethod(XMLObject): - def __init__(self, methodname, parameters = {}, qualifiers = None, - return_type = None, class_origin = None, propagated = False): + def __init__(self, methodname, return_type = None, parameters = {}, + class_origin = None, propagated = False, qualifiers = None): + self.name = methodname self.parameters = NocaseDict(parameters) self.qualifiers = NocaseDict(qualifiers) @@ -874,7 +890,8 @@ propagated = self.propagated) def __repr__(self): - return '%s(name=%s, ...)' % (self.__class__.__name__, `self.name`) + return '%s(name=%s, return_type=%s...)' % \ + (self.__class__.__name__, `self.name`, `self.return_type`) def __cmp__(self, other): if self is other: @@ -882,12 +899,12 @@ elif not isinstance(other, CIMMethod): return 1 - return (cmp(self.name, other.name) or + return (cmp(self.name.lower(), other.name.lower()) or cmp(self.parameters, other.parameters) or cmp(self.qualifiers, other.qualifiers) or cmp(self.class_origin, other.class_origin) or cmp(self.propagated, other.propagated) or - cmp(self.type, other.type)) + cmp(self.return_type, other.return_type)) class ParameterBase(XMLObject): """Base class for classes representing CIM method parameters.""" @@ -908,7 +925,7 @@ if self.type: repr += ', type=%s' % `self.type` - if self.reference_type: + if self.reference_class: repr += ', reference_class=%s' % `self.reference_class` if self.array_size: @@ -928,9 +945,25 @@ elif not isinstance(other, self.__class__): return 1 - return (cmp(self.name.lower(), other.name.lower()) or + name = self.name + if name is not None: + name = name.lower() + + other_name = other.name + if other_name is not None: + other_name = other_name.lower() + + reference_class = self.reference_class + if reference_class is not None: + reference_class = reference_class.lower() + + other_reference_class = other.reference_class + if other_reference_class is not None: + other_reference_class = other_reference_class.lower() + + return (cmp(name, other_name) or cmp(self.type, other.type) or - cmp(self.reference_class, other.reference_class) or + cmp(reference_class, other_reference_class) or cmp(self.array_size, other.array_size) or cmp(self.qualifiers, other.qualifiers)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-21 05:41:08
|
Revision: 70 Author: tpot Date: 2006-07-20 22:40:57 -0700 (Thu, 20 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=70&view=rev Log Message: ----------- Add init, attr and compare tests for CIMClass, CIMParameter and friends. Modified Paths: -------------- testsuite/test_cim_obj.py Modified: testsuite/test_cim_obj.py =================================================================== --- testsuite/test_cim_obj.py 2006-07-21 04:44:58 UTC (rev 69) +++ testsuite/test_cim_obj.py 2006-07-21 05:40:57 UTC (rev 70) @@ -695,7 +695,7 @@ # Initialise with methods - # Initialise with qualifiers + CIMClass('CIM_Foo', methods = {'Delete': CIMMethod('Delete')}) class CIMClassAttrs(TestCase): @@ -708,6 +708,29 @@ self.assert_(obj.properties == {}) self.assert_(obj.qualifiers == {}) self.assert_(obj.methods == {}) + +class CompareCIMClass(TestCase): + + def runtest(self): + + self.assert_equal(CIMClass('CIM_Foo'), CIMClass('CIM_Foo')) + self.assert_equal(CIMClass('CIM_Foo'), CIMClass('cim_foo')) + + self.assert_notequal(CIMClass('CIM_Foo', superclass = 'CIM_Bar'), + CIMClass('CIM_Foo')) + + properties = {'InstanceID': + CIMProperty('InstanceID', None, + type = 'string')} + + methods = methods = {'Delete': CIMMethod('Delete')} + + self.assert_notequal(CIMClass('CIM_Foo'), + CIMClass('CIM_Foo', properties = properties)) + + self.assert_notequal(CIMClass('CIM_Foo', properties = properties), + CIMClass('CIM_Foo', properties = properties, + methods = methods)) class CIMClassToXML(ValidateTest): @@ -726,27 +749,189 @@ CIMClass( 'CIM_Foo', methods = {'Delete': CIMMethod('Delete')})) - + ################################################################# # CIMMethod ################################################################# +class InitCIMMethod(TestCase): + + def runtest(self): + + CIMMethod('FooMethod', 'uint32') + + CIMMethod('FooMethod', 'uint32', + parameters = {'Param1': CIMParameter('Param1', 'uint32'), + 'Param2': CIMParameter('Param2', 'string')}) + +class CIMMethodAttrs(TestCase): + + def runtest(self): + + m = CIMMethod('FooMethod', 'uint32', + parameters = {'Param1': CIMParameter('Param1', 'uint32'), + 'Param2': CIMParameter('Param2', 'string')}) + + self.assert_(m.name == 'FooMethod') + self.assert_(m.return_type == 'uint32') + self.assert_(len(m.parameters) == 2) + +class CompareCIMMethod(TestCase): + + def runtest(self): + + self.assert_equal(CIMMethod('FooMethod', 'uint32'), + CIMMethod('FooMethod', 'uint32')) + + self.assert_equal(CIMMethod('FooMethod', 'uint32'), + CIMMethod('fooMethod', 'uint32')) + ################################################################# # CIMParameter ################################################################# +class InitCIMParameter(TestCase): + + def runtest(self): + + CIMParameter('Param1', 'uint32') + CIMParameter('Param2', 'string') + +class CIMParameterAttrs(TestCase): + + def runtest(self): + + p = CIMParameter('Param1', 'string') + + self.assert_(p.name == 'Param1') + self.assert_(p.type == 'string') + +class CompareCIMParameter(TestCase): + + def runtest(self): + + self.assert_equal(CIMParameter('Param1', 'uint32'), + CIMParameter('Param1', 'uint32')) + + self.assert_equal(CIMParameter('Param1', 'uint32'), + CIMParameter('param1', 'uint32')) + + self.assert_notequal(CIMParameter('Param1', 'uint32'), + CIMParameter('param1', 'string')) + ################################################################# # CIMParameterReference ################################################################# +class InitCIMParameterReference(TestCase): + + def runtest(self): + + CIMParameterReference('RefParam', 'CIM_Foo') + +class CIMParameterReferenceAttrs(TestCase): + + def runtest(self): + + p = CIMParameterReference('RefParam', 'CIM_Foo') + + self.assert_(p.name == 'RefParam') + self.assert_(p.reference_class == 'CIM_Foo') + +class CompareCIMParameterReference(TestCase): + + def runtest(self): + + self.assert_equal(CIMParameterReference('RefParam', 'CIM_Foo'), + CIMParameterReference('RefParam', 'CIM_Foo')) + + self.assert_equal(CIMParameterReference('RefParam', 'CIM_Foo'), + CIMParameterReference('refParam', 'CIM_Foo')) + + + self.assert_equal(CIMParameterReference('RefParam', 'CIM_Foo'), + CIMParameterReference('refParam', 'CIM_foo')) + + self.assert_notequal(CIMParameterReference('RefParam', 'CIM_Foo'), + CIMParameterReference('RefParam', 'CIM_Bar')) + ################################################################# # CIMParameterArray ################################################################# +class InitCIMParameterArray(TestCase): + + def runtest(self): + + CIMParameterArray('ArrayParam', 'uint32') + CIMParameterArray('ArrayParam', 'uint32', array_size = 10) + +class CIMParameterArrayAttrs(TestCase): + + def runtest(self): + + p = CIMParameterArray('ArrayParam', 'uint32', array_size = 10) + + self.assert_(p.name == 'ArrayParam') + self.assert_(p.type == 'uint32') + self.assert_(p.array_size == 10) + +class CompareCIMParameterArray(TestCase): + + def runtest(self): + + self.assert_equal(CIMParameterArray('ArrayParam', 'uint32'), + CIMParameterArray('ArrayParam', 'uint32')) + + self.assert_equal(CIMParameterArray('ArrayParam', 'uint32'), + CIMParameterArray('arrayParam', 'uint32')) + + self.assert_notequal(CIMParameterArray('ArrayParam', 'uint32'), + CIMParameterArray('ArrayParam', 'string')) + + self.assert_notequal(CIMParameterArray('ArrayParam', 'uint32'), + CIMParameterArray('ArrayParam', 'string', + array_size = 10)) + ################################################################# # CIMParameterRefArray ################################################################# +class InitCIMParameterRefArray(TestCase): + + def runtest(self): + + CIMParameterRefArray('RefArrayParam') + CIMParameterRefArray('RefArrayParam', 'CIM_Foo') + CIMParameterRefArray('RefArrayParam', 'CIM_Foo', array_size = 10) + +class CIMParameterRefArrayAttrs(TestCase): + + def runtest(self): + + p = CIMParameterRefArray('RefArrayParam', 'CIM_Foo', array_size = 10) + + self.assert_(p.name == 'RefArrayParam') + self.assert_(p.reference_class == 'CIM_Foo') + self.assert_(p.array_size == 10) + +class CompareCIMParameterRefArray(TestCase): + + def runtest(self): + + self.assert_equal(CIMParameterRefArray('ArrayParam', 'CIM_Foo'), + CIMParameterRefArray('ArrayParam', 'CIM_Foo')) + + self.assert_equal(CIMParameterRefArray('ArrayParam', 'CIM_Foo'), + CIMParameterRefArray('arrayParam', 'CIM_Foo')) + + self.assert_equal(CIMParameterRefArray('ArrayParam', 'CIM_Foo'), + CIMParameterRefArray('arrayParam', 'CIM_foo')) + + self.assert_notequal(CIMParameterRefArray('ArrayParam', 'CIM_Foo'), + CIMParameterRefArray('arrayParam', 'CIM_foo', + array_size = 10)) + ################################################################# # Main function ################################################################# @@ -807,14 +992,39 @@ InitCIMClass, CIMClassAttrs, + CompareCIMClass, CIMClassToXML, # CIMMethod + + InitCIMMethod, + CIMMethodAttrs, + CompareCIMMethod, + # CIMParameter + + InitCIMParameter, + CIMParameterAttrs, + CompareCIMParameter, + # CIMParameterReference + + InitCIMParameterReference, + CIMParameterReferenceAttrs, + CompareCIMParameterReference, + # CIMParameterArray + + InitCIMParameterArray, + CIMParameterArrayAttrs, + CompareCIMParameterArray, + # CIMParameterRefArray + InitCIMParameterRefArray, + CIMParameterRefArrayAttrs, + CompareCIMParameterRefArray, + ] if __name__ == '__main__': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-21 04:45:15
|
Revision: 69 Author: tpot Date: 2006-07-20 21:44:58 -0700 (Thu, 20 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=69&view=rev Log Message: ----------- Reference class and array size attributes are marked as IMPLIED in the DTD and are therefore optional. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-07-21 04:20:15 UTC (rev 68) +++ trunk/cim_obj.py 2006-07-21 04:44:58 UTC (rev 69) @@ -944,7 +944,7 @@ class CIMParameterReference(ParameterBase): - def __init__(self, name, reference_class, qualifiers = None): + def __init__(self, name, reference_class = None, qualifiers = None): ParameterBase.__init__(self, name, reference_class = reference_class, qualifiers = qualifiers) @@ -962,7 +962,8 @@ class CIMParameterRefArray(ParameterBase): - def __init__(self, name, reference_class, array_size, qualifiers = None): + def __init__(self, name, reference_class = None, array_size = None, + qualifiers = None): ParameterBase.__init__(self, name, reference_class = reference_class, array_size = array_size, qualifiers = qualifiers) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-21 04:20:23
|
Revision: 68 Author: tpot Date: 2006-07-20 21:20:15 -0700 (Thu, 20 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=68&view=rev Log Message: ----------- Rename CIMMethod.type parameter and variable to return_type. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-07-21 01:47:41 UTC (rev 67) +++ trunk/cim_obj.py 2006-07-21 04:20:15 UTC (rev 68) @@ -859,17 +859,17 @@ class CIMMethod(XMLObject): def __init__(self, methodname, parameters = {}, qualifiers = None, - type = None, class_origin = None, propagated = False): + return_type = None, class_origin = None, propagated = False): self.name = methodname self.parameters = NocaseDict(parameters) self.qualifiers = NocaseDict(qualifiers) self.class_origin = class_origin - self.type = type + self.return_type = return_type self.propagated = propagated def tocimxml(self): return cim_xml.METHOD(self.name, - return_type = self.type, + return_type = self.return_type, class_origin = self.class_origin, propagated = self.propagated) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-21 01:47:55
|
Revision: 67 Author: tpot Date: 2006-07-20 18:47:41 -0700 (Thu, 20 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=67&view=rev Log Message: ----------- Implement tests for read-only scheme access. Modified Paths: -------------- testsuite/test_cim_operations.py Modified: testsuite/test_cim_operations.py =================================================================== --- testsuite/test_cim_operations.py 2006-07-20 22:19:31 UTC (rev 66) +++ testsuite/test_cim_operations.py 2006-07-21 01:47:41 UTC (rev 67) @@ -5,6 +5,7 @@ # from datetime import datetime, timedelta +from types import StringTypes from comfychair import main, TestCase, NotRunError from pywbem import * @@ -340,29 +341,54 @@ ################################################################# class EnumerateClassNames(ClientTest): + def runtest(self): - raise(NotRunError); + names = self.cimcall(self.conn.EnumerateClassNames) + [self.assert_(isinstance(n, StringTypes)) for n in names] + class EnumerateClasses(ClientTest): + def runtest(self): - raise(NotRunError); + classes = self.cimcall(self.conn.EnumerateClasses) + [self.assert_(isinstance(c, CIMClass)) for c in classes] + class GetClass(ClientTest): + def runtest(self): - raise(NotRunError); + name = self.cimcall(self.conn.EnumerateClassNames)[0] + self.cimcall(self.conn.GetClass, name) + class CreateClass(ClientTest): + def runtest(self): - raise(NotRunError); + name = self.cimcall(self.conn.EnumerateClassNames)[0] + klass = self.cimcall(self.conn.GetClass, name) + + self.cimcall(self.conn.CreateClass, klass) + class DeleteClass(ClientTest): + def runtest(self): - raise(NotRunError); + try: + self.cimcall(self.conn.DeleteClass, 'DummyClass') + except CIMError, arg: + if arg[0] != CIM_ERR_NOT_FOUND: + raise + class ModifyClass(ClientTest): + def runtest(self): - raise(NotRunError); + name = self.cimcall(self.conn.EnumerateClassNames)[0] + klass = self.cimcall(self.conn.GetClass, name) + + self.cimcall(self.conn.ModifyClass, klass) + ################################################################# # Property provider interface tests ################################################################# @@ -434,9 +460,9 @@ EnumerateClassNames, EnumerateClasses, GetClass, - CreateClass, - DeleteClass, - ModifyClass, +# CreateClass, +# DeleteClass, +# ModifyClass, # Property provider interface tests This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tp...@us...> - 2006-07-20 22:19:36
|
Revision: 66 Author: tpot Date: 2006-07-20 15:19:31 -0700 (Thu, 20 Jul 2006) ViewCVS: http://svn.sourceforge.net/pywbem/?rev=66&view=rev Log Message: ----------- Implement classes for CIMParameter and friends, in the same manner as CIMProperty. Modified Paths: -------------- trunk/cim_obj.py Modified: trunk/cim_obj.py =================================================================== --- trunk/cim_obj.py 2006-07-20 22:12:25 UTC (rev 65) +++ trunk/cim_obj.py 2006-07-20 22:19:31 UTC (rev 66) @@ -849,8 +849,11 @@ def tocimxml(self): - ## TODO: Don't we need to pack qualfiers, methods, etc? - return cim_xml.CLASS() + return cim_xml.CLASS( + self.classname, + properties = [p.tocimxml() for p in self.properties.values()], + methods = [m.tocimxml() for m in self.methods.values()], + superclass = self.superclass) class CIMMethod(XMLObject): @@ -865,7 +868,10 @@ self.propagated = propagated def tocimxml(self): - return cim_xml.METHOD() + return cim_xml.METHOD(self.name, + return_type = self.type, + class_origin = self.class_origin, + propagated = self.propagated) def __repr__(self): return '%s(name=%s, ...)' % (self.__class__.__name__, `self.name`) @@ -883,79 +889,88 @@ cmp(self.propagated, other.propagated) or cmp(self.type, other.type)) +class ParameterBase(XMLObject): + """Base class for classes representing CIM method parameters.""" -class CIMParameter(XMLObject): - """A parameter to a CIMMethod. + def __init__(self, name, type = None, reference_class = None, + array_size = None, qualifiers = None): - Parameter objects represent parameters to methods defined in a class. + self.name = name + self.type = type + self.reference_class = reference_class + self.array_size = array_size + self.qualifiers = NocaseDict(qualifiers) - Parameters may represent array and reference types. They are represented - in XML PARAMETER, PARAMETER.ARRAY, PARAMETER.REFERENCE, and - PARAMETER.REFARRAY.""" + def __repr__(self): - def __init__(self, name, type, is_reference = False, - is_array = False, array_size=None, qualifiers = None): - """Construct a new CIMParameter + repr = '%s(name=%s' % (self.__class__.__name__, `self.name`) - if is_reference is True, type is the reference class. Otherwise - it is the cim data type""" + if self.type: + repr += ', type=%s' % `self.type` - assert isinstance(name, StringTypes) - # TODO make sure either is_reference is True or type is not None. - self.name = name - self.qualifiers = NocaseDict(qualifiers) - self.is_array = is_array - self.is_reference = is_reference - self.array_size = array_size - self.type = type - + if self.reference_type: + repr += ', reference_class=%s' % `self.reference_class` - def __repr__(self): - r = '%s(name=%s, type=%s' % ('CIMParameter', `self.name`, `self.type`) + if self.array_size: + repr += ', array_size=%s' % `self.array_size` + if self.qualifiers: - r += ', qualifiers=' + `self.qualifiers` - r += ')' - return r + repr += ', qualifiers=%s' % `self.qualifiers` + repr += ')' + return repr + def __cmp__(self, other): + if self is other: return 0 - elif not isinstance(other, CIMParameter): + elif not isinstance(other, self.__class__): return 1 + return (cmp(self.name.lower(), other.name.lower()) or + cmp(self.type, other.type) or + cmp(self.reference_class, other.reference_class) or + cmp(self.array_size, other.array_size) or + cmp(self.qualifiers, other.qualifiers)) - return (cmp(self.name, other.name) - or cmp(self.type, other.type) - or cmp(self.is_array, other.is_array) - or cmp(self.is_reference, other.is_reference) - or cmp(self.array_size, other.array_size) - or cmp(self.qualifiers, other.qualifiers)) - +class CIMParameter(ParameterBase): + def __init__(self, name, type, qualifiers = None): + ParameterBase.__init__(self, name, type, qualifiers = qualifiers) + def tocimxml(self): - if self.is_array: - if self.is_reference: - return PARAMETER_REFARRAY(name=self.name, - array_size=self.array_size, - qualifiers=self.qualifiers, - reference_class=self.type) - else: - return PARAMETER_ARRAY(name=self.name, - type=self.type, - array_size=self.array_size, - qualifiers=self.qualifiers) - else: - if self.is_reference: - return PARAMETER_REFERENCE(name=self.name, - reference_class=self.type, - qualifiers=self.qualifiers) - else: - return PARAMETER(name=self.name, - type=self.type, - qualifiers=self.qualifiers) + return cim_xml.PARAMETER(self.name, self.type) +class CIMParameterReference(ParameterBase): + def __init__(self, name, reference_class, qualifiers = None): + ParameterBase.__init__(self, name, reference_class = reference_class, + qualifiers = qualifiers) + + def tocimxml(self): + return cim_xml.PARAMETER_REFERENCE(self.name, self.reference_class) + +class CIMParameterArray(ParameterBase): + + def __init__(self, name, type, array_size = None, qualifiers = None): + ParameterBase.__init__(self, name, type, array_size = array_size, + qualifiers = qualifiers) + + def tocimxml(self): + return cim_xml.PARAMETER_ARRAY(self.name, self.type, self.array_size) + +class CIMParameterRefArray(ParameterBase): + + def __init__(self, name, reference_class, array_size, qualifiers = None): + ParameterBase.__init__(self, name, reference_class = reference_class, + array_size = array_size, + qualifiers = qualifiers) + + def tocimxml(self): + return cim_xml.PARAMETER_REFARRAY(self.name, self.reference_class, + self.array_size) + class CIMQualifier: """Represents static annotations of a class, method, property, etc. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |