removed data from ResultBase.__init__, due to unobvious semantics + unnecessary…

removed data from ResultBase.__init__, due to unobvious semantics + unnecessary behaviour. added failing link test of input dependencies
上级 ae044042
......@@ -9,8 +9,9 @@ from env import Env
class Double(ResultBase):
def __init__(self, data, name = "oignon"):
ResultBase.__init__(self, role = None, name = name)
assert isinstance(data, float)
ResultBase.__init__(self, role = None, data = data, name = name)
self.data = data
def __str__(self):
return self.name
......
......@@ -13,7 +13,8 @@ from toolbox import EquivTool
class MyResult(ResultBase):
def __init__(self, name):
ResultBase.__init__(self, role = None, data = [1000], name = name)
ResultBase.__init__(self, role = None, name = name)
self.data = [1000]
def __str__(self):
return self.name
......
......@@ -11,7 +11,8 @@ class MyResult(ResultBase):
def __init__(self, thingy):
self.thingy = thingy
ResultBase.__init__(self, role = None, data = [self.thingy])
ResultBase.__init__(self, role = None )
self.data = [self.thingy]
def __eq__(self, other):
return self.same_properties(other)
......
......@@ -11,8 +11,9 @@ from link import *
class Double(ResultBase):
def __init__(self, data, name = "oignon"):
ResultBase.__init__(self, role = None, name = name)
assert isinstance(data, float)
ResultBase.__init__(self, role = None, data = data, name = name)
self.data = data
def __str__(self):
return self.name
......@@ -103,6 +104,22 @@ class _test_PerformLinker(unittest.TestCase):
assert fn(1.0, 2.0, 3.0) == 1.5
assert e.data != 1.5
def test_input_output_same(self):
x, y, z = inputs()
a,d = add(x,y), div(x,y)
e = mul(a,d)
fn = perform_linker(env([e], [e])).make_function()
self.failUnless(1 is fn(1))
def test_input_dependency0(self):
x, y, z = inputs()
a,d = add(x,y), div(x,y)
e = mul(a,d)
fn = perform_linker(env([x, a], [e])).make_function()
#perform linker should have recognized that one input is a function of
#the other one, which makes no sense
self.fail('this graph should not have been compiled')
if __name__ == '__main__':
unittest.main()
......
......@@ -12,8 +12,9 @@ from env import Env
class Double(ResultBase):
def __init__(self, data, name = "oignon"):
ResultBase.__init__(self, role = None, name = name)
assert isinstance(data, float)
ResultBase.__init__(self, role = None, data = data, name = name)
self.data = data
def __str__(self):
return self.name
......
......@@ -9,7 +9,8 @@ class MyResult(ResultBase):
def __init__(self, thingy):
self.thingy = thingy
ResultBase.__init__(self, role = None, data = [self.thingy])
ResultBase.__init__(self, role = None)
self.data = [self.thingy]
def __eq__(self, other):
return self.same_properties(other)
......
......@@ -11,7 +11,8 @@ from toolbox import *
class MyResult(ResultBase):
def __init__(self, name):
ResultBase.__init__(self, role = None, data = [1000], name = name)
ResultBase.__init__(self, role = None, name = name)
self.data = [1000]
def __str__(self):
return self.name
......
......@@ -13,7 +13,8 @@ from toolbox import *
class MyResult(ResultBase):
def __init__(self, name):
ResultBase.__init__(self, role = None, data = [1000], name = name)
ResultBase.__init__(self, role = None, name = name)
self.data = [1000]
def __str__(self):
return self.name
......
......@@ -57,11 +57,10 @@ class ResultBase(object):
__slots__ = ['_role', '_data', 'state', '_name']
def __init__(self, role=None, data=None, name=None):
def __init__(self, role=None, name=None):
self._role = role
self._data = [None]
self.state = Empty
self.__set_data(data)
self.name = name
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论