aboutsummaryrefslogtreecommitdiff
path: root/challenge-192/ealvar3z/python/ch-1.py
blob: 47fcd5a0f0a6431ed26a9194865e7e02469c0c04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import unittest


class TestSolutionI(unittest.TestCase):

    def binary_flip(self, n):
        mask = max(1, (1 << n.bit_length()) - 1)
        return n ^ mask

    def test_binary_flip(self):
        self.assertEqual(self.binary_flip(5), 2, "example 1")
        self.assertEqual(self.binary_flip(4), 3, "example 2")
        self.assertEqual(self.binary_flip(6), 1, "example 3")
        self.assertEqual(self.binary_flip(0), 1, "nasty edge case")
        self.assertEqual(self.binary_flip(-10), -7, "negative num edge case")


if __name__ == "__main__":
    unittest.main(verbosity=True)