doctest
コルーチンに少し問題があります...
def coroutine(func):
def start(*args, **kwargs):
cr=func(*args, **kwargs)
cr.next()
return cr
start.__name__=func.__name__
return start
@coroutine
def leader_tracking():
"""
Tracks 'leader' status - only returns transitions
>>> lt=leader_tracking()
>>> print lt.send(False)
>>> print lt.send(False)
"""
last_status=False
result=("nop", None)
while True:
status=(yield result)
if status!=last_status:
direction="up" if last_status==False else "down"
last_status=status
result=("tr", direction)
else:
result=("nop", None)
通常のdoctestスキャフォールディングを使用する場合:
if __name__=="__main__":
import doctest
doctest.testmod()
doctest
よりブルートフォース方式を使用した場合、何も表示されません。
lt=leader_tracking()
print lt.send(True)
print lt.send(False)
print lt.send(False)
print lt.send(True)
print lt.send(True)
print lt.send(True)
print lt.send(True)
print lt.send(False)
私は期待される結果を見ることができます:
('tr', 'up')
('tr', 'down')
('nop', None)
('tr', 'up')
('nop', None)
('nop', None)
('nop', None)
('tr', 'down')
私は何が間違っているのdoctest
ですか?