def setUp(self):
     self.alg = AlgSingleMissing()
class Test_testAlgSingleMissing(unittest.TestCase):
    def setUp(self):
        self.alg = AlgSingleMissing()
    def test_AlgSingleMissing_BasicValidity(self):
        # Non iterrable throws
        with self.assertRaises(TypeError):
            self.alg.runAlg(None)
        with self.assertRaises(TypeError):
            self.alg.runAlg(123)
        # Wrong itterable
        self.assertTrue(self.alg.runAlg("abc") == ())
        # Two Nones is empty
        self.assertTrue(self.alg.runAlg([None, None]) == ())
        # Two same ints is empty
        self.assertTrue(self.alg.runAlg([1,1]) == ())
        # Two Nones is empty
        self.assertTrue(self.alg.runAlg([1,2,3,4,5,6,7,None,None]) == ())
        # Shifted itterable
        self.assertTrue(self.alg.runAlg(range(9)) == ())
        # No missing values
        self.assertTrue(self.alg.runAlg(range(1,10)) == ())
    def test_AlgSingleMising_Operations(self):
        self.assertTrue(self.alg.runAlg([1,2,3,4,5,6,7,8,None]) == (8, 9))
        self.assertTrue(self.alg.runAlg([None,2,3,4,5,6,7,8,9]) == (0, 1))