"""
Plain vanilla Fibonacci Numbers but with the ability
to reset the initial pair mid-course
Kirby Urner (c) MIT License
"""
import unittest
def fibs(a, b):
while True:
d = yield a # send to a, b
if d:
a, b = d[0], d[1]
continue
b, a = a + b, b
class Test_Fib(unittest.TestCase):
def test_basics(self):
thegen = fibs(0, 1)
self.assertEqual(next(thegen), 0)
self.assertEqual(next(thegen), 1)
self.assertEqual(next(thegen), 1)
self.assertEqual(next(thegen), 2)
self.assertEqual(next(thegen), 3)
self.assertEqual(next(thegen), 5)
self.assertEqual(next(thegen), 8)
self.assertEqual(next(thegen), 13)
self.assertEqual(next(thegen), 21)
def test_updating(self):
thegen = fibs(0, 1)
self.assertEqual(next(thegen), 0)
self.assertEqual(next(thegen), 1)
self.assertEqual(thegen.send((20, 21)), 20) # update pairing
self.assertEqual(next(thegen), 21)
self.assertEqual(next(thegen), 41)
self.assertEqual(next(thegen), 62)
self.assertEqual(next(thegen), 103)
if __name__ == "__main__":
unittest.main()
"""
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
/Users/kurner/Documents/anyproject.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Process finished with exit code 0
"""
_______________________________________________
Edu-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/edu-sig