saucebrush/tests/recipes.py

53 lines
1.4 KiB
Python
Raw Normal View History

2010-06-30 18:13:31 +00:00
import unittest
2010-07-01 17:47:22 +00:00
from saucebrush import Recipe, run_recipe, SaucebrushError, OvercookedError
2010-06-30 18:13:31 +00:00
from saucebrush.filters import Filter
class Raiser(Filter):
def process_record(self, record):
raise Exception("bad record")
class Saver(Filter):
def __init__(self):
self.saved = []
def process_record(self, record):
self.saved.append(record)
return record
class RecipeTestCase(unittest.TestCase):
def test_error_stream(self):
saver = Saver()
recipe = Recipe(Raiser(), error_stream=saver)
2022-11-11 03:26:09 +00:00
recipe.run([{"a": 1}, {"b": 2}])
2010-06-30 19:31:30 +00:00
recipe.done()
2022-11-11 03:26:09 +00:00
self.assertEqual(saver.saved[0]["record"], {"a": 1})
self.assertEqual(saver.saved[1]["record"], {"b": 2})
2010-06-30 18:13:31 +00:00
2010-07-01 17:47:22 +00:00
# Must pass either a Recipe, a Filter or an iterable of Filters
# as the error_stream argument
self.assertRaises(SaucebrushError, Recipe, error_stream=5)
2010-06-30 19:31:30 +00:00
def test_run_recipe(self):
saver = Saver()
run_recipe([1, 2], saver)
self.assertEqual(saver.saved, [1, 2])
def test_done(self):
saver = Saver()
recipe = Recipe(saver)
recipe.run([1])
recipe.done()
2010-07-01 17:47:22 +00:00
self.assertRaises(OvercookedError, recipe.run, [2])
self.assertRaises(OvercookedError, recipe.done)
self.assertEqual(saver.saved, [1])
2010-06-30 18:13:31 +00:00
2022-11-11 03:26:09 +00:00
if __name__ == "__main__":
2010-06-30 18:13:31 +00:00
unittest.main()