Files
2026-09-30 10:45:48 +08:00

37 lines
1.4 KiB
Python

import tempfile
import unittest
from pathlib import Path
import numpy as np
import pyarrow.parquet as pq
from run_audit import first_ticks, temporal_relation, min_observed, EventSink
class HarnessTests(unittest.TestCase):
def test_first_tick_uses_minimum_not_order(self):
self.assertEqual(first_ticks(np.array([4, 2, 3], np.int32), np.array([7, 7, 8], np.int32),
np.array([7, 8, 9], np.int32)).tolist(), [2, 3, -1])
def test_strict_temporal_boundary(self):
self.assertEqual(temporal_relation(17, 18), 'before')
self.assertEqual(temporal_relation(18, 18), 'same_tick')
self.assertEqual(temporal_relation(19, 18), 'after')
self.assertEqual(temporal_relation(-1, 18), 'unobserved_source')
self.assertEqual(temporal_relation(18, -1), 'unobserved_target')
self.assertEqual(temporal_relation(-1, -1), 'both_unobserved')
def test_min_observed(self):
self.assertEqual(min_observed([-1, 0, 3]), 0)
self.assertEqual(min_observed([-1, -1]), -1)
def test_empty_event_sink_has_schema(self):
with tempfile.TemporaryDirectory() as tmp:
path = Path(tmp) / 'events.parquet'
sink = EventSink(path)
sink.close()
self.assertEqual(pq.read_table(path).num_rows, 0)
self.assertIn('source_spike_tick', pq.read_schema(path).names)
if __name__ == '__main__':
unittest.main()