Example #1
0
// Test random stackings.
static void randomTest(const WindowVec *fromStack,
                       const MRestacker *fromState)
{
    if (optLearning)
        QSKIP("nothing to learn", SkipSingle);

    // Generate @nrandom random permutations of @managedWindows.
    MRestacker::WindowStack stack(managedWindows.toList());
    for (unsigned i = 0; i < optNRandomTests; i++) {
        std::random_shuffle(stack.begin(), stack.end(), libcRandom);
        dotest(stack, fromStack, fromState);
    }

    qDebug("tested %u random permutations", optNRandomTests);
    printStats();
}
Example #2
0
// Open @Dpy, create @fakeRoot and @optNWindows @managedWindows.
void SuperStackerTest::initTestCase()
{
    if (!optHeadless) {
        Dpy = XOpenDisplay(NULL);
        if (!Dpy)
            qWarning("couldn't connect to X, degrading to headless mode");
    }

    // Create @managedWindows.
    if (Dpy != NULL) {
        fakeRoot = XCreateSimpleWindow(Dpy, DefaultRootWindow(Dpy),
                                       0, 0, 100, 100, 0, 0, 0);
        QVERIFY(fakeRoot != None);

        for (int i = 0; i < optNWindows; i++)
            managedWindows << XCreateSimpleWindow(Dpy, fakeRoot,
                                                  0, 0, 100, 100, 0, 0, 0);
        QVERIFY(!managedWindows.contains(None));

        // Randomize the reference order to make sure that the superstacker
        // doesn't depend on the XIDs.
        std::random_shuffle(managedWindows.begin(), managedWindows.end(),
                            libcRandom);
        referenceRestack(managedWindows);
    } else {
        // Make up a bunch of unique XID:s.
        qDebug("initializing headless mode");
        while (managedWindows.count() < optNWindows) {
            Window win = 1 + random();
            if (!managedWindows.contains(win))
                managedWindows << win;
        }
    }

    // Initialize MRestacker and tell it what windows are managed.
    testRestacker.init(Dpy, fakeRoot);
    testRestacker.setState(managedWindows);
    QVERIFY(testRestacker.verifyState(managedWindows));
    if (Dpy)
        QVERIFY(testRestacker.verifyState());
    QVERIFY(testRestacker.getState() == managedWindows.toList());
}