def test_return_a_future_when_called(self): "should return a future when used" class O (object): def foo(self,arg): assert arg == "bar" return "foobar" actor = dramatis.Actor( O() ) future_name = dramatis.future( actor ) x = future_name.foo("bar") assert isinstance(x,dramatis.Future)
def test_future_eval(self): "should evalute to the right value when used" class O ( object): def foo(self,arg): assert arg == "bar" return "foobar" actor = dramatis.Actor(O()) future_name = dramatis.future( actor ) x = future_name.foo("bar") assert isinstance(x,dramatis.Future) assert str(x) == "foobar"
def test_raise(self): "should raise as appropriate" actor = dramatis.Actor( object() ) future_name = dramatis.future( actor ) x = future_name.bar( "bar" ) assert isinstance(x,dramatis.Future) okay = False try: str(x) except AttributeError: okay = True assert okay
def test_act_like_object(self): "should act like an object ... to the extent possible" class O (object): def foo(self,bar): assert bar == "bar" return 12345 actor = dramatis.Actor(O()) future_name = dramatis.future( actor ) x = future_name.foo("bar") assert isinstance(x,dramatis.Future) # This isn't general; ad hoc implemented # Perhaps not considered pythonic? assert ( x + 0 ) == 12345 assert ( 0 + x ) == 12345
def test_value_if(self): "should have a value interface" class O (object): def foo(self,bar): assert bar == "bar" return 12345 actor = dramatis.Actor(O()) future_name = dramatis.future( actor ) x = future_name.foo("bar") assert isinstance(x,dramatis.Future) x = dramatis.interface( x ).value assert isinstance(x,int) assert x == 12345
def caller(self,callee): self._future = dramatis.future( callee ).callee()
def test_future_names(self): "should allow future names to be created" actor = dramatis.Actor( object() ) future_name = dramatis.future( actor )