📄 mystringtest.h
字号:
// MyStringTest.h: Use the test class#include "test.h"#include "MyString.h"#include <tchar.h>class CMyStringTest : public Test{public: CMyStringTest() { } void run() { // The tests to run: testConstructors(); testCasts(); testCharAccess(); testAssignment(); testConcat(); testExtract(); testFind(); testTrash(); } // first test void testConstructors() { CMyString s0; // test CMyString() - empty ctor _test(s0.GetLength() == 0); _test(s0.IsEmpty() ? true : false); // test CMyString(LPCTSTR lpsz); LPCTSTR t1 = _T("onetwothree"); CMyString s1(t1); _test(s1 == t1); // test CMyString(LPCTSTR lpsz, int nLength); CMyString s2(t1, 6); _test(s2 == _T("onetwo")); // test CMyString(const CMyString& stringSrc); CMyString s3(s1); _test(s3 == s1); // test CMyString(const CString& stringSrc); CString t2("fourfivesix"); CMyString s4(t2); _test(CString(s4) == t2); } void testCasts() { // operator CString() const; LPCTSTR t1 = _T("alphabravocharliedelta"); const CMyString s1(t1); CString v1 = CString(s1); _test(v1 == t1); // operator CString&(); CMyString s2(t1); LPCTSTR t2 = _T("echofoxgolf"); CString &v2 = s2; v2 = t2; _test(s2 == t2); // operator LPCTSTR() const; const CMyString s3(t2); _test(_tcscmp(t2, LPCTSTR(s3)) == 0 ? true : false); } void testCharAccess() { int i; // TCHAR operator[](int nIndex) const; CMyString s1(_T("abcdefghijklmnopqrstuvwxyz")); const TCHAR *t1 = _T("abcdefghijklmnopqrstuvwxyz"); for (i = 0; i < 26; i++) _test(s1[i] == t1[i]); // void SetAt(int nIndex, TCHAR ch); CMyString s2(_T("--------------------------")); for (i = 0; i < 26; i++) { s2.SetAt(i, t1[i]); _test(s2[i] == t1[i]); } } void testAssignment() { // const CMyString& operator=(const CMyString& stringSrc); CMyString s1(_T("one")); CMyString s2 = s1; _test(s1 == s2); // const CMyString& operator=(TCHAR ch); s1 = TCHAR('x'); _test(s1.GetLength() == 1); _test(s1[0] == TCHAR('x')); // const CMyString& operator=(LPCTSTR lpsz); const LPCTSTR t3 = _T("ABC123acb!@#"); CMyString s3 = t3; _test(_tcscmp(t3, LPCTSTR(s3)) == 0 ? true : false); // const CMyString& operator=(const unsigned char* psz); const unsigned char *t4 = (const unsigned char *)"yada-yada"; CMyString s4 = t4; _test(::strcmp(s4, (const char *)t4) == 0 ? true : false); } void testConcat() { // const CMyString& operator+=(const CMyString& string); CMyString s1(_T("one ")); CMyString s2(_T("plus one is two")); s1 += s2; _test(s1 == _T("one plus one is two")); // const CMyString& operator+=(TCHAR ch); CMyString s3(_T("cow")); s3 += TCHAR('s'); _test(s3 == _T("cows")); // const CMyString& operator+=(LPCTSTR lpsz); CMyString s4(_T("Fish")); LPCTSTR t4 = _T(" and chips"); s4 += t4; _test(s4 == _T("Fish and chips")); // // friend CMyString AFXAPI operator+(const CMyString& string1, // const CMyString& string2); CMyString s5(_T("Black")); CMyString s6(_T(" and white")); CMyString s7 = s5 + s6; _test(s7 == _T("Black and white")); // friend CMyString AFXAPI operator+(const CMyString& string, // TCHAR ch); CMyString s8(_T("dog")); CMyString s9 = s8 + TCHAR('s'); _test(s9 == _T("dogs")); // friend CMyString AFXAPI operator+(TCHAR ch, // const CMyString& string); CMyString s10(_T("ats")); CMyString s11 = TCHAR('c') + s10; _test(s11 == _T("cats")); // friend CMyString AFXAPI operator+(const CMyString& string, // LPCTSTR lpsz); CMyString s12(_T("Yin and")); CMyString s13 = s12 + _T(" yang"); _test(s13 == _T("Yin and yang")); // friend CMyString AFXAPI operator+(LPCTSTR lpsz, // const CMyString& string); // CMyString s14(_T("Butthead")); CMyString s15 = _T("Beavis and ") + s14; _test(s15 == _T("Beavis and Butthead")); } void testExtract() { // CMyString Mid(int nFirst, int nCount) const; const CMyString s1(_T("1234567890")); _test(s1.Mid(3,3) == _T("456")); // CString Left(int nCount) const; _test(s1.Left(3) == _T("123")); // CString Right(int nCount) const; _test(s1.Right(3) == _T("890")); // void TrimRight(); CMyString s2(" blablaBLA "); s2.TrimRight(); _test(s2 == _T(" blablaBLA")); // void TrimLeft(); s2.TrimLeft(); _test(s2 == _T("blablaBLA")); // void MakeLower(); s2.MakeLower(); _test(s2 == _T("blablabla")); } void testFind() { // int FindByte( char ch ) const; const CMyString s1(_T("ABCDEFGHIJKLMNOPQRSTUVWXYZ")); int x1 = s1.FindByte('C'); // how will this work in unicode version? _test(x1 == 2); // int Find(TCHAR ch) const; int x2 = s1.Find(TCHAR('E')); _test(x2 == 4); // int Find(LPCTSTR lpszSub) const; int x3 = s1.Find(_T("XYZ")); _test(x3 == 23); } // // // last test void testTrash() { LPCTSTR t1 = _T("that's all, folks!"); CMyString s1(t1); s1.Trash(); _test(s1 != t1); }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -