mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-03 01:01:44 +00:00
Add some msxml3 tests.
This commit is contained in:
parent
8c375c7fd4
commit
cab04351d7
|
@ -1571,6 +1571,7 @@ dlls/msvidc32/Makefile
|
|||
dlls/msvideo/Makefile
|
||||
dlls/mswsock/Makefile
|
||||
dlls/msxml3/Makefile
|
||||
dlls/msxml3/tests/Makefile
|
||||
dlls/netapi32/Makefile
|
||||
dlls/netapi32/tests/Makefile
|
||||
dlls/newdev/Makefile
|
||||
|
|
|
@ -16,6 +16,8 @@ C_SRCS = \
|
|||
node.c \
|
||||
nodemap.c
|
||||
|
||||
SUBDIRS = tests
|
||||
|
||||
@MAKE_DLL_RULES@
|
||||
|
||||
### Dependencies:
|
||||
|
|
3
dlls/msxml3/tests/.cvsignore
Normal file
3
dlls/msxml3/tests/.cvsignore
Normal file
|
@ -0,0 +1,3 @@
|
|||
Makefile
|
||||
domdoc.ok
|
||||
testlist.c
|
14
dlls/msxml3/tests/Makefile.in
Normal file
14
dlls/msxml3/tests/Makefile.in
Normal file
|
@ -0,0 +1,14 @@
|
|||
TOPSRCDIR = @top_srcdir@
|
||||
TOPOBJDIR = ../../..
|
||||
SRCDIR = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
TESTDLL = msxml3.dll
|
||||
IMPORTS = oleaut32 ole32 kernel32
|
||||
EXTRALIBS = -luuid
|
||||
|
||||
CTESTS = \
|
||||
domdoc.c
|
||||
|
||||
@MAKE_TEST_RULES@
|
||||
|
||||
### Dependencies:
|
204
dlls/msxml3/tests/domdoc.c
Normal file
204
dlls/msxml3/tests/domdoc.c
Normal file
|
@ -0,0 +1,204 @@
|
|||
/*
|
||||
* XML test
|
||||
*
|
||||
* Copyright 2005 Mike McCormack for CodeWeavers
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#define COBJMACROS
|
||||
|
||||
#include "windows.h"
|
||||
#include "ole2.h"
|
||||
#include "msxml.h"
|
||||
#include "xmldom.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#include "wine/test.h"
|
||||
|
||||
void test_domdoc( void )
|
||||
{
|
||||
HRESULT r;
|
||||
IXMLDOMDocument *doc = NULL;
|
||||
IXMLDOMElement *element = NULL;
|
||||
static const GUID CLSID_DOMDocument =
|
||||
{ 0x2933BF90, 0x7B36, 0x11d2, {0xB2,0x0E,0x00,0xC0,0x4F,0x98,0x3E,0x60}};
|
||||
static const GUID IID_IXMLDOMDocument =
|
||||
{ 0x2933BF81, 0x7B36, 0x11d2, {0xB2,0x0E,0x00,0xC0,0x4F,0x98,0x3E,0x60}};
|
||||
VARIANT_BOOL b;
|
||||
BSTR str;
|
||||
static const WCHAR szEmpty[] = { 0 };
|
||||
static const WCHAR szIncomplete[] = {
|
||||
'<','?','x','m','l',' ',
|
||||
'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n',0
|
||||
};
|
||||
static const WCHAR szComplete1[] = {
|
||||
'<','?','x','m','l',' ',
|
||||
'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n',
|
||||
'<','o','p','e','n','>','<','/','o','p','e','n','>','\n',0
|
||||
};
|
||||
static const WCHAR szComplete2[] = {
|
||||
'<','?','x','m','l',' ',
|
||||
'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n',
|
||||
'<','o','>','<','/','o','>','\n',0
|
||||
};
|
||||
static const WCHAR szComplete3[] = {
|
||||
'<','?','x','m','l',' ',
|
||||
'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>','\n',
|
||||
'<','a','>','<','/','a','>','\n',0
|
||||
};
|
||||
static const WCHAR szComplete4[] = {
|
||||
'<','?','x','m','l',' ',
|
||||
'v','e','r','s','i','o','n','=','\'','1','.','0','\'','?','>',
|
||||
'<','l','c',' ','d','l','=','\'','s','t','r','1','\'','>',
|
||||
'<','b','s',' ','v','r','=','\'','s','t','r','2','\'',' ',
|
||||
's','z','=','\'','1','2','3','4','\'','>','f','n','1','.','t','x','t','<','/','b','s','>',
|
||||
'<','p','r',' ','i','d','=','\'','s','t','r','3','\'',' ',
|
||||
'v','r','=','\'','1','.','2','.','3','\'',' ',
|
||||
'p','n','=','\'','w','i','n','e',' ','2','0','0','5','0','8','0','4','\'','>',
|
||||
'f','n','2','.','t','x','t','<','/','p','r','>',
|
||||
'<','/','l','c','>','\n',0
|
||||
};
|
||||
static const WCHAR szOpen[] = { 'o','p','e','n',0 };
|
||||
|
||||
r = CoInitialize( NULL );
|
||||
ok( r == S_OK, "failed to init com\n");
|
||||
|
||||
r = CoCreateInstance( &CLSID_DOMDocument, NULL,
|
||||
CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (LPVOID*)&doc );
|
||||
/* ok( r == S_OK, "failed to create an xml dom doc\n" ); */
|
||||
if( r != S_OK )
|
||||
return;
|
||||
|
||||
/* try some stupid things */
|
||||
r = IXMLDOMDocument_loadXML( doc, NULL, NULL );
|
||||
ok( r == S_FALSE, "loadXML failed\n");
|
||||
|
||||
b = VARIANT_TRUE;
|
||||
r = IXMLDOMDocument_loadXML( doc, NULL, &b );
|
||||
ok( r == S_FALSE, "loadXML failed\n");
|
||||
ok( b == VARIANT_FALSE, "failed to load XML string\n");
|
||||
|
||||
/* try load an empty document */
|
||||
b = VARIANT_TRUE;
|
||||
str = SysAllocString( szEmpty );
|
||||
r = IXMLDOMDocument_loadXML( doc, str, &b );
|
||||
ok( r == S_FALSE, "loadXML failed\n");
|
||||
ok( b == VARIANT_FALSE, "failed to load XML string\n");
|
||||
SysFreeString( str );
|
||||
|
||||
/* check that there's no document element */
|
||||
element = NULL;
|
||||
r = IXMLDOMDocument_get_documentElement( doc, &element );
|
||||
ok( r == S_FALSE, "should be no document element\n");
|
||||
|
||||
b = VARIANT_TRUE;
|
||||
str = SysAllocString( szIncomplete );
|
||||
r = IXMLDOMDocument_loadXML( doc, str, &b );
|
||||
ok( r == S_FALSE, "loadXML failed\n");
|
||||
ok( b == VARIANT_FALSE, "failed to load XML string\n");
|
||||
SysFreeString( str );
|
||||
|
||||
/* check that there's no document element */
|
||||
element = (IXMLDOMElement*)1;
|
||||
r = IXMLDOMDocument_get_documentElement( doc, &element );
|
||||
ok( r == S_FALSE, "should be no document element\n");
|
||||
ok( element == NULL, "Element should be NULL\n");
|
||||
|
||||
/* try to load something valid */
|
||||
b = VARIANT_FALSE;
|
||||
str = SysAllocString( szComplete1 );
|
||||
r = IXMLDOMDocument_loadXML( doc, str, &b );
|
||||
ok( r == S_OK, "loadXML failed\n");
|
||||
ok( b == VARIANT_TRUE, "failed to load XML string\n");
|
||||
SysFreeString( str );
|
||||
|
||||
/* try with a null out pointer - crashes */
|
||||
if (0)
|
||||
{
|
||||
r = IXMLDOMDocument_get_documentElement( doc, NULL );
|
||||
ok( r == S_OK, "should be no document element\n");
|
||||
}
|
||||
|
||||
/* check that there's no document element */
|
||||
element = NULL;
|
||||
r = IXMLDOMDocument_get_documentElement( doc, &element );
|
||||
ok( r == S_OK, "should be a document element\n");
|
||||
if( element )
|
||||
{
|
||||
BSTR tag = NULL;
|
||||
|
||||
/* check if the tag is correct */
|
||||
r = IXMLDOMElement_get_tagName( element, &tag );
|
||||
ok( r == S_OK, "couldn't get tag name\n");
|
||||
ok( tag != NULL, "tag was null\n");
|
||||
ok( !lstrcmpW( tag, szOpen ), "incorrect tag name\n");
|
||||
SysFreeString( tag );
|
||||
|
||||
/* figure out what happens if we try to reload the document */
|
||||
str = SysAllocString( szComplete2 );
|
||||
r = IXMLDOMDocument_loadXML( doc, str, &b );
|
||||
ok( r == S_OK, "loadXML failed\n");
|
||||
ok( b == VARIANT_TRUE, "failed to load XML string\n");
|
||||
SysFreeString( str );
|
||||
|
||||
/* check if the tag is still correct */
|
||||
tag = NULL;
|
||||
r = IXMLDOMElement_get_tagName( element, &tag );
|
||||
ok( r == S_OK, "couldn't get tag name\n");
|
||||
ok( tag != NULL, "tag was null\n");
|
||||
ok( !lstrcmpW( tag, szOpen ), "incorrect tag name\n");
|
||||
SysFreeString( tag );
|
||||
|
||||
IXMLDOMElement_Release( element );
|
||||
element = NULL;
|
||||
}
|
||||
|
||||
/* as soon as we call loadXML again, the document element will disappear */
|
||||
b = 2;
|
||||
r = IXMLDOMDocument_loadXML( doc, NULL, NULL );
|
||||
ok( r == S_FALSE, "loadXML failed\n");
|
||||
ok( b == 2, "variant modified\n");
|
||||
r = IXMLDOMDocument_get_documentElement( doc, &element );
|
||||
ok( r == S_FALSE, "should be no document element\n");
|
||||
|
||||
/* try to load something else simple and valid */
|
||||
b = VARIANT_FALSE;
|
||||
str = SysAllocString( szComplete3 );
|
||||
r = IXMLDOMDocument_loadXML( doc, str, &b );
|
||||
ok( r == S_OK, "loadXML failed\n");
|
||||
ok( b == VARIANT_TRUE, "failed to load XML string\n");
|
||||
SysFreeString( str );
|
||||
|
||||
/* try something a little more complicated */
|
||||
b = FALSE;
|
||||
str = SysAllocString( szComplete4 );
|
||||
r = IXMLDOMDocument_loadXML( doc, str, &b );
|
||||
ok( r == S_OK, "loadXML failed\n");
|
||||
ok( b == VARIANT_TRUE, "failed to load XML string\n");
|
||||
SysFreeString( str );
|
||||
|
||||
r = IXMLDocument_Release( doc );
|
||||
ok( r == 0, "document ref count incorrect\n");
|
||||
|
||||
CoUninitialize();
|
||||
ok( r == S_OK, "failed to uninit com\n");
|
||||
}
|
||||
|
||||
START_TEST(domdoc)
|
||||
{
|
||||
test_domdoc();
|
||||
}
|
Loading…
Reference in a new issue