def test_complex_numbers(self): self.assertTrue(is_perfect_square(-4, complex=True)) self.assertTrue(is_perfect_square(-100, complex=True)) self.assertFalse(is_perfect_square(-1000, complex=True)) self.assertTrue(is_perfect_square(512j, complex=True)) self.assertFalse(is_perfect_square(100j, complex=True)) self.assertTrue(is_perfect_square(-5 + 12j, complex=True)) with self.assertRaises(TypeError): is_perfect_square(-4, True) # complex must be a keyword argument
def test_really_big_numbers(self): n = 838382848348234**2 m = n**2 m = 8383828483252752341748234**2 self.assertTrue(is_perfect_square(n)) self.assertFalse(is_perfect_square(n - 1)) self.assertFalse(is_perfect_square(n + 1)) self.assertTrue(is_perfect_square(m)) self.assertFalse(is_perfect_square(m - 1)) self.assertFalse(is_perfect_square(m + 1))
def test_small_number(self): self.assertTrue(is_perfect_square(1)) self.assertTrue(is_perfect_square(4)) self.assertFalse(is_perfect_square(8)) self.assertFalse(is_perfect_square(35))
def test_decimal_number(self): square_number = Decimal('100') self.assertTrue(is_perfect_square(square_number)) self.assertFalse(is_perfect_square(square_number - 1)) self.assertFalse(is_perfect_square(square_number + 1))
def test_negative_numbers(self): square_number = -4 self.assertFalse(is_perfect_square(square_number)) self.assertFalse(is_perfect_square(square_number - 1)) self.assertFalse(is_perfect_square(square_number + 1))
def test_big_number(self): self.assertTrue(is_perfect_square(1586375448590241)) self.assertFalse(is_perfect_square(1420958445736851))
def test_non_real_numbers(self): self.assertFalse(is_perfect_square(4.5)) with self.assertRaises(TypeError): is_perfect_square(1j) with self.assertRaises(TypeError): is_perfect_square('hello')
def test_4_digit_number(self): self.assertTrue(is_perfect_square(5776)) self.assertFalse(is_perfect_square(9306))
def test_small_numbers(): assert is_perfect_square(4) == True assert is_perfect_square(16) == True assert is_perfect_square(11) == False assert is_perfect_square(26) == False
def test_raises_exception_for_str_arg(): with pytest.raises(TypeError): is_perfect_square('4')
def test_nonreal_numbers(): assert is_perfect_square(4.5) == False assert is_perfect_square(-4) == False
def test_large_numbers(): assert is_perfect_square(1586375448590241) == True assert is_perfect_square(1420958445736851) == False