69 lines
1.4 KiB
Python
69 lines
1.4 KiB
Python
# standard imports
|
|
import unittest
|
|
|
|
# local imports
|
|
from schiz import State
|
|
from schiz.error import (
|
|
StateExists,
|
|
StateInvalid,
|
|
)
|
|
|
|
|
|
class TestState(unittest.TestCase):
|
|
|
|
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', 4)
|
|
|
|
|
|
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()
|