diff --git a/rostests/winetests/msxml3/domdoc.c b/rostests/winetests/msxml3/domdoc.c index 18b9576cbbc..2d831dd7fbd 100644 --- a/rostests/winetests/msxml3/domdoc.c +++ b/rostests/winetests/msxml3/domdoc.c @@ -150,6 +150,37 @@ static const CHAR szTypeValueXML[] = "" "Wine"; +static const CHAR szBasicTransformSSXMLPart1[] = +"" +"" +"\n" +"" +"" +" " +" " +" " +"
" +"
" +"" +" " +"" +"" +" " +"" +"" +" " +"" +"
"; + +static const CHAR szBasicTransformXML[] = +"Wine$25.00"; + +static const CHAR szBasicTransformOutput[] = +"
Wine$25.00
"; + static const WCHAR szNonExistentFile[] = { 'c', ':', '\\', 'N', 'o', 'n', 'e', 'x', 'i', 's', 't', 'e', 'n', 't', '.', 'x', 'm', 'l', 0 }; @@ -514,8 +545,12 @@ static void test_domdoc( void ) ok( r == S_OK, "should be a document element\n"); if( element ) { + IObjectIdentity *ident; BSTR tag = NULL; + r = IXMLDOMElement_QueryInterface( element, &IID_IObjectIdentity, (LPVOID*)&ident ); + ok( r == E_NOINTERFACE, "ret %08x\n", r); + /* check if the tag is correct */ r = IXMLDOMElement_get_tagName( element, &tag ); ok( r == S_OK, "couldn't get tag name\n"); @@ -3948,6 +3983,98 @@ static void test_NodeTypeValue(void) free_bstrs(); } +static void test_TransformWithLoadingLocalFile(void) +{ + IXMLDOMDocument2 *doc = NULL; + IXMLDOMDocument2 *xsl = NULL; + IXMLDOMNode *pNode; + VARIANT_BOOL bSucc; + HRESULT hr; + HANDLE file; + DWORD dwWritten; + char lpPathBuffer[MAX_PATH]; + int i; + + /* Create a Temp File. */ + GetTempPathA(MAX_PATH, lpPathBuffer); + strcat(lpPathBuffer, "customers.xml" ); + + file = CreateFile(lpPathBuffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); + ok(file != INVALID_HANDLE_VALUE, "Could not create file: %u\n", GetLastError()); + if(file == INVALID_HANDLE_VALUE) + return; + + WriteFile(file, szBasicTransformXML, strlen(szBasicTransformXML), &dwWritten, NULL); + CloseHandle(file); + + /* Correct path to not include a escape character. */ + for(i=0; i < strlen(lpPathBuffer); i++) + { + if(lpPathBuffer[i] == '\\') + lpPathBuffer[i] = '/'; + } + + hr = CoCreateInstance( &CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (LPVOID*)&doc ); + if( hr != S_OK ) + return; + + hr = CoCreateInstance( &CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument2, (LPVOID*)&xsl ); + if( hr != S_OK ) + { + IXMLDOMDocument2_Release(doc); + return; + } + + hr = IXMLDOMDocument2_loadXML(doc, _bstr_(szTypeValueXML), &bSucc); + ok(hr == S_OK, "ret %08x\n", hr ); + ok(bSucc == VARIANT_TRUE, "Expected VARIANT_TRUE got VARIANT_FALSE\n"); + if(bSucc == VARIANT_TRUE) + { + BSTR sXSL; + BSTR sPart1 = _bstr_(szBasicTransformSSXMLPart1); + BSTR sPart2 = _bstr_(szBasicTransformSSXMLPart2); + BSTR sFileName = _bstr_(lpPathBuffer); + int nLegnth = lstrlenW(sPart1) + lstrlenW(sPart2) + lstrlenW(sFileName) + 1; + + sXSL = SysAllocStringLen(NULL, nLegnth); + lstrcpyW(sXSL, sPart1); + lstrcatW(sXSL, sFileName); + lstrcatW(sXSL, sPart2); + + hr = IXMLDOMDocument2_loadXML(xsl, sXSL, &bSucc); + ok(hr == S_OK, "ret %08x\n", hr ); + ok(bSucc == VARIANT_TRUE, "Expected VARIANT_TRUE got VARIANT_FALSE\n"); + if(bSucc == VARIANT_TRUE) + { + BSTR sResult; + + hr = IXMLDOMDocument_QueryInterface(xsl, &IID_IXMLDOMNode, (LPVOID*)&pNode ); + ok(hr == S_OK, "ret %08x\n", hr ); + if(hr == S_OK) + { + /* This will load the temp file via the XSL */ + hr = IXMLDOMDocument2_transformNode(doc, pNode, &sResult); + ok(hr == S_OK, "ret %08x\n", hr ); + if(hr == S_OK) + { + ok( compareIgnoreReturns( sResult, _bstr_(szBasicTransformOutput)), "Stylesheet output not correct\n"); + SysFreeString(sResult); + } + + IXMLDOMNode_Release(pNode); + } + } + + SysFreeString(sXSL); + } + + IXMLDOMDocument2_Release(doc); + IXMLDOMDocument2_Release(xsl); + + DeleteFile(lpPathBuffer); + free_bstrs(); +} + START_TEST(domdoc) { HRESULT r; @@ -3977,6 +4104,7 @@ START_TEST(domdoc) test_Namespaces(); test_FormattingXML(); test_NodeTypeValue(); + test_TransformWithLoadingLocalFile(); CoUninitialize(); } diff --git a/rostests/winetests/msxml3/saxreader.c b/rostests/winetests/msxml3/saxreader.c index 426fe36f922..dd0e42c282b 100644 --- a/rostests/winetests/msxml3/saxreader.c +++ b/rostests/winetests/msxml3/saxreader.c @@ -117,13 +117,6 @@ static content_handler_test contentHandlerTest2[] = { static content_handler_test *expectCall; static ISAXLocator *locator; -static const char *debugstr_wn(const WCHAR *szStr, int len) -{ - static char buf[1024]; - WideCharToMultiByte(CP_ACP, 0, szStr, len, buf, sizeof(buf), NULL, NULL); - return buf; -} - static void test_saxstr(unsigned line, const WCHAR *szStr, int nStr, const char *szTest) { WCHAR buf[1024]; @@ -142,7 +135,7 @@ static void test_saxstr(unsigned line, const WCHAR *szStr, int nStr, const char MultiByteToWideChar(CP_ACP, 0, szTest, -1, buf, sizeof(buf)/sizeof(WCHAR)); ok_(__FILE__,line) (!memcmp(szStr, buf, len*sizeof(WCHAR)), "unexpected szStr %s, expected %s\n", - debugstr_wn(szStr, nStr), szTest); + wine_dbgstr_wn(szStr, nStr), szTest); } static BOOL test_expect_call(CH id)