示例#1
0
class SMGValueFactoryTest(unittest.TestCase):
  def setUp(self):
    self.factory = SMGValueFactory()
    
  def test_getNullValue(self):
    value = self.factory.getNullValue()
    self.assertEqual(value.getId(), 0)
    value = self.factory.getNullValue()
    self.assertEqual(value.getId(), 0)
示例#2
0
class SMGValueTest(unittest.TestCase):
  def setUp(self):
    self.ofactory = SMGObjectFactory()
    self.vfactory = SMGValueFactory()
    
    self.value = self.vfactory.getNewValue()

  def test_getSetPTEdge(self):
    self.assertIsNone(self.value.getPTEdge())
    
    edge = SMGPTEdge(0, self.value, self.ofactory.getNewObject(8))
    self.value.setPTEdge(edge)
    
    self.assertIs(edge, self.value.getPTEdge())

  def test_getAddHVEdge(self):
    self.assertEqual(0, len(self.value.getHVEdges()))
    
    edge = SMGHVEdge(0, 0, self.ofactory.getNewObject(8), self.value)
    self.value.addHVEdge(edge)
    
    edges = self.value.getHVEdges()
    self.assertIn(edge, edges)
    self.assertEqual(1, len(edges))

  def test_getHVEdgesFiltered(self):
    obj = self.ofactory.getNewObject(16)
    edgeAt0 = SMGHVEdge(0, 0, obj, self.value)
    edgeAt8 = SMGHVEdge(8, 0, obj, self.value)
    self.value.addHVEdge(edgeAt0)
    self.value.addHVEdge(edgeAt8)
    
    edges = self.value.getHVEdges(offset=0)
    self.assertEqual(1, len(edges))
    self.assertIn(edgeAt0, edges)
示例#3
0
class SMGObjectGenericTest(unittest.TestCase):
  def setUp(self):
    self.vfactory = SMGValueFactory()
    self.ofactory = SMGObjectFactory()

    self.object = self.ofactory.getNewObject(8)

  def test_getAddPTEdges(self):
    edges = self.object.getPTEdges()
    self.assertEqual(0, len(edges))
    
    edge = SMGPTEdge(0, self.vfactory.getNewValue(), self.object)
    self.object.addPTEdge(edge)
    
    edges = self.object.getPTEdges()
    self.assertEqual(1, len(edges))
    self.assertIs(edges[0], edge)

  def test_getAddHVEdges(self):
    edges = self.object.getHVEdges()
    self.assertEqual(0, len(edges))
    
    edge = SMGHVEdge(0, 0, self.object, self.vfactory.getNewValue())
    self.object.addHVEdge(edge)
    
    edges = self.object.getHVEdges()
    self.assertEqual(1, len(edges))
    self.assertIs(edges[0], edge)

  def test_getHVEdgesFiltered(self):
    obj = self.ofactory.getNewObject(16)
    val = self.vfactory.getNewValue()
    edgeAt0 = SMGHVEdge(0, 0, obj, val)
    edgeAt8 = SMGHVEdge(8, 4, obj, val)
    self.object.addHVEdge(edgeAt0)
    self.object.addHVEdge(edgeAt8)
    
    edges = self.object.getHVEdges(offset=0)
    self.assertEqual(1, len(edges))
    self.assertIn(edgeAt0, edges)
    
    edges = self.object.getHVEdges(datatype=4)
    self.assertEqual(1, len(edges))
    self.assertIn(edgeAt8, edges)
示例#4
0
 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)
示例#5
0
class PTEdgeTest(unittest.TestCase):
  def setUp(self):
    self.ofactory = SMGObjectFactory()
    self.vfactory = SMGValueFactory()
    
  def test_constructor(self):
    obj = self.ofactory.getNewObject(4, True)
    val = self.vfactory.getNewValue()
    
    edge = SMGPTEdge(0, val, obj)
    
    self.assertIs(obj, edge.getObject())
    self.assertIs(val, edge.getValue())
    self.assertEqual(0, edge.getOffset())
    
    ptedges_to_object = obj.getPTEdges()
    ptedge_from_value = val.getPTEdge()
    
    self.assertEqual(len(ptedges_to_object), 0)
    self.assertIs(ptedge_from_value, None)
    
  def test_wireToVertices(self):
    obj = self.ofactory.getNewObject(4, True)
    val = self.vfactory.getNewValue()
    
    edge = SMGPTEdge(0, val, obj)
    edge.wireToVertices()
    
    ptedges_to_object = obj.getPTEdges()
    ptedge_from_value = val.getPTEdge()
    
    self.assertEqual(len(ptedges_to_object), 1)
    self.assertIs(ptedges_to_object[0], edge)
    
    self.assertIs(ptedge_from_value, edge)
    
示例#6
0
class HVEdgeTest(unittest.TestCase):
  def setUp(self):
    self.ofactory = SMGObjectFactory()
    self.vfactory = SMGValueFactory()
    
  def test_constructor(self):
    obj = self.ofactory.getNewObject(8, True)
    val = self.vfactory.getNewValue()
    
    edge = SMGHVEdge(0, 0, obj, val)
    
    self.assertIs(obj, edge.getObject())
    self.assertIs(val, edge.getValue())
    self.assertEqual(0, edge.getOffset())
    self.assertEqual(0, edge.getDataType())
    
    hvedges_from_object = obj.getHVEdges()
    hvedges_to_value = val.getHVEdges()
    
    self.assertEqual(len(hvedges_from_object), 0)
    self.assertEqual(len(hvedges_to_value), 0)
    
  def test_wireToVertices(self):
    obj = self.ofactory.getNewObject(8, True)
    val = self.vfactory.getNewValue()
    
    edge = SMGHVEdge(0, 0, obj, val)
    edge.wireToVertices()
    
    hvedges_from_object = obj.getHVEdges()
    hvedges_to_value = val.getHVEdges()
    
    self.assertEqual(len(hvedges_from_object), 1)
    self.assertIn(edge, hvedges_from_object)
    self.assertEqual(len(hvedges_to_value), 1)
    self.assertIn(edge, hvedges_to_value)
示例#7
0
  def setUp(self):
    self.vfactory = SMGValueFactory()
    self.ofactory = SMGObjectFactory()

    self.object = self.ofactory.getNewObject(8)
示例#8
0
 def setUp(self):
   self.ofactory = SMGObjectFactory()
   self.vfactory = SMGValueFactory()
   
   self.value = self.vfactory.getNewValue()
示例#9
0
 def setUp(self):
   self.factory = SMGValueFactory()
示例#10
0
 def setUp(self):
   self.ofactory = SMGObjectFactory()
   self.vfactory = SMGValueFactory()
示例#11
0
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])