class SMGObjectFactoryTest(unittest.TestCase): def setUp(self): self.factory = SMGObjectFactory() def test_getNullObject(self): null_object = self.factory.getNullObject() self.assertEqual(null_object.getId(), 0) null_object = self.factory.getNullObject() self.assertEqual(null_object.getId(), 0) def test_getNewObject(self): fobject = self.factory.getNewObject(4, True) sobject = self.factory.getNewObject(8, True) self.assertNotEqual(fobject.getId(), 0) self.assertNotEqual(sobject.getId(), 0) self.assertNotEqual(fobject.getId(), sobject.getId())
class SMG(object): def __init__(self): self.objects = {} self.values = {} self.factory_objects = SMGObjectFactory() self.factory_values = SMGValueFactory() null_object = self.factory_objects.getNullObject() null_value = self.factory_values.getNullValue() self._addObject(null_object) self._addValue(null_value) self.addPTEdge(0, null_value, null_object) def _addObject(self, smgObject): self.objects[smgObject.getId()] = smgObject def addObject(self, size, validity=True): new_object = self.factory_objects.getNewObject(size, validity) self._addObject(new_object) return new_object def getObject(self, objectId): return self.objects[objectId] def _addValue(self, smgValue): self.values[smgValue.getId()] = smgValue def addValue(self): new_value = self.factory_values.getNewValue() self._addValue(new_value) return new_value def getValue(self, valueId): return self.values[valueId] def addPTEdge(self, offset, value, smgObject): edge = SMGPTEdge(offset, value, smgObject) edge.wireToVertices() return edge def addHVEdge(self, offset, datatype, smg_object, value): edge = SMGHVEdge(offset, datatype, smg_object, value) edge.wireToVertices() return edge def getObjects(self): return self.objects.values() def getValues(self): return self.values.values() def __str__(self): return """\ == OBJECTS == %s == VALUES == %s == HAS VALUE EDGES == %s == POINTS TO EDGES == %s """ % ( [str(x) for x in self.objects.values() ], [ str(x) for x in self.values.values() ],[ [ str(z) for z in y ] for y in [ x.getHVEdges() for x in self.objects.values() ]], [ str(x.getPTEdge()) for x in self.values.values() if x.getPTEdge() is not None])