shep/tests/test_state.py

104 lines
2.2 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)
def test_peek(self):
states = State(3)
states.add('foo')
states.add('bar')
states.put('abcd')
self.assertEqual(states.peek('abcd'), states.FOO)
states.move('abcd', states.FOO)
self.assertEqual(states.peek('abcd'), states.BAR)
states.move('abcd', states.BAR)
with self.assertRaises(StateInvalid):
self.assertEqual(states.peek('abcd'))
def test_from_name(self):
states = State(3)
states.add('foo')
self.assertEqual(states.from_name('foo'), states.FOO)
if __name__ == '__main__':
unittest.main()