void testMetaSequence_serialisation(CuTest* testCase) {
	cactusMetaSequenceTestSetup();
	int64_t i;
	Name name = metaSequence_getName(metaSequence);
	CuAssertTrue(testCase, cactusDisk_getMetaSequence(cactusDisk, name) == metaSequence);
	void *vA = binaryRepresentation_makeBinaryRepresentation(metaSequence,
			(void (*)(void *, void (*)(const void *, size_t, size_t)))metaSequence_writeBinaryRepresentation, &i);
	CuAssertTrue(testCase, i > 0);
	metaSequence_destruct(metaSequence);
	CuAssertTrue(testCase, cactusDisk_getMetaSequence(cactusDisk, name) == NULL);
	void *vA2 = vA;
	metaSequence = metaSequence_loadFromBinaryRepresentation(&vA2, cactusDisk);
	CuAssertTrue(testCase, name == metaSequence_getName(metaSequence));
	CuAssertStrEquals(testCase, headerString, metaSequence_getHeader(metaSequence));
	CuAssertTrue(testCase, cactusDisk_getMetaSequence(cactusDisk, name) == metaSequence);
	cactusDisk_write(cactusDisk);
	metaSequence_destruct(metaSequence);
	CuAssertTrue(testCase, cactusDisk_getMetaSequence(cactusDisk, name) != NULL);
	metaSequence = cactusDisk_getMetaSequence(cactusDisk, name);
	nestedTest = 1;
	testMetaSequence_getName(testCase);
	testMetaSequence_getStart(testCase);
	testMetaSequence_getLength(testCase);
	testMetaSequence_getEventName(testCase);
	testMetaSequence_getString(testCase);
	testMetaSequence_getHeader(testCase);
	testMetaSequence_isTrivialSequence(testCase);
	nestedTest = 0;
	cactusMetaSequenceTestTeardown();
}
void testMetaSequence_isTrivialSequence(CuTest* testCase) {
    cactusMetaSequenceTestSetup();
    CuAssertTrue(testCase, !metaSequence_isTrivialSequence(metaSequence));
    MetaSequence *metaSequence2 = metaSequence_construct3(1, 10, sequenceString,
                           headerString, eventName, 1, cactusDisk);
    CuAssertTrue(testCase, metaSequence_isTrivialSequence(metaSequence2));
    metaSequence_destruct(metaSequence2);
    cactusMetaSequenceTestTeardown();
}
Example #3
0
void cactusDisk_destruct(CactusDisk *cactusDisk) {
    Flower *flower;
    MetaSequence *metaSequence;

    while ((flower = stSortedSet_getFirst(cactusDisk->flowers)) != NULL) {
        flower_destruct(flower, FALSE);
    }
    stSortedSet_destruct(cactusDisk->flowers);

    stSortedSet_destruct(cactusDisk->flowerNamesMarkedForDeletion);

    while ((metaSequence = stSortedSet_getFirst(cactusDisk->metaSequences)) != NULL) {
        metaSequence_destruct(metaSequence);
    }
    stSortedSet_destruct(cactusDisk->metaSequences);

    //close DB
    stKVDatabase_destruct(cactusDisk->database);

    //Close the sequences files.
    if (cactusDisk->storeSequencesInAFile) {
        free(cactusDisk->sequencesFileName);
        free(cactusDisk->absSequencesFileName);
        if (cactusDisk->sequencesReadFileHandle != NULL) {
            fclose(cactusDisk->sequencesReadFileHandle);
        }
        if (cactusDisk->sequencesWriteFileHandle != NULL) {
            fsync(fileno(cactusDisk->sequencesWriteFileHandle));
            fclose(cactusDisk->sequencesWriteFileHandle);
        }
    } else {
        assert(cactusDisk->sequencesFileName == NULL);
        assert(cactusDisk->sequencesReadFileHandle == NULL);
        assert(cactusDisk->absSequencesFileName == NULL);
    }

    stCache_destruct(cactusDisk->cache); //Get rid of the cache
    stCache_destruct(cactusDisk->stringCache);

    stList_destruct(cactusDisk->updateRequests);

    free(cactusDisk);
}