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_linear_ticker_handles_edge_cases(self): self.assertEqual(Geometry.LinearTicker(0, 0).labels, ['0']) self.assertEqual(Geometry.LinearTicker(1, 1).labels, ['1']) self.assertEqual(Geometry.LinearTicker(-1, -1).labels, ['-1']) self.assertEqual( Geometry.LinearTicker(-math.inf, math.inf).labels, ['0']) self.assertEqual( Geometry.LinearTicker(-math.nan, math.nan).labels, ['0']) self.assertEqual(Geometry.LinearTicker(math.nan, 1).labels, ['0']) self.assertEqual(Geometry.LinearTicker(-math.inf, 1).labels, ['0']) self.assertEqual(Geometry.LinearTicker(0, math.inf).labels, ['0'])
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))
def test_ticker_value_label(self): mn, mx = 18000000, 21000000 ticker = Geometry.LinearTicker(mn, mx) self.assertIsNotNone(ticker.value_label(900000))