Changeset 143 for trunk/MFCtooling/replay/LogParser.cpp
- Timestamp:
- 08/01/11 18:59:05 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MFCtooling/replay/LogParser.cpp
r105 r143 78 78 } 79 79 currentParent = winData; 80 } 80 } 81 else if( localName.compare(L"textEquals")==0 ) { 82 expectedValue = GetAttributeValue(pAttributes, L"expectedValue", L""); 83 } 84 else if( localName.compare(L"fileEquals")==0) { 85 actualFile = GetAttributeValue(pAttributes, L"actualFile", L""); 86 expectedFile = GetAttributeValue(pAttributes, L"expectedFile", L""); 87 } 88 81 89 return S_OK; 82 90 } … … 130 138 currentWindow = NULL; 131 139 } 140 else if( localName.compare(L"textEquals")==0 ) { 141 WindowFinder finder; 142 HWND hwnd = finder.find(currentWindow); 143 144 wchar_t* wstr = new wchar_t[256]; 145 wstr[0] = '\0'; 146 147 //GetWindowText is not working properly for EditControls in other applications -> send WM_GETTEXT instead 148 SendMessage(hwnd, WM_GETTEXT, 255, (LPARAM)wstr); 149 std::wstring windowText = wstr; 150 151 if(expectedValue == windowText) std::wcout << std::endl << L"textEquals passed (expected value: " << expectedValue.c_str() << ")" << std::endl << std::endl; 152 else std::wcout << std::endl << L"textEquals failed (expected value: " << expectedValue.c_str() << ", windowText: " << windowText << ")" << std::endl << std::endl; 153 deleteWindowData(currentWindow); 154 currentWindow = NULL; 155 } 156 else if( localName.compare(L"fileEquals")==0) { 157 std::ifstream f1(actualFile.c_str(), std::ios_base::in | std::ios_base::binary); 158 if(f1 == NULL) { 159 160 std::wcout << std::endl << L"fileEquals failed because " << actualFile << " is not available!"<< std::endl << std::endl; 161 return S_OK; 162 } 163 164 std::ifstream f2(expectedFile.c_str(), std::ios_base::in | std::ios_base::binary); 165 if(f2 == NULL) { 166 std::wcout << std::endl << L"fileEquals failed because " << expectedFile << " is not available!" << std::endl << std::endl; 167 return S_OK; 168 } 169 170 f1.seekg(0, std::ios_base::end); 171 f2.seekg(0, std::ios_base::end); 172 std::streamsize length1 = f1.tellg(); 173 std::streamsize length2 = f2.tellg(); 174 175 bool passed = true; 176 177 if (length1 != length2) { // Non equal length -> files differ 178 passed = false; 179 } 180 else { 181 f1.seekg(0); 182 f2.seekg(0); 183 184 const std::streamsize blocksize = 4096; 185 char block1[blocksize], block2[blocksize]; 186 187 for (std::streamsize counter=length1; counter > 0; counter -= blocksize) 188 { 189 f1.read(block1, blocksize); 190 f2.read(block2, blocksize); 191 192 if(memcmp(block1, block2, blocksize) != 0) { //block are non equal -> files differ 193 passed = false; 194 break; 195 } 196 } 197 } 198 199 if(passed) { 200 std::wcout << std::endl << L"FileEquals passed" << std::endl << std::endl; 201 } 202 else { 203 std::wcout << std::endl << L"fileEquals failed (expectedFile: " << expectedFile.c_str() << ", actualFile: " << actualFile << ")" << std::endl << std::endl; 204 } 205 206 f1.close(); 207 f2.close(); 208 } 209 132 210 return S_OK; 133 211 }
Note: See TracChangeset
for help on using the changeset viewer.