aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/tests/samplebinding/enum_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/tests/samplebinding/enum_test.py')
-rw-r--r--sources/shiboken6/tests/samplebinding/enum_test.py67
1 files changed, 14 insertions, 53 deletions
diff --git a/sources/shiboken6/tests/samplebinding/enum_test.py b/sources/shiboken6/tests/samplebinding/enum_test.py
index 9284257f0..276b8d894 100644
--- a/sources/shiboken6/tests/samplebinding/enum_test.py
+++ b/sources/shiboken6/tests/samplebinding/enum_test.py
@@ -13,35 +13,27 @@ sys.path.append(os.fspath(Path(__file__).resolve().parents[1]))
from shiboken_paths import init_paths
init_paths()
-import shiboken6
# This is needed after the introduction of BUILD_DIR.
import sample
from sample import SampleNamespace, ObjectType, Event
+
def createTempFile():
import tempfile
return tempfile.SpooledTemporaryFile(mode='rw')
+
class EnumTest(unittest.TestCase):
'''Test case for Python representation of C++ enums.'''
- @unittest.skipIf(sys.pyside63_option_python_enum, "test not suitable for Python enum")
- def testEnumRepr(self):
- enum = SampleNamespace.Option(1)
- self.assertEqual(eval(repr(enum)), enum)
-
- enum = SampleNamespace.Option(999)
- self.assertEqual(eval(repr(enum)), enum)
-
def testHashability(self):
self.assertEqual(hash(SampleNamespace.TwoIn), hash(SampleNamespace.TwoOut))
self.assertNotEqual(hash(SampleNamespace.TwoIn), hash(SampleNamespace.OneIn))
def testEnumValuesInsideEnum(self):
'''Enum values should be accessible inside the enum as well as outside.'''
- for value_name in (SampleNamespace.Option.__members__ if sys.pyside63_option_python_enum
- else SampleNamespace.Option.values):
+ for value_name in SampleNamespace.Option.__members__:
enum_item1 = getattr(SampleNamespace.Option, value_name)
enum_item2 = getattr(SampleNamespace, value_name)
self.assertEqual(enum_item1, enum_item2)
@@ -54,13 +46,11 @@ class EnumTest(unittest.TestCase):
'''Tries to build the proper enum using an integer.'''
SampleNamespace.getNumber(SampleNamespace.Option(1))
- @unittest.skipIf(sys.pyside63_option_python_enum, "test not suitable for Python enum")
def testBuildingEnumWithDefaultValue(self):
'''Enum constructor with default value'''
enum = SampleNamespace.Option()
self.assertEqual(enum, SampleNamespace.None_)
- @unittest.skipIf(sys.pyside63_option_python_enum, "test not suitable for Python enum")
def testEnumConversionToAndFromPython(self):
'''Conversion of enum objects from Python to C++ back again.'''
enumout = SampleNamespace.enumInEnumOut(SampleNamespace.TwoIn)
@@ -69,7 +59,7 @@ class EnumTest(unittest.TestCase):
def testEnumConstructorWithTooManyParameters(self):
'''Calling the constructor of non-extensible enum with the wrong number of parameters.'''
- self.assertRaises(TypeError, SampleNamespace.InValue, 13, 14)
+ self.assertRaises((TypeError, ValueError), SampleNamespace.InValue, 13, 14)
def testEnumConstructorWithNonNumberParameter(self):
'''Calling the constructor of non-extensible enum with a string.'''
@@ -77,8 +67,10 @@ class EnumTest(unittest.TestCase):
def testEnumItemAsDefaultValueToIntArgument(self):
'''Calls function with an enum item as default value to an int argument.'''
- self.assertEqual(SampleNamespace.enumItemAsDefaultValueToIntArgument(), SampleNamespace.ZeroIn)
- self.assertEqual(SampleNamespace.enumItemAsDefaultValueToIntArgument(SampleNamespace.ZeroOut), SampleNamespace.ZeroOut)
+ self.assertEqual(SampleNamespace.enumItemAsDefaultValueToIntArgument(),
+ SampleNamespace.ZeroIn)
+ self.assertEqual(SampleNamespace.enumItemAsDefaultValueToIntArgument(SampleNamespace.ZeroOut), # noqa E:501
+ SampleNamespace.ZeroOut)
self.assertEqual(SampleNamespace.enumItemAsDefaultValueToIntArgument(123), 123)
def testAnonymousGlobalEnums(self):
@@ -103,55 +95,25 @@ class EnumTest(unittest.TestCase):
self.assertEqual(event.eventType(), Event.BASIC_EVENT)
event.setEventTypeByConstRef(Event.SOME_EVENT)
self.assertEqual(event.eventType(), Event.SOME_EVENT)
-
- @unittest.skipIf(sys.pyside63_option_python_enum, "test not suitable for Python enum")
- def testEnumTpPrintImplementation(self):
- '''Without SbkEnum.tp_print 'print' returns the enum represented as an int.'''
- tmpfile = createTempFile()
- print(Event.ANY_EVENT, file=tmpfile)
- tmpfile.seek(0)
- text = tmpfile.read().strip()
- tmpfile.close()
- self.assertEqual(text, str(Event.ANY_EVENT))
- self.assertEqual(text, repr(Event.ANY_EVENT))
+ event.setEventTypeByConstPtr(Event.BASIC_EVENT)
+ self.assertEqual(event.eventType(), Event.BASIC_EVENT)
def testEnumArgumentWithDefaultValue(self):
'''Option enumArgumentWithDefaultValue(Option opt = UnixTime);'''
self.assertEqual(SampleNamespace.enumArgumentWithDefaultValue(), SampleNamespace.UnixTime)
- self.assertEqual(SampleNamespace.enumArgumentWithDefaultValue(SampleNamespace.RandomNumber), SampleNamespace.RandomNumber)
-
- @unittest.skipIf(sys.pyside63_option_python_enum, "test not suitable for Python enum")
- def testSignature(self):
- enum = SampleNamespace.Option(1)
- types = type(enum).mro()
- klass = types[0]
- base = types[1]
- # The class has an empty signature.
-
- self.assertEqual(klass.__signature__, None)
- # The base class must be Enum
- self.assertNotEqual(base.__signature__, None)
- # It contains an int annotation.
- param = base.__signature__.parameters["itemValue"]
- self.assertEqual(param.annotation, int)
+ self.assertEqual(SampleNamespace.enumArgumentWithDefaultValue(SampleNamespace.RandomNumber), # noqa E:501
+ SampleNamespace.RandomNumber)
class MyEvent(Event):
def __init__(self):
- Event.__init__(self, Event.EventType(3 if sys.pyside63_option_python_enum else 999))
+ Event.__init__(self, Event.EventType(3))
class OutOfBoundsTest(unittest.TestCase):
def testValue(self):
e = MyEvent()
- self.assertEqual(repr(e.eventType()), "<EventType.ANY_EVENT: 3>"
- if sys.pyside63_option_python_enum else 'sample.Event.EventType(999)')
-
- @unittest.skipIf(sys.pyside63_option_python_enum, "test not suitable for Python enum")
- def testNoneName(self):
- e = MyEvent()
- t = e.eventType()
- self.assertEqual(t.name, None)
+ self.assertEqual(repr(e.eventType()), "<EventType.ANY_EVENT: 3>")
class EnumOverloadTest(unittest.TestCase):
@@ -174,4 +136,3 @@ class EnumOperators(unittest.TestCase):
if __name__ == '__main__':
unittest.main()
-