static void verifyTree( olNode node) { olNode parent = olNodeGetParentRootNode(node); olNode left = olNodeGetLeftRootNode(node); olNode right = olNodeGetRightRootNode(node); utAssert(parent == olNodeNull || olNodeGetLeftRootNode(parent) == node || olNodeGetRightRootNode(parent) == node); if(left != olNodeNull) { utAssert(!olNodeIsRedRootNode(node) || !olNodeIsRedRootNode(left)); verifyTree(left); } if(right != olNodeNull) { utAssert(!olNodeIsRedRootNode(node) || !olNodeIsRedRootNode(right)); verifyTree(right); } }
// Like above, but use MRestacker. static bool testRestack(const MRestacker::WindowStack &subset, Window **childrenp=NULL, unsigned *nchildrenp=NULL) { if (!testRestacker.restack(subset)) qFatal("Mrs. Tacker failed"); if (Dpy) return verifyTree(subset, childrenp, nchildrenp); MRestacker::WindowStack stack = testRestacker.getState(); return verifyOrder(subset, stack, stack.count()); }
static bool referenceRestack(const T &subset, Window **childrenp=NULL, unsigned *nchildrenp=NULL) { int n = subset.count(); WindowVec reversed(n); for (int i = 0; i < n; i++) reversed[n-1-i] = subset[i]; Q_ASSERT(Dpy != NULL); if (!XRestackWindows(Dpy, (Window*)reversed.constData(), reversed.count())) qFatal("XRestackWindows() failed"); return verifyTree(subset, childrenp, nchildrenp); }