1 /*
2 * Copyright (C) 2010 Regents of the University of Michigan
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include <string>
18 #include <TrimSequence.h>
19
20 #include <gtest/gtest.h>
21
TEST(TrimSequenceTest,trimSequenceTest)22 TEST(TrimSequenceTest, trimSequenceTest)
23 {
24 std::string test;
25 std::string::iterator result;
26
27 test = "445566";
28 result = trimSequence(test, '5', true);
29 EXPECT_EQ(result - test.begin() , 2);
30
31 test = "445554555";
32 result = trimSequence(test, '5', true);
33 EXPECT_EQ(result - test.begin(), 6);
34
35 test = "4455545556";
36 result = trimSequence(test, '5', true);
37 EXPECT_EQ(result - test.begin(), 6);
38
39 test = "44555455566";
40 result = trimSequence(test, '5', true);
41 EXPECT_EQ(result - test.begin(), 6);
42
43 test = "665544";
44 result = trimSequence(test, '5', false);
45 EXPECT_EQ(test.end() - result , 2);
46
47 test = "555455544";
48 result = trimSequence(test, '5', false);
49 EXPECT_EQ(test.end() - result, 6);
50
51 test = "6555455544";
52 result = trimSequence(test, '5', false);
53 EXPECT_EQ(test.end() - result, 6);
54
55 // Paul's test cases in TrimSequence.cpp
56 //
57 // from the left:
58 //
59 test = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
60 result = trimSequence(test, 'A', true);
61 EXPECT_TRUE(result == test.begin());
62
63 test = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
64 result = trimSequence(test, '~', true);
65 EXPECT_TRUE(result == test.end());
66
67 test = "AAAAABCDEFGHIJKLMNOPQRSTUVWXYZ";
68 result = trimSequence(test, 'B', true);
69 EXPECT_TRUE(result == (test.begin() + 5));
70
71 test = "AAAAAAAABCDEFGHIJKLMNOPQRSTUVWXYZ";
72 result = trimSequence(test, 'B', true);
73 EXPECT_TRUE(result == (test.begin() + 8));
74
75 test = "AAAAAAAABCDEFGHIJKLMNOPQRSTUVWXYZ";
76 result = trimSequence(test, 'F', true);
77 EXPECT_TRUE(result == (test.begin() + 12));
78
79 test = "AAAAAAAABCDEFGHIJKLMNOPQRSTUVWXYZ";
80 result = trimSequence(test, '@', true);
81 EXPECT_TRUE(result == (test.begin() + 0));
82
83 test = "AAAAAAAABCDEFGHIJKLMNOPQRSTUVWXYZ";
84 result = trimSequence(test, '@', true);
85 EXPECT_TRUE(result == (test.begin() + 0));
86
87 test = "AAAFAAAABCDEFGHIJKLMNOPQRSTUVWXYZ";
88 result = trimSequence(test, 'F', true);
89 EXPECT_TRUE(result == (test.begin() + 12));
90
91 //
92 // from the right:
93 //
94 test = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
95 result = trimSequence(test, 'A', false);
96 EXPECT_TRUE(result == test.end());
97
98 test = "ZYXWVUTSRQPONMLKJIHGFEDCBA";
99 result = trimSequence(test, '~', false);
100 EXPECT_TRUE(result == test.begin());
101
102 test = "ZYXWVUTSRQPONMLKJIHGFEDCBAAAAA";
103 result = trimSequence(test, 'B', false);
104 EXPECT_TRUE(result == (test.end() - 5));
105
106 test = "ZYXWVUTSRQPONMLKJIHGFEDCBAAAAAAA";
107 result = trimSequence(test, 'B', false);
108 EXPECT_TRUE(result == (test.end() - 7));
109
110 test = "ZYXWVUTSRQPONMLKJIHGFEDCBAAAAAAAA";
111 result = trimSequence(test, 'F', false);
112 EXPECT_TRUE(result == (test.end() - 12));
113
114 test = "ZYXWVUTSRQPONMLKJIHGFEDCBAAAAAAAA";
115 result = trimSequence(test, '@', false);
116 EXPECT_TRUE(result == (test.end() + 0));
117
118 test = "ZYXWVUTSRQPONMLKJIHGFEDCBAAAAFAAA";
119 result = trimSequence(test, 'F', false);
120 EXPECT_TRUE(result == (test.end() - 12));
121 };
122