def circularPageReferenceTest(self, shouldBeInvalid):
        cppView1 = CumulusNative.PersistentCacheIndex(
            self.sharedState.newView(), callbackScheduler)
        computationId = CumulusNative.ComputationId.Root(sha1("computation"))

        checkpointRequest = CumulusNative.CheckpointRequest(
            0.0, True, computationId)

        cppView1.addBigvec(sha1("bigvec1"),
                           HashSet() + sha1("page1"), 2, sha1(""))
        cppView1.addPage(
            sha1("page1"),
            (HashSet() + sha1("bigvec1")) if shouldBeInvalid else HashSet(), 1,
            sha1(""))
        cppView1.addCheckpointFile(checkpointRequest, sha1("file"),
                                   HashSet() + sha1("bigvec1"), 2, sha1(""))
        cppView1.addCheckpoint(checkpointRequest,
                               HashSet() + sha1("file"), 2, sha1(""), True,
                               1.0, HashSet())

        self.assertTrue(
            len(cppView1.computeInvalidObjects()) == (4 if shouldBeInvalid else
                                                      0),
            "%s != %s" % (len(cppView1.computeInvalidObjects()),
                          (4 if shouldBeInvalid else 0)))