gh-83845: Add tests for operator module (#115883)

Co-authored-by: Karthikeyan Singaravelan <tir.karthi@gmail.com>
This commit is contained in:
Hugo van Kemenade 2024-03-26 11:13:32 +02:00 committed by GitHub
parent ea9a296fce
commit 771902c257
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 47 additions and 0 deletions

View File

@ -1,6 +1,8 @@
import unittest import unittest
import pickle import pickle
import sys import sys
from decimal import Decimal
from fractions import Fraction
from test import support from test import support
from test.support import import_helper from test.support import import_helper
@ -508,6 +510,44 @@ class OperatorTestCase:
self.assertEqual(operator.ixor (c, 5), "ixor") self.assertEqual(operator.ixor (c, 5), "ixor")
self.assertEqual(operator.iconcat (c, c), "iadd") self.assertEqual(operator.iconcat (c, c), "iadd")
def test_iconcat_without_getitem(self):
operator = self.module
msg = "'int' object can't be concatenated"
with self.assertRaisesRegex(TypeError, msg):
operator.iconcat(1, 0.5)
def test_index(self):
operator = self.module
class X:
def __index__(self):
return 1
self.assertEqual(operator.index(X()), 1)
self.assertEqual(operator.index(0), 0)
self.assertEqual(operator.index(1), 1)
self.assertEqual(operator.index(2), 2)
with self.assertRaises((AttributeError, TypeError)):
operator.index(1.5)
with self.assertRaises((AttributeError, TypeError)):
operator.index(Fraction(3, 7))
with self.assertRaises((AttributeError, TypeError)):
operator.index(Decimal(1))
with self.assertRaises((AttributeError, TypeError)):
operator.index(None)
def test_not_(self):
operator = self.module
class C:
def __bool__(self):
raise SyntaxError
self.assertRaises(TypeError, operator.not_)
self.assertRaises(SyntaxError, operator.not_, C())
self.assertFalse(operator.not_(5))
self.assertFalse(operator.not_([0]))
self.assertTrue(operator.not_(0))
self.assertTrue(operator.not_([]))
def test_length_hint(self): def test_length_hint(self):
operator = self.module operator = self.module
class X(object): class X(object):
@ -533,6 +573,13 @@ class OperatorTestCase:
with self.assertRaises(LookupError): with self.assertRaises(LookupError):
operator.length_hint(X(LookupError)) operator.length_hint(X(LookupError))
class Y: pass
msg = "'str' object cannot be interpreted as an integer"
with self.assertRaisesRegex(TypeError, msg):
operator.length_hint(X(2), "abc")
self.assertEqual(operator.length_hint(Y(), 10), 10)
def test_call(self): def test_call(self):
operator = self.module operator = self.module