Skip to content

Commit 0eee70f

Browse files
Fea, String函数添加IndexOf、IndexOfAny、LastIndexOf、LastIndexOfAny、GetData
1 parent 2f09024 commit 0eee70f

File tree

4 files changed

+1185
-105
lines changed

4 files changed

+1185
-105
lines changed

UnitTest/StringUnitTest.cpp

Lines changed: 143 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,35 @@
1111
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
1212
using namespace YY;
1313

14+
namespace Microsoft::VisualStudio::CppUnitTestFramework
15+
{
16+
template<>
17+
inline std::wstring ToString<YY::uString>(const YY::uString& _oValue)
18+
{
19+
std::wstring _szResult;
20+
_szResult += L'{';
21+
22+
_szResult.append(_oValue.GetData(), _oValue.GetLength());
23+
24+
_szResult += L'}';
25+
26+
return _szResult;
27+
}
28+
29+
template<>
30+
inline std::wstring ToString<YY::uStringView>(const YY::uStringView& _oValue)
31+
{
32+
std::wstring _szResult;
33+
_szResult += L'{';
34+
35+
_szResult.append(_oValue.GetData(), _oValue.GetLength());
36+
37+
_szResult += L'}';
38+
39+
return _szResult;
40+
}
41+
}
42+
1443
namespace UnitTest
1544
{
1645
TEST_CLASS(StringUnitTest)
@@ -157,6 +186,119 @@ namespace UnitTest
157186
}
158187
}
159188

160-
189+
TEST_METHOD(Remove)
190+
{
191+
YY::uString _szTemp(_S("0123456789"));
192+
193+
_szTemp.Remove(0, 2);
194+
Assert::AreEqual(_szTemp, _S("23456789"));
195+
196+
_szTemp.Remove(2, 2);
197+
Assert::AreEqual(_szTemp, _S("236789"));
198+
199+
_szTemp.Remove(5, 2);
200+
Assert::AreEqual(_szTemp, _S("23678"));
201+
202+
_szTemp.Remove(5, 2);
203+
Assert::AreEqual(_szTemp, _S("23678"));
204+
205+
_szTemp.Remove(0);
206+
Assert::AreEqual(_szTemp, _S(""));
207+
}
208+
209+
TEST_METHOD(Substring)
210+
{
211+
YY::uString _szTemp(_S("0123456789"));
212+
213+
Assert::AreEqual(_szTemp.Substring(0, 2), _S("01"));
214+
Assert::AreEqual(_szTemp.Substring(1, 2), _S("12"));
215+
Assert::AreEqual(_szTemp.Substring(8, 2), _S("89"));
216+
Assert::AreEqual(_szTemp.Substring(9, 2), _S("9"));
217+
Assert::AreEqual(_szTemp.Substring(10, 2), _S(""));
218+
}
219+
220+
TEST_METHOD(SplitAndTakeFirst)
221+
{
222+
YY::uString _szTemp(_S("01|34|6789"));
223+
224+
size_t _uNextIndex = 0;
225+
Assert::AreEqual(_szTemp.SplitAndTakeFirst(YY::uString::char_t('|'), _uNextIndex, &_uNextIndex), _S("01"));
226+
Assert::AreEqual(_uNextIndex, size_t(3));
227+
228+
Assert::AreEqual(_szTemp.SplitAndTakeFirst(YY::uString::char_t('|'), _uNextIndex, &_uNextIndex), _S("34"));
229+
Assert::AreEqual(_uNextIndex, size_t(6));
230+
231+
Assert::AreEqual(_szTemp.SplitAndTakeFirst(YY::uString::char_t('|'), _uNextIndex, &_uNextIndex), _S("6789"));
232+
Assert::AreEqual(_uNextIndex, size_t(10));
233+
}
161234
};
235+
236+
TEST_CLASS(StringView)
237+
{
238+
public:
239+
240+
TEST_METHOD(IndexOf)
241+
{
242+
YY::uStringView _sTest(_S("0123456789"));
243+
{
244+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('0')), size_t(0));
245+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('7')), size_t(7));
246+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('9')), size_t(9));
247+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('a')), YY::kuInvalidIndex);
248+
249+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('0'), 1), YY::kuInvalidIndex);
250+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('7'), 1), size_t(7));
251+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('9'), 1), size_t(9));
252+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('a'), 1), YY::kuInvalidIndex);
253+
254+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('0'), 1, 7), YY::kuInvalidIndex);
255+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('7'), 1, 6), YY::kuInvalidIndex);
256+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('7'), 1, 7), size_t(7));
257+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('9'), 1, 8), YY::kuInvalidIndex);
258+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('9'), 1, 9), size_t(9));
259+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('9'), 1, 10), size_t(9));
260+
Assert::AreEqual(_sTest.IndexOf(YY::uStringView::char_t('a'), 1), YY::kuInvalidIndex);
261+
262+
}
263+
264+
{
265+
Assert::AreEqual(_sTest.IndexOf(_S("012")), size_t(0));
266+
Assert::AreEqual(_sTest.IndexOf(_S("123")), size_t(1));
267+
Assert::AreEqual(_sTest.IndexOf(_S("789")), size_t(7));
268+
Assert::AreEqual(_sTest.IndexOf(_S("890")), YY::kuInvalidIndex);
269+
270+
271+
Assert::AreEqual(_sTest.IndexOf(_S("12"), 0, 2), YY::kuInvalidIndex);
272+
Assert::AreEqual(_sTest.IndexOf(_S("12"), 0, 3), size_t(1));
273+
Assert::AreEqual(_sTest.IndexOf(_S("12"), 1, 3), size_t(1));
274+
}
275+
}
276+
277+
TEST_METHOD(IndexOfAny)
278+
{
279+
YY::uStringView _sTest(_S("0123456789"));
280+
281+
{
282+
Assert::AreEqual(_sTest.IndexOfAny(YY::uStringView::FromStaticString(_S("0123456789"))), size_t(0));
283+
Assert::AreEqual(_sTest.IndexOfAny(YY::uStringView::FromStaticString(_S("123456789"))), size_t(1));
284+
Assert::AreEqual(_sTest.IndexOfAny(YY::uStringView::FromStaticString(_S("9"))), size_t(9));
285+
Assert::AreEqual(_sTest.IndexOfAny(YY::uStringView::FromStaticString(_S("abcd"))), YY::kuInvalidIndex);
286+
}
287+
}
288+
289+
TEST_METHOD(SplitAndTakeFirst)
290+
{
291+
YY::uStringView _szTemp(_S("01|34|6789"));
292+
293+
size_t _uNextIndex = 0;
294+
Assert::AreEqual(_szTemp.SplitAndTakeFirst(YY::uStringView::char_t('|'), _uNextIndex, &_uNextIndex), YY::uStringView::FromStaticString(_S("01")));
295+
Assert::AreEqual(_uNextIndex, size_t(3));
296+
297+
Assert::AreEqual(_szTemp.SplitAndTakeFirst(YY::uStringView::char_t('|'), _uNextIndex, &_uNextIndex), YY::uStringView::FromStaticString(_S("34")));
298+
Assert::AreEqual(_uNextIndex, size_t(6));
299+
300+
Assert::AreEqual(_szTemp.SplitAndTakeFirst(YY::uStringView::char_t('|'), _uNextIndex, &_uNextIndex), YY::uStringView::FromStaticString(_S("6789")));
301+
Assert::AreEqual(_uNextIndex, size_t(10));
302+
}
303+
};
162304
}

0 commit comments

Comments
 (0)