aboutsummaryrefslogtreecommitdiffstats
path: root/tests/samplebinding/enum_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/samplebinding/enum_test.py')
-rwxr-xr-xtests/samplebinding/enum_test.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/samplebinding/enum_test.py b/tests/samplebinding/enum_test.py
new file mode 100755
index 000000000..699adceda
--- /dev/null
+++ b/tests/samplebinding/enum_test.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+
+'''Test cases for Python representation of C++ enums'''
+
+import sys
+import unittest
+
+from sample import SampleNamespace
+
+class EnumTest(unittest.TestCase):
+ '''Test case for Abstract class'''
+
+ def testPassingIntegerOnEnumArgument(self):
+ '''Test if replacing an enum argument with an integer raises an exception.'''
+ self.assertRaises(TypeError, lambda : SampleNamespace.getNumber(1))
+
+ def testExtendingEnum(self):
+ '''Test if can create new items for an enum declared as extensible on the typesystem file.'''
+ name, value = 'NewItem', 13
+ enumitem = SampleNamespace.Option(name, value)
+ self.assert_(type(enumitem), SampleNamespace.Option)
+ self.assert_(enumitem.name, name)
+ self.assert_(int(enumitem), value)
+
+ def testExtendingNonExtensibleEnum(self):
+ '''Test if trying to create a new enum item for an unextensible enum raises an exception.'''
+ self.assertRaises(TypeError, lambda : SampleNamespace.InValue(13))
+
+ def testEnumConversionToAndFromPython(self):
+ '''Test conversion of enum objects to Python and C++ in both directions.'''
+ enumout = SampleNamespace.enumInEnumOut(SampleNamespace.TwoIn)
+ self.assert_(enumout, SampleNamespace.TwoOut)
+
+if __name__ == '__main__':
+ unittest.main()
+