def test_conformity(self): """ The general binary search in the base class binFinder should always give exactly the same result as any implementation for any special case. """ bins = [6, 7, 8, 9, 10, 11, 44, 176, 704, 2816] bf_A = binner._linlogBinFinder(bins) bf_B = binner._binFinder(bins) for value in [6, 11, 100, 176, 704, 2815]: self.assertEqual(bf_A(value), bf_B(value))
def test_linlogBinFinder(self): # Test typical case. bins = range(1, 12) + [22, 44, 88] bf = binner._linlogBinFinder(bins) self.assertEqual(bf(1), 0) self.assertEqual(bf(7), 6) self.assertEqual(bf(10), 9) self.assertEqual(bf(11), 10) self.assertEqual(bf(20), 10) self.assertEqual(bf(80), 12) self.assertEqual(bf(88), len(bins)-2) # Test out of bounds values self.assert_(bf(0.499) < 0) self.assert_(bf(0) < 0) self.assert_(bf(-100) < 0) self.assert_(bf(111) > len(bins)-2) # Smallest bin value > 1. bins = range(6,12) + [44, 176, 704, 2816] bf = binner._linlogBinFinder(bins) self.assertEqual(bf(6), 0) self.assertEqual(bf(10), 4) self.assertEqual(bf(44), 6) self.assertEqual(bf(100), 6) self.assertEqual(bf(176), 7) self.assertEqual(bf(2816), len(bins)-2) # Largest bin value < 11 bins = [2, 3, 4, 5, 6] bf = binner._linlogBinFinder(bins) self.assert_(bf(1) < 0) self.assertEqual(bf(2), 0) self.assertEqual(bf(4), 2) self.assertEqual(bf(6), 3) self.assert_(bf(7) > 3) self.assert_(bf(100) > 3)
def test_linlogBinFinder(self): # Test typical case. bins = list(range(1, 12)) + [22, 44, 88] bf = binner._linlogBinFinder(bins) self.assertEqual(bf(1), 0) self.assertEqual(bf(7), 6) self.assertEqual(bf(10), 9) self.assertEqual(bf(11), 10) self.assertEqual(bf(20), 10) self.assertEqual(bf(80), 12) self.assertEqual(bf(88), len(bins) - 2) # Test out of bounds values self.assertTrue(bf(0.499) < 0) self.assertTrue(bf(0) < 0) self.assertTrue(bf(-100) < 0) self.assertTrue(bf(111) > len(bins) - 2) # Smallest bin value > 1. bins = list(range(6, 12)) + [44, 176, 704, 2816] bf = binner._linlogBinFinder(bins) self.assertEqual(bf(6), 0) self.assertEqual(bf(10), 4) self.assertEqual(bf(44), 6) self.assertEqual(bf(100), 6) self.assertEqual(bf(176), 7) self.assertEqual(bf(2816), len(bins) - 2) # Largest bin value < 11 bins = [2, 3, 4, 5, 6] bf = binner._linlogBinFinder(bins) self.assertTrue(bf(1) < 0) self.assertEqual(bf(2), 0) self.assertEqual(bf(4), 2) self.assertEqual(bf(6), 3) self.assertTrue(bf(7) > 3) self.assertTrue(bf(100) > 3)