1# test for type.__bases__ implementation
2
3if not hasattr(object, '__bases__'):
4    print("SKIP")
5    raise SystemExit
6
7class A:
8    pass
9
10class B(object):
11    pass
12
13class C(B):
14    pass
15
16class D(C, A):
17    pass
18
19# Check the attribute exists
20print(hasattr(A, '__bases__'))
21print(hasattr(B, '__bases__'))
22print(hasattr(C, '__bases__'))
23print(hasattr(D, '__bases__'))
24
25# Check it is always a tuple
26print(type(A.__bases__) == tuple)
27print(type(B.__bases__) == tuple)
28print(type(C.__bases__) == tuple)
29print(type(D.__bases__) == tuple)
30
31# Check size
32print(len(A.__bases__) == 1)
33print(len(B.__bases__) == 1)
34print(len(C.__bases__) == 1)
35print(len(D.__bases__) == 2)
36
37# Check values
38print(A.__bases__[0] == object)
39print(B.__bases__[0] == object)
40print(C.__bases__[0] == B)
41print(D.__bases__[0] == C)
42print(D.__bases__[1] == A)
43
44# Object has an empty tuple
45print(object.__bases__ == tuple())
46