(root)/
Python-3.12.0/
Lib/
test/
test_unary.py
       1  """Test compiler changes for unary ops (+, -, ~) introduced in Python 2.2"""
       2  
       3  import unittest
       4  
       5  class ESC[4;38;5;81mUnaryOpTestCase(ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
       6  
       7      def test_negative(self):
       8          self.assertTrue(-2 == 0 - 2)
       9          self.assertEqual(-0, 0)
      10          self.assertEqual(--2, 2)
      11          self.assertTrue(-2.0 == 0 - 2.0)
      12          self.assertTrue(-2j == 0 - 2j)
      13  
      14      def test_positive(self):
      15          self.assertEqual(+2, 2)
      16          self.assertEqual(+0, 0)
      17          self.assertEqual(++2, 2)
      18          self.assertEqual(+2.0, 2.0)
      19          self.assertEqual(+2j, 2j)
      20  
      21      def test_invert(self):
      22          self.assertTrue(~2 == -(2+1))
      23          self.assertEqual(~0, -1)
      24          self.assertEqual(~~2, 2)
      25  
      26      def test_no_overflow(self):
      27          nines = "9" * 32
      28          self.assertTrue(eval("+" + nines) == 10**32-1)
      29          self.assertTrue(eval("-" + nines) == -(10**32-1))
      30          self.assertTrue(eval("~" + nines) == ~(10**32-1))
      31  
      32      def test_negation_of_exponentiation(self):
      33          # Make sure '**' does the right thing; these form a
      34          # regression test for SourceForge bug #456756.
      35          self.assertEqual(-2 ** 3, -8)
      36          self.assertEqual((-2) ** 3, -8)
      37          self.assertEqual(-2 ** 4, -16)
      38          self.assertEqual((-2) ** 4, 16)
      39  
      40      def test_bad_types(self):
      41          for op in '+', '-', '~':
      42              self.assertRaises(TypeError, eval, op + "b'a'")
      43              self.assertRaises(TypeError, eval, op + "'a'")
      44  
      45          self.assertRaises(TypeError, eval, "~2j")
      46          self.assertRaises(TypeError, eval, "~2.0")
      47  
      48  
      49  if __name__ == "__main__":
      50      unittest.main()