1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3# 4############################################################################# 5## 6## Copyright (C) 2016 The Qt Company Ltd. 7## Contact: https://www.qt.io/licensing/ 8## 9## This file is part of the test suite of Qt for Python. 10## 11## $QT_BEGIN_LICENSE:GPL-EXCEPT$ 12## Commercial License Usage 13## Licensees holding valid commercial Qt licenses may use this file in 14## accordance with the commercial license agreement provided with the 15## Software or, alternatively, in accordance with the terms contained in 16## a written agreement between you and The Qt Company. For licensing terms 17## and conditions see https://www.qt.io/terms-conditions. For further 18## information use the contact form at https://www.qt.io/contact-us. 19## 20## GNU General Public License Usage 21## Alternatively, this file may be used under the terms of the GNU 22## General Public License version 3 as published by the Free Software 23## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 24## included in the packaging of this file. Please review the following 25## information to ensure the GNU General Public License requirements will 26## be met: https://www.gnu.org/licenses/gpl-3.0.html. 27## 28## $QT_END_LICENSE$ 29## 30############################################################################# 31 32import os 33import sys 34import unittest 35 36sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 37from shiboken_paths import init_paths 38init_paths() 39from py3kcompat import IS_PY3K 40 41from sample import ObjectType 42 43 44class NewStyle(object): 45 def name(self): 46 return "NewStyle" 47 48class OldStyle: 49 def name(self): 50 return "OldStyle" 51 52def defineNewStyle(): 53 class MyObjectNew(ObjectType, NewStyle): 54 pass 55 56def defineOldStyle(): 57 class MyObjectOld(ObjectType, OldStyle): 58 pass 59 60class ObjectTypeTest(unittest.TestCase): 61 '''Test cases to avoid declaring Shiboken classes with multiple inheritance from old style classes.''' 62 63 def testObjectTypeNewStype(self): 64 defineNewStyle() 65 66 def testObjectTypeOldStype(self): 67 # Py 3k doesn't have old style classes 68 if not IS_PY3K: 69 self.assertRaises(TypeError, defineOldStyle) 70 71 72if __name__ == '__main__': 73 unittest.main() 74 75