"""Run with python verify.py [path-to-candidate.py]. No dependencies.""" import importlib.util import itertools import pathlib import sys import unittest path=pathlib.Path(sys.argv[1]) if len(sys.argv)>1 else pathlib.Path(__file__).with_name('solution.py') spec=importlib.util.spec_from_file_location('candidate',path) module=importlib.util.module_from_spec(spec);spec.loader.exec_module(module) normalize=module.normalize_events def event(i='a',at='2026-01-01T10:00:00Z',kind='created'): return {'id':i,'at':at,'type':kind} class EventChecks(unittest.TestCase): def test_offsets_sorted_by_instant(self): out=normalize([event('later','2026-01-01T09:30:00+00:00'),event('earlier','2026-01-01T10:00:00+01:00')]) self.assertEqual([x['id'] for x in out],['earlier','later']) def test_equivalent_replay_deduplicated(self): self.assertEqual(len(normalize([event(),event(at='2026-01-01T11:00:00+01:00')])),1) def test_conflicting_replay_rejected(self): with self.assertRaises(ValueError):normalize([event(),event(kind='deleted')]) def test_naive_timestamp_rejected(self): with self.assertRaises(ValueError):normalize([event(at='2026-01-01T10:00:00')]) def test_invalid_timestamp_rejected(self): for bad in ['yesterday','2026-02-31T10:00:00Z','2026-01-01']: with self.subTest(at=bad),self.assertRaises(ValueError):normalize([event(at=bad)]) def test_empty_input(self): self.assertEqual(normalize([]),[]) def test_missing_field_rejected(self): for key in ['id','at','type']: data=event();del data[key] with self.subTest(field=key),self.assertRaises(ValueError):normalize([data]) def test_tied_times_use_id(self): self.assertEqual([x['id'] for x in normalize([event('z'),event('a')])],['a','z']) def test_subsecond_precision_preserved(self): self.assertEqual(normalize([event(at='2026-01-01T10:00:00.123456Z')])[0]['at'],'2026-01-01T10:00:00.123456Z') def test_permutation_invariance(self): data=[event('c','2026-01-01T12:00:00Z'),event('b'),event('a')] wanted=[{'id':i,'at':t,'type':'created'} for i,t in [('a','2026-01-01T10:00:00.000000Z'),('b','2026-01-01T10:00:00.000000Z'),('c','2026-01-01T12:00:00.000000Z')]] for perm in itertools.permutations(data):self.assertEqual(normalize(perm),wanted) if __name__=='__main__':unittest.main(argv=[sys.argv[0]],verbosity=2)