test_item.py (3307B)
1 # standard imports 2 import unittest 3 4 # local imports 5 from shep import State 6 from shep.error import ( 7 StateExists, 8 StateItemExists, 9 StateInvalid, 10 StateItemNotFound, 11 ) 12 13 14 class TestStateItems(unittest.TestCase): 15 16 def setUp(self): 17 self.states = State(4) 18 self.states.add('foo') 19 self.states.add('bar') 20 self.states.add('baz') 21 self.states.alias('xyzzy', self.states.BAZ | self.states.BAR) 22 self.states.alias('plugh', self.states.FOO | self.states.BAR) 23 24 25 def test_put(self): 26 item = b'foo' 27 28 # put in initial (no) state 29 self.states.put(item) 30 31 with self.assertRaises(StateItemExists): 32 self.states.put(item) 33 34 with self.assertRaises(StateItemExists): 35 self.states.put(item, self.states.BAZ) 36 37 38 def test_item_state(self): 39 item = b'foo' 40 self.states.put(item, state=self.states.XYZZY) 41 self.assertEqual(self.states.state(item), self.states.XYZZY) 42 43 44 def test_item_move(self): 45 item = b'foo' 46 self.states.put(item, state=self.states.FOO) 47 self.states.move(item, self.states.BAR) 48 self.assertEqual(self.states.state(item), self.states.BAR) 49 50 51 def test_item_move_from_alias(self): 52 item = b'foo' 53 self.states.put(item, state=self.states.FOO) 54 self.states.move(item, self.states.XYZZY) 55 self.assertEqual(self.states.state(item), self.states.XYZZY) 56 self.states.move(item, self.states.BAR) 57 self.assertEqual(self.states.state(item), self.states.BAR) 58 59 60 def test_item_move_from_new(self): 61 item = b'foo' 62 self.states.put(item) 63 self.assertEqual(self.states.state(item), self.states.NEW) 64 self.states.move(item, self.states.XYZZY) 65 self.assertEqual(self.states.state(item), self.states.XYZZY) 66 67 68 def test_item_get(self): 69 item = b'foo' 70 self.states.put(item, state=self.states.BAZ, contents='bar') 71 self.assertEqual(self.states.state(item), self.states.BAZ) 72 v = self.states.get(item) 73 self.assertEqual(v, 'bar') 74 75 76 def test_item_set(self): 77 item = b'foo' 78 self.states.put(item, state=self.states.FOO) 79 self.states.set(item, self.states.BAR) 80 self.assertEqual(self.states.state(item), self.states.PLUGH) 81 82 83 def test_item_set_invalid(self): 84 item = b'foo' 85 self.states.put(item, state=self.states.FOO) 86 with self.assertRaises(StateInvalid): 87 self.states.set(item, self.states.BAZ) 88 89 item = b'bar' 90 self.states.put(item, state=self.states.BAR) 91 with self.assertRaises(ValueError): 92 self.states.set(item, self.states.XYZZY) 93 94 95 def test_item_set_invalid(self): 96 item = b'foo' 97 self.states.put(item, state=self.states.XYZZY) 98 self.states.unset(item, self.states.BAZ) 99 self.assertEqual(self.states.state(item), self.states.BAR) 100 101 item = b'bar' 102 self.states.put(item, self.states.XYZZY) 103 with self.assertRaises(ValueError): 104 self.states.unset(item, self.states.PLUGH) 105 106 with self.assertRaises(ValueError): 107 self.states.unset(item, self.states.FOO) # bit not set 108 109 110 if __name__ == '__main__': 111 unittest.main()