本文整理汇总了C++中DNASequence::Copy方法的典型用法代码示例。如果您正苦于以下问题:C++ DNASequence::Copy方法的具体用法?C++ DNASequence::Copy怎么用?C++ DNASequence::Copy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DNASequence
的用法示例。
在下文中一共展示了DNASequence::Copy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: As
//Test DNASequence.Copy(const DNASequence rhs,
// DNALength rhsPos,
// DNALength rhsLength)
TEST_F(DNASequenceTest, Copy) {
DNALength oneLen = 10;
Nucleotide * one = new Nucleotide [oneLen];
string As("AGAAAAACAA");
for (int i = 0; i < oneLen; i++) {
one[i] = As[i];
}
dnaOne.seq = one;
dnaOne.length = oneLen;
DNASequence dnaTwo;
dnaTwo.Copy(dnaOne);
EXPECT_EQ(dnaTwo.length, dnaOne.length);
EXPECT_NE(dnaTwo.seq , dnaOne.seq);
EXPECT_TRUE(dnaTwo.deleteOnExit);
EXPECT_EQ(memcmp(dnaTwo.seq, dnaOne.seq, dnaOne.length), 0);
//if rhs.length is 0, return this *
DNASequence dnaThree;
dnaTwo.Copy(dnaThree);
//dnaTwo remains unchanged
EXPECT_EQ(dnaTwo.length, 0);
EXPECT_NE(dnaTwo.seq, dnaOne.seq);
EXPECT_TRUE(dnaTwo.deleteOnExit);
EXPECT_TRUE(dnaTwo.seq == NULL);
//if rhsPos is not 0 and rhsLength is 0
dnaTwo.Copy(dnaOne, 2);
EXPECT_EQ(dnaTwo.length, dnaOne.length - 2);
EXPECT_TRUE(dnaTwo.deleteOnExit);
EXPECT_EQ(memcmp(dnaTwo.seq, dnaOne.seq + 2, dnaTwo.length), 0);
//if the subsequence to copy is out of bounds
EXPECT_GT(200, dnaOne.length);
//EXPECT_EXIT(dnaTwo.Copy(dnaOne, 200), ::testing::ExitedWithCode(1), "");
//if both rhsPos and rhsLength are less than MAXINT,
//but rhsPos+ rhsLength > MAXINT
DNALength rhsPos = 3;
DNALength rhsLength = UINT_MAX -1;
EXPECT_TRUE(rhsPos < UINT_MAX && rhsLength < UINT_MAX);
EXPECT_TRUE(rhsLength > dnaOne.length + 1);
//EXPECT_EXIT(dnaTwo.Copy(dnaOne, rhsPos, rhsLength), ::testing::ExitedWithCode(1), "");
//if rhsPos > rhs.length
//EXPECT_EXIT(dnaTwo.Copy(dnaOne, dnaOne.length + 1), ::testing::ExitedWithCode(1), "")
// << "Copy a subsequence which is out of bounds. This needs to be taken care of. See bug 21867.";
}