"""Smoke tests for the sensor core (stdlib unittest; no hardware assumptions).""" import unittest from rigdoctor.core import sources from rigdoctor.core.sample import Reading, Sample from rigdoctor.core.sampler import Sampler from rigdoctor.render import render_snapshot class CoreTests(unittest.TestCase): def test_available_sources_returns_list(self): self.assertIsInstance(sources.available_sources(), list) def test_sample_groups_and_rows(self): sample = Sample( ts=1.0, readings=[ Reading("gpu", "temp", 50.0, "°C"), Reading("cpu", "temp", 40.0, "°C", "Package id 0"), ], ) self.assertEqual(set(sample.by_source()), {"gpu", "cpu"}) rows = sample.to_rows() self.assertEqual(rows[0]["ts"], 1.0) self.assertEqual(rows[0]["source"], "gpu") def test_reading_handles_none_value(self): text = render_snapshot(Sample(readings=[Reading("gpu", "temp", None, "°C", "memory")])) self.assertIn("N/A", text) def test_sampler_runs(self): sample = Sampler(sources.available_sources()).sample() self.assertIsInstance(sample, Sample) if __name__ == "__main__": unittest.main()