aboutsummaryrefslogtreecommitdiffstats
path: root/tests/samplebinding/enum_test.py
blob: 699adceda97dc30b294144a4a2117607be48ed51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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()