File size: 1,404 Bytes
795f737 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import unittest
from baim.actions import Action, Kind, Decision
from baim.authority import Authority, Rejected
from baim.state import State
class ActionTests(unittest.TestCase):
def test_round_trip_escaping(self):
action = Action(Kind.TYPE, ('e1', 'quotes " newline\nUnicode नमस्ते'))
self.assertEqual(Action.parse(action.encode()), action)
def test_reject_bad_wire(self):
for wire in ['C["e1", "extra"]', 'Q[]', 'W[true]', 'W[-1]', 'W[2001]',
'F{}', 'T["e1"]', 'C["e1"] trailing', 'S[0,99999]']:
with self.subTest(wire=wire), self.assertRaises(ValueError):
Action.parse(wire)
def test_task_replacement_and_replay(self):
authority = Authority()
authority.replace('First')
state = State('doc', 1, 'http://localhost', ())
ticket = authority.ticket(state)
authority.consume()
with self.assertRaises(Rejected):
authority.validate(ticket, state)
ticket = authority.ticket(state)
authority.replace('Second')
with self.assertRaises(Rejected):
authority.validate(ticket, state)
def test_confidence_is_not_fabricated(self):
self.assertIsNone(Decision(None, Action(Kind.FINISH)).action_confidence)
with self.assertRaises(ValueError):
Decision(None, Action(Kind.FINISH), float('nan'))
|