Drop CGitByteArray::findData
[TortoiseGit.git] / test / UnitTests / GitByteArrayTest.cpp
blobf0dbd4ccf8f3ff05bf7c134939f4b39480b78f90
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2015 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #include "stdafx.h"
21 #include "gittype.h"
23 TEST(CGitByteArray, Empty)
25 CGitByteArray byteArray;
26 EXPECT_TRUE(byteArray.empty());
27 EXPECT_EQ(0, byteArray.size());
30 TEST(CGitByteArray, AppendByteArray)
32 BYTE inputByteArray[] = { "12345789" };
33 CGitByteArray byteArray;
34 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
35 EXPECT_EQ(sizeof(inputByteArray), byteArray.size());
37 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
38 EXPECT_EQ(2 * sizeof(inputByteArray), byteArray.size());
40 byteArray.clear();
41 EXPECT_TRUE(byteArray.empty());
42 EXPECT_EQ(0, byteArray.size());
45 TEST(CGitByteArray, AppendByteArrayWithNulls)
47 BYTE inputByteArray[] = { "1234\0""5789\0" };
48 CGitByteArray byteArray;
50 EXPECT_EQ(0, byteArray.append(inputByteArray, 0));
51 EXPECT_EQ(0, byteArray.size());
53 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
54 EXPECT_EQ(sizeof(inputByteArray), byteArray.size());
56 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
57 EXPECT_EQ(2 * sizeof(inputByteArray), byteArray.size());
60 TEST(CGitByteArray, AppendByteArrayRange)
62 BYTE inputByteArray[] = { "1234\0""5789\0" };
63 CGitByteArray byteArray1;
64 EXPECT_EQ(0, byteArray1.append(inputByteArray, sizeof(inputByteArray)));
65 EXPECT_EQ(sizeof(inputByteArray), byteArray1.size());
67 CGitByteArray byteArray2;
68 EXPECT_EQ(0, byteArray2.append(byteArray1, 0));
69 EXPECT_EQ(byteArray1.size(), byteArray2.size());
71 EXPECT_EQ(0, byteArray2.append(byteArray1, 4, 3));
72 EXPECT_EQ(sizeof(inputByteArray), byteArray1.size());
73 EXPECT_EQ(byteArray1.size(), byteArray2.size());
75 EXPECT_EQ(0, byteArray2.append(byteArray1, 4, 4));
76 EXPECT_EQ(sizeof(inputByteArray), byteArray1.size());
77 EXPECT_EQ(byteArray1.size(), byteArray2.size());
79 EXPECT_EQ(0, byteArray2.append(byteArray1, 4, 7));
80 EXPECT_EQ(sizeof(inputByteArray), byteArray1.size());
81 EXPECT_EQ(byteArray1.size() + 3, byteArray2.size());
84 TEST(CGitByteArray, Find)
86 BYTE inputByteArray[] = { "1234\0""5789\0" };
87 CGitByteArray byteArray;
89 EXPECT_EQ(-1, byteArray.find(0));
90 EXPECT_EQ(-1, byteArray.find('3'));
91 EXPECT_EQ(-1, byteArray.find(0, 15));
93 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
94 EXPECT_EQ(sizeof(inputByteArray), byteArray.size());
96 EXPECT_EQ(4, byteArray.find(0));
97 EXPECT_EQ(4, byteArray.find(0, 4));
98 EXPECT_EQ(9, byteArray.find(0, 5));
99 EXPECT_EQ(-1, byteArray.find(0, 15));
101 EXPECT_EQ(0, byteArray.find('1'));
102 EXPECT_EQ(1, byteArray.find('2'));
104 EXPECT_EQ(-1, byteArray.find('F'));
106 EXPECT_EQ(0, byteArray.append((const BYTE*)"1", 1));
107 EXPECT_EQ(0, byteArray.find('1'));
108 EXPECT_EQ(11, byteArray.find('1', 2));
110 EXPECT_EQ(4, byteArray.find(0));
111 EXPECT_EQ(4, byteArray.find(0, 4));
112 EXPECT_EQ(9, byteArray.find(0, 5));
113 EXPECT_EQ(9, byteArray.find(0, 9));
114 EXPECT_EQ(10, byteArray.find(0, 10));
115 EXPECT_EQ(-1, byteArray.find(0, 11));
116 EXPECT_EQ(-1, byteArray.find(0, 15));
119 TEST(CGitByteArray, RevertFind)
121 BYTE inputByteArray[] = { "1234\0""5789\0" };
122 CGitByteArray byteArray;
124 EXPECT_EQ(-1, byteArray.RevertFind(0));
125 EXPECT_EQ(-1, byteArray.RevertFind('3'));
126 EXPECT_THROW(byteArray.RevertFind(0, 15), std::out_of_range); // right now this should never happen, just to check if the implementation changes
128 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
129 EXPECT_EQ(sizeof(inputByteArray), byteArray.size());
131 EXPECT_EQ(10, byteArray.RevertFind(0));
132 EXPECT_EQ(10, byteArray.RevertFind(0, 10));
133 EXPECT_EQ(9, byteArray.RevertFind(0, 9));
134 EXPECT_EQ(4, byteArray.RevertFind(0, 4));
135 EXPECT_EQ(4, byteArray.RevertFind(0, 5));
136 EXPECT_EQ(-1, byteArray.RevertFind(0, 2));
137 EXPECT_THROW(byteArray.RevertFind(0, 15), std::out_of_range); // right now this should never happen, just to check if the implementation changes
139 EXPECT_EQ(0, byteArray.RevertFind('1'));
140 EXPECT_EQ(1, byteArray.RevertFind('2'));
142 EXPECT_EQ(-1, byteArray.RevertFind('F'));
144 EXPECT_EQ(0, byteArray.append((const BYTE*)"1", 1));
145 EXPECT_EQ(11, byteArray.RevertFind('1'));
146 EXPECT_EQ(11, byteArray.RevertFind('1', 11));
147 EXPECT_EQ(0, byteArray.RevertFind('1', 10));
148 EXPECT_EQ(0, byteArray.RevertFind('1', 2));
149 EXPECT_EQ(0, byteArray.RevertFind('1', 1));
150 EXPECT_EQ(0, byteArray.RevertFind('1', 0));
152 EXPECT_EQ(10, byteArray.RevertFind(0));
153 EXPECT_EQ(-1, byteArray.RevertFind(0, 0));
154 EXPECT_EQ(-1, byteArray.RevertFind(0, 2));
155 EXPECT_EQ(4, byteArray.RevertFind(0, 4));
156 EXPECT_EQ(4, byteArray.RevertFind(0, 5));
157 EXPECT_EQ(9, byteArray.RevertFind(0, 9));
158 EXPECT_EQ(10, byteArray.RevertFind(0, 10));
159 EXPECT_EQ(10, byteArray.RevertFind(0, 11));
160 EXPECT_THROW(byteArray.RevertFind(0, 15), std::out_of_range); // right now this should never happen, just to check if the implementation changes
163 TEST(CGitByteArray, FindNextString)
165 BYTE inputByteArray[] = { "1234\0""5789\0" };
166 CGitByteArray byteArray;
168 EXPECT_EQ(-1, byteArray.findNextString(0));
169 EXPECT_EQ(-1, byteArray.findNextString(5));
171 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
172 EXPECT_EQ(sizeof(inputByteArray), byteArray.size());
174 EXPECT_EQ(5, byteArray.findNextString(0));
175 EXPECT_EQ(5, byteArray.findNextString(2));
176 EXPECT_EQ(5, byteArray.findNextString(4));
177 EXPECT_EQ(-1, byteArray.findNextString(5));
178 EXPECT_EQ(-1, byteArray.findNextString(9));
179 EXPECT_EQ(-1, byteArray.findNextString(10));
181 EXPECT_EQ(0, byteArray.append((const BYTE*)"0", 1));
182 EXPECT_EQ(5, byteArray.findNextString(0));
183 EXPECT_EQ(5, byteArray.findNextString(2));
184 EXPECT_EQ(5, byteArray.findNextString(4));
185 EXPECT_EQ(11, byteArray.findNextString(5));
186 EXPECT_EQ(11, byteArray.findNextString(9));
187 EXPECT_EQ(11, byteArray.findNextString(10));
188 EXPECT_EQ(-1, byteArray.findNextString(11));
190 byteArray.clear();
191 EXPECT_EQ(0, byteArray.append(inputByteArray, sizeof(inputByteArray)));
192 EXPECT_EQ(sizeof(inputByteArray), byteArray.size());
194 EXPECT_EQ(0, byteArray.append((const BYTE*)"1", 1));
195 EXPECT_EQ(5, byteArray.findNextString(0));
196 EXPECT_EQ(5, byteArray.findNextString(2));
197 EXPECT_EQ(5, byteArray.findNextString(4));
198 EXPECT_EQ(11, byteArray.findNextString(5));
199 EXPECT_EQ(11, byteArray.findNextString(9));
200 EXPECT_EQ(11, byteArray.findNextString(10));
201 EXPECT_EQ(-1, byteArray.findNextString(11));