static void projectionTest(int n) {
        planner = new Planner();
        Variable scale = new Variable("scale", 10);
        Variable offset = new Variable("offset", 1000);
        Variable src = null, dst = null;

        List<Variable> dests = new ArrayList<Variable>();
        for (int i = 0; i < n; i++) {
            src = new Variable("src", i);
            dst = new Variable("dst", i);
            dests.add(dst);
            new StayConstraint(src, NORMAL);
            new ScaleConstraint(src, scale, offset, dst, REQUIRED);
        }
        change(src, 17);
        if (dst.value != 1170) System.out.println("Projection 1 failed");
        change(dst, 1050);
        if (src.value != 5) System.out.println("Projection 2 failed");
        change(scale, 5);
        for (int i = 0; i < n - 1; i++) {
            if (dests.get(i).value != i * 5 + 1000) System.out.println("Projection 3 failed");
        }
        change(offset, 2000);
        for (int i = 0; i < n - 1; i++) {
            if (dests.get(i).value != i * 5 + 2000) System.out.println("Projection 4 failed");
        }
    }