Example #1
0
 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))
Example #2
0
 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))
Example #3
0
    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)
Example #4
0
    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)