Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MealyError(Exception):
- def __init__(self, method_name):
- self.method_name = method_name
- class Mealy:
- def __init__(self):
- self.state = 'A'
- def herd(self):
- if self.state == 'A':
- self.state = 'B'
- return 0
- elif self.state == 'B':
- self.state = 'C'
- return 2
- elif self.state == 'D':
- self.state = 'E'
- return 5
- elif self.state == 'E':
- self.state = 'F'
- return 7
- elif self.state == 'F':
- self.state = 'G'
- return 8
- else:
- raise MealyError('herd')
- def stash(self):
- if self.state == 'A':
- self.state = 'C'
- return 1
- elif self.state == 'B':
- self.state = 'G'
- return 3
- elif self.state == 'C':
- self.state = 'D'
- return 4
- elif self.state == 'D':
- self.state = 'G'
- return 6
- elif self.state == 'G':
- self.state = 'C'
- return 9
- else:
- raise MealyError('stash')
- def error(func, name):
- try:
- func()
- except MealyError as error:
- assert str(error) == name
- def test():
- o = main()
- o.state = "A"
- assert o.herd() == 0
- o.state = "A"
- assert o.stash() == 1
- o.state = "B"
- assert o.herd() == 2
- o.state = "B"
- assert o.stash() == 3
- o.state = "C"
- assert o.stash() == 4
- o.state = "C"
- error(o.herd, "herd")
- o.state = "D"
- assert o.herd() == 5
- o.state = "D"
- assert o.stash() == 6
- o.state = "E"
- assert o.herd() == 7
- o.state = "E"
- error(o.stash, "stash")
- o.state = "F"
- assert o.herd() == 8
- o.state = "F"
- error(o.stash, "stash")
- o.state = "G"
- assert o.stash() == 9
- o.state = "G"
- error(o.stash, "heard")
- def main():
- return Mealy()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement