def test_yield_3(self):
		def machine(n):
			for _ in range(n):
				yield
			raise IOError
		state = State(machine)
		state.tick(3)
		state.tick(3)
		state.tick(3)
		try: state.tick(3)
		except IOError: return
		assert False, 'Expecting IOError exception, but none was raised!'
	def test_restart(self):
		class Machine:
			def hop(self):
				self.n = 0
				yield
				self.n += 1
		m = Machine()
		state = State(m.hop)
		state.tick()
		assert m.n == 0
		state.tick()
		assert m.n == 1
		state.tick()	# State machine method restarted.
		assert m.n == 0