Уточнить обработку плотных трендов и восстановление сигналов

This commit is contained in:
2026-10-12 00:48:15 +03:00
parent 20454ff7fa
commit bbb4bc2b9d
14 changed files with 91 additions and 14 deletions

View File

@@ -53,6 +53,21 @@ class PlotTests(unittest.TestCase):
crossed = markers.move(Marker.A, 1900).move(Marker.B, 1100)
self.assertEqual(-800, self.core.delta(crossed.a, crossed.b))
def test_deep_x_zoom_preserves_anchor_and_allows_pan_and_zoom_out(self):
view = Viewport()
for _ in range(65):
view = view.transform(self.core, zoom_x=1.25, focus_x=.3)
self.assertAlmostEqual(.3, view.x + .3 * view.width)
self.assertLess(view.width * 5_000_000, 3)
moved = view.transform(self.core, pan_x=.2)
self.assertLess(moved.x, view.x)
self.assertEqual(view.width, moved.width)
expanded = moved.transform(self.core, zoom_x=.8)
self.assertGreater(expanded.width, moved.width)
limited = view.transform(self.core, zoom_x=1e10)
self.assertEqual(1e-7, limited.width)
self.assertEqual(limited, limited.transform(self.core, zoom_x=2))
def test_invalid_numeric_inputs_do_not_escape_to_painter(self):
for value in (math.nan, math.inf, -math.inf):
self.assertEqual(Viewport(), Viewport().transform(self.core, zoom_x=value))