shep/tests/test_state.py

81 lines
1.7 KiB
Python

# standard imports
import unittest
# local imports
from shep import State
from shep.error import (
StateExists,
StateInvalid,
)
class TestState(unittest.TestCase):
def test_key_check(self):
states = State(3)
states.add('foo')
for k in [
'f0o',
'f oo',
'f_oo',
]:
with self.assertRaises(ValueError):
states.add(k)
def test_get(self):
states = State(3)
states.add('foo')
states.add('bar')
states.add('baz')
self.assertEqual(states.BAZ, 4)
def test_limit(self):
states = State(2)
states.add('foo')
states.add('bar')
with self.assertRaises(OverflowError):
states.add('baz')
def test_dup(self):
states = State(2)
states.add('foo')
with self.assertRaises(StateExists):
states.add('foo')
def test_alias(self):
states = State(2)
states.add('foo')
states.add('bar')
states.alias('baz', states.FOO | states.BAR)
self.assertEqual(states.BAZ, 3)
def test_alias_limit(self):
states = State(2)
states.add('foo')
states.add('bar')
states.alias('baz', states.FOO | states.BAR)
def test_alias_nopure(self):
states = State(3)
with self.assertRaises(ValueError):
states.alias('foo', 1)
def test_alias_cover(self):
states = State(3)
states.add('foo')
states.add('bar')
with self.assertRaises(StateInvalid):
states.alias('baz', 5)
if __name__ == '__main__':
unittest.main()