Beispiel #1
0
int main(int argc, char **argv)
{
	bool showPassedTests = false;
	if (argc > 1) {
		if (strcmp("--show-passed=yes", argv[1]) == 0) {
			showPassedTests = true;
		} else {
			showPassedTests = false;
		}
	}

	testRecordEqual(showPassedTests);
	testMetadata(showPassedTests);
	testRecord(showPassedTests);
	testHighscoreTable(showPassedTests);
	testAddRecord(showPassedTests);
	testInsertRecord(showPassedTests);
	testRecordWithSpaces(showPassedTests);

	return 0;
}
Beispiel #2
0
Record *
fromTestRecord(Schema *schema, TestRecord in)
{
	return testRecord(schema, in.a, in.b, in.c);
}
Record *
fromTestRecord (Schema *schema, TestRecord in)
{
     //printf("\n testing insert");
  return testRecord(schema, in.a, in.b, in.c);
}
Beispiel #4
0
void testSamQNAME()
{
    // This method tests:
    //   QNAME.Length() > 0 and <= 254
    //   QNAME does not contain [ \t\n\r]

    char qname[256];
    SamFileHeader samHeader;
    SamRecord testRecord(ErrorHandler::RETURN);
    // Error list
    SamValidationErrors errorList;
   
    // Test Length == 0 by setting qname[0] to 0 (end of char*)
    qname[0] = 0;
    // It fails, because it is a required field.
    assert(testRecord.setReadName(qname) == false);
    assert(strcmp(testRecord.getReadName(), "UNKNOWN") == 0);
    // It was reset to the default which is valid.
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == true);
    assert(errorList.numErrors() == 0);
    assert(errorList.getNextError() == NULL);

    // Test too long of a read name.
    memset(qname, '.', 255);
    qname[255] = 0;
    assert(testRecord.setReadName(qname) == true);
    assert(strcmp(testRecord.getReadName(), qname) == 0);
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == false);
    // 2 errors - 1 since the qname is longer than 254 (it is 255).
    // and the qname length including the null is 256, but the 
    // read name length is only 8 bits, so that is a 1.
    assert(errorList.numErrors() == 2);
    assert(errorList.getNextError()->getType() == 
           SamValidationError::INVALID_QNAME);
    assert(errorList.getNextError()->getType() == 
           SamValidationError::INVALID_QNAME);
    assert(errorList.getNextError() == NULL);

    // Clear the error list
    errorList.clear();

    // Setup a buffer to set the record to.
    int bufferBlockSize = 32;

    bamRecordStruct* bufferRecordPtr =
        (bamRecordStruct *) malloc(bufferBlockSize + sizeof(int));

    bufferRecordPtr->myBlockSize = bufferBlockSize;
    bufferRecordPtr->myReferenceID = -1;
    bufferRecordPtr->myPosition = 1010;
    // Set the read name length to 0.
    bufferRecordPtr->myReadNameLength = 0;
    bufferRecordPtr->myMapQuality = 0;
    bufferRecordPtr->myBin = 4681;
    bufferRecordPtr->myCigarLength = 0;
    bufferRecordPtr->myFlag = 73;
    bufferRecordPtr->myReadLength = 0;
    bufferRecordPtr->myMateReferenceID = -1;
    bufferRecordPtr->myMatePosition = 1010;
    bufferRecordPtr->myInsertSize = 0;

    assert(testRecord.setBuffer((const char*)bufferRecordPtr, 
                                bufferBlockSize + sizeof(int), 
                                samHeader) == SamStatus::SUCCESS);
    // 1 error - the read name length is 0.
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == false);
    assert(errorList.numErrors() == 1);
    assert(errorList.getNextError()->getType() == 
           SamValidationError::INVALID_QNAME);
    assert(errorList.getNextError() == NULL);

    // Clear the error list
    errorList.clear();

    // Test a buffer that has a read name, but the length specified is
    // longer than the first null.
    bufferBlockSize = 40;
    bufferRecordPtr->myBlockSize = bufferBlockSize;
    // Set the read name length to 8 - longer than 3 - "HI\0".
    bufferRecordPtr->myReadNameLength = 8;
    bufferRecordPtr->myData[0] = 'H';
    bufferRecordPtr->myData[1] = 'I';
    bufferRecordPtr->myData[2] = 0;

    assert(testRecord.setBuffer((const char*)bufferRecordPtr,
                                bufferBlockSize + sizeof(int), 
                                samHeader) == SamStatus::SUCCESS);
    // 1 error - the read name length in the buffer does not match the
    // length of the read name to the first null.
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == false);
    assert(errorList.numErrors() == 1);
    assert(errorList.getNextError()->getType() ==
           SamValidationError::INVALID_QNAME);
    assert(errorList.getNextError() == NULL);

    // Clear the error list
    errorList.clear();

    // Test a buffer that has a read name, but the length specified is
    // shorter than the first null.
    bufferBlockSize = 34;
    bufferRecordPtr->myBlockSize = bufferBlockSize;
    // Set the read name length to 2 - longer than 3 - "HI\0"..
    bufferRecordPtr->myReadNameLength = 2;
    bufferRecordPtr->myData[0] = 'H';
    bufferRecordPtr->myData[1] = 'I';
    bufferRecordPtr->myData[2] = 0;

    assert(testRecord.setBuffer((const char*)bufferRecordPtr, 
                                bufferBlockSize + sizeof(int), 
                                samHeader) == SamStatus::SUCCESS);
    // 1 error - the read name length in the buffer does not match
    // the length of the read name to the first null.
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == false);
    assert(errorList.numErrors() == 1);
    assert(errorList.getNextError()->getType() ==
           SamValidationError::INVALID_QNAME);
    assert(errorList.getNextError() == NULL);

    // Clear the error list
    errorList.clear();
}
Beispiel #5
0
void testBamRID()
{
    // BAM
    SamRecord testRecord(ErrorHandler::RETURN);
    // Error list
    SamValidationErrors errorList;
    SamFileHeader samHeader;

    // Clear the error list
    errorList.clear();

    // Setup a buffer to set the record to.
    int bufferBlockSize = 35;

    bamRecordStruct* bufferRecordPtr =
        (bamRecordStruct *) malloc(bufferBlockSize + sizeof(int));

    bufferRecordPtr->myBlockSize = bufferBlockSize;
    bufferRecordPtr->myPosition = 1010;
    bufferRecordPtr->myReferenceID = -1;
    // Set the read name length to 0.
    bufferRecordPtr->myReadNameLength = 3;
    bufferRecordPtr->myMapQuality = 0;
    bufferRecordPtr->myBin = 4681;
    bufferRecordPtr->myCigarLength = 0;
    bufferRecordPtr->myFlag = 73;
    bufferRecordPtr->myReadLength = 0;
    bufferRecordPtr->myMateReferenceID = -1;
    bufferRecordPtr->myMatePosition = 1010;
    bufferRecordPtr->myInsertSize = 0;
    bufferRecordPtr->myData[0] = 'H';
    bufferRecordPtr->myData[1] = 'I';
    bufferRecordPtr->myData[2] = 0;

    ////////////////////////////////////////////
    // Test out of range reference sequence id.
    bufferRecordPtr->myReferenceID = 100;

    assert(testRecord.setBuffer((const char*)bufferRecordPtr, 
                                bufferBlockSize + sizeof(int),
                                samHeader) == SamStatus::SUCCESS);
    // 1 error - the read name length is 0.
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == false);
    assert(errorList.numErrors() == 1);
    assert(errorList.getNextError()->getType() == 
           SamValidationError::INVALID_REF_ID);
    assert(errorList.getNextError() == NULL);

    // Clear the error list
    errorList.clear();

    ////////////////////////////////////////////
    // Test out of range reference sequence id.
    bufferRecordPtr->myReferenceID = -100;

    assert(testRecord.setBuffer((const char*)bufferRecordPtr,
                                bufferBlockSize + sizeof(int),
                                samHeader) == SamStatus::SUCCESS);
    // 1 error - the read name length is 0.
    assert(SamValidator::isValid(samHeader, testRecord, errorList) == false);
    assert(errorList.numErrors() == 1);
    assert(errorList.getNextError()->getType() == 
           SamValidationError::INVALID_REF_ID);
    assert(errorList.getNextError() == NULL);

    // Clear the error list
    errorList.clear();
}