P08-03: 配置の通常操作受入

This commit is contained in:
Agent Control Runner
2026-10-15 00:12:44 +09:00
parent fd643f55a2
commit f5f85ae08c
6 changed files with 342 additions and 8 deletions
@@ -98,6 +98,60 @@ class EvidenceTests(unittest.TestCase):
def test_positive_whole_checker(self):
self.assertEqual([], C.check(self.root, self.out))
def edit_os_request(self, folder, callback):
self.edit(folder+'/request.json', callback)
self.edit(folder+'/ack.json', lambda d: d.update(request_sha256=C.sha(self.out/(folder+'/request.json'))))
def test_reveal_missing_thumb(self):
self.edit_os_request('os-pair/supported_connected-1', lambda d: d.pop('thumb_rect'))
self.reject('unverified palette reveal')
def test_reveal_missing_bar(self):
self.edit_os_request('os-pair/supported_connected-1', lambda d: d.pop('bar'))
self.reject('unverified palette reveal')
def test_reveal_not_visible(self):
self.edit('os-pair/supported_connected-1/reveal.json', lambda d: d.update(visible_after=False))
self.reject('unverified palette reveal')
def test_reveal_target_outside(self):
self.edit('os-pair/supported_connected-1/reveal.json', lambda d: d.update(target_rect=[110,0,20,20]))
self.reject('unverified palette reveal')
def test_reveal_unchanged_scroll(self):
self.edit('os-pair/supported_connected-1/reveal.json', lambda d: d.update(scroll_after=0))
self.reject('palette reveal direction mismatch')
def test_reveal_opposite_scroll(self):
self.edit('os-pair/supported_connected-1/reveal.json', lambda d: d.update(scroll_after=-1))
self.reject('palette reveal direction mismatch')
def test_reveal_next_wrong_node(self):
self.edit_os_request('os-pair/supported_connected-2', lambda d: d.update(node='/other'))
self.reject('unverified palette reveal')
def test_reveal_next_not_button(self):
self.edit_os_request('os-pair/supported_connected-2', lambda d: d.update(action='framing'))
self.reject('unverified palette reveal')
def terminal(self, sequence):
F.put(self.out/'os-pair/writer-terminal.json', {'pid':303, 'role':'writer',
'sequence':sequence, 'stem':'writer-request', 'reason':'timeout'})
F.repin(self.out)
def test_terminal_failure(self):
sequences = [C.load(p)['sequence'] for p in (self.out/'os-pair').glob('*/request.json')]
self.terminal(max(sequences))
self.reject('terminal OS failure')
def test_terminal_continuation(self):
self.terminal(1)
self.reject('terminal OS continuation')
def test_os_sequence_gap(self):
self.edit_os_request('os-pair/supported_connected-2', lambda d: d.update(sequence=999))
self.reject('OS request sequence gap')
def action_row(self, label):
rows = C.load(self.out/'pair/writer-actions.json')['actions']
return copy.deepcopy(next(row for row in rows if row['id'] == label))