Skip to content

Commit

Permalink
Merge pull request #1758 from Dr15Jones/pythonObjectsCompareToBool
Browse files Browse the repository at this point in the history
Framework -- Have python parameter objects implement expected boolean conversions
  • Loading branch information
ktf committed Dec 12, 2013
2 parents e775ed1 + 892971b commit bf9e727
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion FWCore/ParameterSet/python/Types.py
Expand Up @@ -39,6 +39,8 @@ def _valueFromString(value):
return int32(int(value))
def insertInto(self, parameterSet, myname):
parameterSet.addInt32(self.isTracked(), myname, self.value())
def __nonzero__(self):
return self.value()!=0


class uint32(_SimpleParameterTypeBase):
Expand All @@ -54,6 +56,8 @@ def _valueFromString(value):
return uint32(long(value))
def insertInto(self, parameterSet, myname):
parameterSet.addUInt32(self.isTracked(), myname, self.value())
def __nonzero__(self):
return self.value()!=0



Expand All @@ -71,6 +75,8 @@ def _valueFromString(value):
return int64(long(value))
def insertInto(self, parameterSet, myname):
parameterSet.addInt64(self.isTracked(), myname, self.value())
def __nonzero__(self):
return self.value()!=0



Expand All @@ -87,6 +93,8 @@ def _valueFromString(value):
return uint64(long(value))
def insertInto(self, parameterSet, myname):
parameterSet.addUInt64(self.isTracked(), myname, self.value())
def __nonzero__(self):
return self.value()!=0



Expand All @@ -104,6 +112,8 @@ def _valueFromString(value):
return double(float(value))
def insertInto(self, parameterSet, myname):
parameterSet.addDouble(self.isTracked(), myname, float(self.value()))
def __nonzero__(self):
return self.value()!=0.


import __builtin__
Expand All @@ -125,6 +135,8 @@ def _valueFromString(value):
raise RuntimeError('can not make bool from string '+value)
def insertInto(self, parameterSet, myname):
parameterSet.addBool(self.isTracked(), myname, self.value())
def __nonzero__(self):
return self.value()



Expand Down Expand Up @@ -159,6 +171,8 @@ def insertInto(self, parameterSet, myname):
#if value == '\0':
# value = ''
parameterSet.addString(self.isTracked(), myname, value)
def __nonzero__(self):
return len(self.value()) !=0


class EventID(_ParameterTypeBase):
Expand Down Expand Up @@ -190,7 +204,7 @@ def _isValid(value):
@staticmethod
def _valueFromString(value):
parts = value.split(":")
run = parts[0]
run = parts[0]
try:
lumi = parts[1]
event = parts[2]
Expand Down Expand Up @@ -1186,15 +1200,19 @@ class testTypes(unittest.TestCase):
def testint32(self):
i = int32(1)
self.assertEqual(i.value(),1)
self.assert_(i)
self.assertRaises(ValueError,int32,"i")
i = int32._valueFromString("0xA")
self.assertEqual(i.value(),10)
self.assert_(not int32(0))

def testuint32(self):
i = uint32(1)
self.assertEqual(i.value(),1)
self.assert_(i)
i = uint32(0)
self.assertEqual(i.value(),0)
self.assert_(not i)
self.assertRaises(ValueError,uint32,"i")
self.assertRaises(ValueError,uint32,-1)
i = uint32._valueFromString("0xA")
Expand All @@ -1203,9 +1221,11 @@ def testuint32(self):
def testvint32(self):
v = vint32()
self.assertEqual(len(v),0)
self.assert_(not v)
v.append(1)
self.assertEqual(len(v),1)
self.assertEqual(v[0],1)
self.assert_(v)
v.append(2)
v.insert(1,3)
self.assertEqual(v[1],3)
Expand All @@ -1219,20 +1239,24 @@ def testvint32(self):
def testbool(self):
b = bool(True)
self.assertEqual(b.value(),True)
self.assert_(b)
b = bool(False)
self.assertEqual(b.value(),False)
self.assert_(not b)
b = bool._valueFromString("2")
self.assertEqual(b.value(),True)
self.assertEqual(repr(b), "cms.bool(True)")
def testString(self):
s=string('this is a test')
self.assertEqual(s.value(),'this is a test')
self.assertEqual(repr(s), "cms.string(\'this is a test\')")
self.assert_(s)
s=string('\0')
self.assertEqual(s.value(),'\0')
self.assertEqual(s.configValue(),"'\\0'")
s2=string('')
self.assertEqual(s2.value(),'')
self.assert_(not s2)
def testvstring(self):
a = vstring("", "Barack", "John", "Sarah", "Joe")
self.assertEqual(len(a), 5)
Expand Down

0 comments on commit bf9e727

Please sign in to comment.