Added test for MRO in complicated diamond hierarchy (PY-4183)

This commit is contained in:
Andrey Vlasovskikh
2013-04-18 21:29:49 +04:00
parent e2f2bc616f
commit 2eab025659
2 changed files with 35 additions and 0 deletions
@@ -0,0 +1,30 @@
class A(object):
pass
class B(A):
pass
class C(A):
pass
class D(A):
pass
class E(B):
pass
class F(B):
pass
class G(C, D):
pass
class H(E, F, G):
pass
@@ -47,6 +47,11 @@ public class PyClassMROTest extends PyTestCase {
assertMRO(getClass("G"), "E", "F", "object");
}
// PY-4183
public void testComplicatedDiamond() {
assertMRO(getClass("H"), "E", "F", "B", "G", "C", "D", "A", "object");
}
public void assertMRO(@NotNull PyClass cls, @NotNull String... mro) {
final List<PyClassLikeType> types = cls.getAncestorTypes(TypeEvalContext.fastStubOnly(null));
final List<String> classNames = new ArrayList<String>();