def test_ticker_produces_expected_labels(self): self.assertListEqual( Geometry.LinearTicker(0, 1e8, ticks=3).labels, ['0e+00', '5e+07', '1.0e+08']) self.assertListEqual( Geometry.LogTicker(0, 8, ticks=3).labels, ['1e+00', '1e+03', '1e+06', '1e+09']) self.assertListEqual( Geometry.LinearTicker(0, 1000, ticks=3).labels, ['0', '500', '1000']) self.assertListEqual( Geometry.LogTicker(0, 3, ticks=3).labels, ['1e+00', '1e+01', '1e+02', '1e+03']) self.assertListEqual( Geometry.LinearTicker(2e-18, 1.11252e-10, ticks=5).labels, ['0e+00', '5.0e-11', '1.0e-10', '1.50e-10']) self.assertListEqual( Geometry.LogTicker(math.log10(2e-18), math.log10(1.11252e-10), ticks=5).labels, ['1e-18', '1e-16', '1e-14', '1e-12', '1e-10', '1e-08']) self.assertListEqual( Geometry.LogTicker(math.log10(1E12), math.log10(1.000062E12), ticks=5).labels, ['1.00000e+12', '1.00002e+12', '1.00005e+12', '1.00007e+12']) self.assertListEqual( Geometry.LogTicker(math.log10(1E8 - 0.002), math.log10(1E8 + 0.002), ticks=3).labels, ['9.99999999977e+07', '1.00000000000e+08', '1.00000000002e+08'])
def test_log_ticker_handles_edge_cases(self): self.assertEqual( Geometry.LogTicker(0, 0, ticks=3).labels, ['1e+00', '1e+01']) self.assertEqual( Geometry.LogTicker(1, 1, ticks=3).labels, ['1e+01', '1e+02']) self.assertEqual( Geometry.LogTicker(-1, -1, ticks=3).labels, ['1e-01', '1e+00']) self.assertEqual( Geometry.LogTicker(-math.inf, math.inf).labels, ['0e+00']) self.assertEqual( Geometry.LogTicker(-math.nan, math.nan).labels, ['0e+00']) self.assertEqual(Geometry.LogTicker(math.nan, 1).labels, ['0e+00']) self.assertEqual(Geometry.LogTicker(-math.inf, 1).labels, ['0e+00']) self.assertEqual(Geometry.LogTicker(0, math.inf).labels, ['0e+00'])
def test_ticker_produces_unique_labels(self): pairs = ((1, 4), (.1, .4), (1E12, 1.000062E12), (1E-18, 1.000062E-18), (-4, -1), (-10000.001, -10000.02), (1E8 - 0.002, 1E8 + 0.002), (0, 1E8 + 0.002)) for logarithmic in (False, True): for l, h in pairs: if not logarithmic or (l > 0 and h > 0): with self.subTest(l=l, h=h, logarithmic=logarithmic): if logarithmic: ticker = Geometry.LogTicker( math.log10(l), math.log10(h)) else: ticker = Geometry.LinearTicker(l, h) self.assertEqual(len(set(ticker.labels)), len(ticker.labels))