from pychecker2.TestSupport import WarningTester
from pychecker2 import ConditionalChecks

class ClassTestCase(WarningTester):
    def testConstants(self):
        w = ConditionalChecks.ConstantCheck.constantInConditional
        
        self.silent('a, b = 1, 2\n'
                    'if a < b:\n'
                    '   print a\n')
        self.warning('a = 1\n'
                     'if a or 1:\n'
                     '  print a\n', 2, w, '1')
        self.warning('a = 1\n'
                     'if not 1:\n'
                     '  print a\n', 2, w, '1')
        self.silent('a, b = 1, 2\n'
                    'if a < 1 + 7:\n'
                    '   print a\n')
        self.warning('result = [x for x in [1, 2, 3] if x or 1]\n',
                     1, w, '1')
        self.warning('result = [x for x in [1, 2, 3] if x or None]\n',
                     1, w, 'None')
        self.warning('x = 1\n'
                     'while x or None:\n'
                     '   x = x + 1\n',
                     2, w, 'None')

test constant in conditionals