diff --git a/include/wx/xml/xml.h b/include/wx/xml/xml.h
index 37ffa2099c..77c88ef74c 100644
--- a/include/wx/xml/xml.h
+++ b/include/wx/xml/xml.h
@@ -127,7 +127,7 @@ public:
const wxString& content = wxEmptyString,
int lineNo = -1);
virtual void AddChild(wxXmlNode *child);
- virtual bool InsertChild(wxXmlNode *child, wxXmlNode *before_node);
+ virtual bool InsertChild(wxXmlNode *child, wxXmlNode *followingNode);
virtual bool RemoveChild(wxXmlNode *child);
virtual void AddAttribute(const wxString& name, const wxString& value);
virtual bool DeleteAttribute(const wxString& name);
diff --git a/interface/xml/xml.h b/interface/xml/xml.h
index c584e3e5ea..cc1fd7fef7 100644
--- a/interface/xml/xml.h
+++ b/interface/xml/xml.h
@@ -157,14 +157,19 @@ public:
bool HasAttribute(const wxString& attrName) const;
/**
- Inserts the @a child node after @a before_node in the children list.
- If @a before_node is @NULL, then @a child is prepended to the list of
- children and
- becomes the first child of this node.
- Returns @true if @a before_node has been found and the @a child node has been
- inserted.
+ Inserts the @a child node immediately before @a followingNode in the
+ children list.
+
+ @return @true if @a followingNode has been found and the @a child
+ node has been inserted.
+
+ @note
+ For historical reasons, @a followingNode may be @NULL. In that case,
+ then @a child is prepended to the list of children and becomes the
+ first child of this node, i.e. it behaves identically to using the
+ first children (as returned by GetChildren()) for @a followingNode).
*/
- bool InsertChild(wxXmlNode* child, wxXmlNode* before_node);
+ bool InsertChild(wxXmlNode* child, wxXmlNode* followingNode);
/**
Returns @true if the content of this node is a string containing only
diff --git a/src/xml/xml.cpp b/src/xml/xml.cpp
index a68f828b40..37467fc122 100644
--- a/src/xml/xml.cpp
+++ b/src/xml/xml.cpp
@@ -187,39 +187,42 @@ void wxXmlNode::AddChild(wxXmlNode *child)
child->m_parent = this;
}
-bool wxXmlNode::InsertChild(wxXmlNode *child, wxXmlNode *before_node)
+// inserts a new node in front of 'followingNode'
+bool wxXmlNode::InsertChild(wxXmlNode *child, wxXmlNode *followingNode)
{
- wxCHECK_MSG(before_node == NULL || before_node->GetParent() == this, false,
- wxT("wxXmlNode::InsertChild - the node has incorrect parent"));
- wxCHECK_MSG(child, false, wxT("Cannot insert a NULL pointer!"));
+ wxCHECK_MSG( child, false, "cannot insert a NULL node!" );
+ wxCHECK_MSG( child->m_parent == NULL, false, "node already has a parent" );
+ wxCHECK_MSG( child->m_next == NULL, false, "node already has m_next" );
+ wxCHECK_MSG( followingNode == NULL || followingNode->GetParent() == this,
+ false,
+ "wxXmlNode::InsertChild - followingNode has incorrect parent" );
- if (m_children == before_node)
- m_children = child;
- else if (m_children == NULL)
+ // this is for backward compatibility, NULL was allowed here thanks to
+ // the confusion about followingNode's meaning
+ if ( followingNode == NULL )
+ followingNode = m_children;
+
+ if ( m_children == followingNode )
{
- if (before_node != NULL)
- return false; // we have no children so we don't need to search
- m_children = child;
- }
- else if (before_node == NULL)
- {
- // prepend child
- child->m_parent = this;
child->m_next = m_children;
m_children = child;
- return true;
}
else
{
wxXmlNode *ch = m_children;
- while (ch && ch->m_next != before_node) ch = ch->m_next;
- if (!ch)
- return false; // before_node not found
+ while ( ch && ch->m_next != followingNode )
+ ch = ch->m_next;
+ if ( !ch )
+ {
+ wxFAIL_MSG( "followingNode has this node as parent, but couldn't be found among children" );
+ return false;
+ }
+
+ child->m_next = followingNode;
ch->m_next = child;
}
child->m_parent = this;
- child->m_next = before_node;
return true;
}
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 14b4866478..4827514091 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -32,6 +32,7 @@ TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@
TOOLKIT_VERSION = @TOOLKIT_VERSION@
TOOLCHAIN_FULLNAME = @TOOLCHAIN_FULLNAME@
EXTRALIBS = @EXTRALIBS@
+EXTRALIBS_XML = @EXTRALIBS_XML@
EXTRALIBS_GUI = @EXTRALIBS_GUI@
CXXWARNINGS = @CXXWARNINGS@
HOST_SUFFIX = @HOST_SUFFIX@
@@ -99,7 +100,8 @@ TEST_OBJECTS = \
test_vectors.o \
test_evtconnection.o \
test_weakref.o \
- test_xlocale.o
+ test_xlocale.o \
+ test_xmltest.o
TEST_ODEP = $(___pch_testprec_test_testprec_h_gch___depname)
TEST_GUI_CXXFLAGS = $(__test_gui_PCH_INC) -D__WX$(TOOLKIT)__ \
$(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
@@ -149,6 +151,9 @@ PRINTFBENCH_ODEP = $(___pch_testprec_printfbench_testprec_h_gch___depname)
COND_MONOLITHIC_0___WXLIB_NET_p = \
-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net-$(WX_RELEASE)$(HOST_SUFFIX)
@COND_MONOLITHIC_0@__WXLIB_NET_p = $(COND_MONOLITHIC_0___WXLIB_NET_p)
+COND_MONOLITHIC_0___WXLIB_XML_p = \
+ -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml-$(WX_RELEASE)$(HOST_SUFFIX)
+@COND_MONOLITHIC_0@__WXLIB_XML_p = $(COND_MONOLITHIC_0___WXLIB_XML_p)
@COND_USE_GUI_1@__test_gui___depname = test_gui$(EXEEXT)
@COND_PLATFORM_MAC_0@__test_gui___mac_setfilecmd = @true
@COND_PLATFORM_MAC_1@__test_gui___mac_setfilecmd = \
@@ -248,7 +253,7 @@ distclean: clean
rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile
test$(EXEEXT): $(TEST_OBJECTS)
- $(CXX) -o $@ $(TEST_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(SAMPLES_RPATH_FLAG) $(CPPUNIT_LIBS) $(LIBS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
+ $(CXX) -o $@ $(TEST_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(SAMPLES_RPATH_FLAG) $(CPPUNIT_LIBS) $(LIBS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_XML_p) $(EXTRALIBS_XML) $(__WXLIB_MONO_p) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE)
$(__test___mac_setfilecmd)
$(SAMPLES_RPATH_POSTLINK)
@@ -470,6 +475,9 @@ test_weakref.o: $(srcdir)/weakref/weakref.cpp $(TEST_ODEP)
test_xlocale.o: $(srcdir)/xlocale/xlocale.cpp $(TEST_ODEP)
$(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/xlocale/xlocale.cpp
+test_xmltest.o: $(srcdir)/xml/xmltest.cpp $(TEST_ODEP)
+ $(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/xml/xmltest.cpp
+
test_gui_sample_rc.o: $(srcdir)/../samples/sample.rc $(TEST_GUI_ODEP)
$(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_5) $(__EXCEPTIONS_DEFINE_p_5) $(__RTTI_DEFINE_p_5) $(__THREAD_DEFINE_p_5) --include-dir $(srcdir) $(__DLLFLAG_p_5) --include-dir $(srcdir)/../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
diff --git a/tests/makefile.bcc b/tests/makefile.bcc
index 3f6fe75329..0d5d0eca2c 100644
--- a/tests/makefile.bcc
+++ b/tests/makefile.bcc
@@ -86,7 +86,8 @@ TEST_OBJECTS = \
$(OBJS)\test_vectors.obj \
$(OBJS)\test_evtconnection.obj \
$(OBJS)\test_weakref.obj \
- $(OBJS)\test_xlocale.obj
+ $(OBJS)\test_xlocale.obj \
+ $(OBJS)\test_xmltest.obj
TEST_GUI_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
$(__OPTIMIZEFLAG) $(__THREADSFLAG_1) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
@@ -153,6 +154,10 @@ EXTRALIBS_FOR_BASE =
__WXLIB_NET_p = \
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
!endif
+!if "$(MONOLITHIC)" == "0"
+__WXLIB_XML_p = \
+ wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib
+!endif
!if "$(USE_GUI)" == "1"
__test_gui___depname = $(OBJS)\test_gui.exe
!endif
@@ -326,7 +331,7 @@ clean:
$(OBJS)\test.exe: $(OBJS)\test_dummy.obj $(TEST_OBJECTS)
ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -ap $(CPPUNIT_LIBS) @&&|
- c0x32.obj $(TEST_OBJECTS),$@,, $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_1).lib,,
+ c0x32.obj $(TEST_OBJECTS),$@,, $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_XML_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) ole2w32.lib oleacc.lib import32.lib cw32$(__THREADSFLAG)$(__RUNTIME_LIBS_1).lib,,
|
!if "$(USE_GUI)" == "1"
@@ -502,6 +507,9 @@ $(OBJS)\test_weakref.obj: .\weakref\weakref.cpp
$(OBJS)\test_xlocale.obj: .\xlocale\xlocale.cpp
$(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\xlocale\xlocale.cpp
+$(OBJS)\test_xmltest.obj: .\xml\xmltest.cpp
+ $(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) .\xml\xmltest.cpp
+
$(OBJS)\test_gui_sample.res: .\..\samples\sample.rc
brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) -i$(SETUPHDIR) -i.\..\include -i. $(__DLLFLAG_p_3) -i.\..\samples -dNOPCH .\..\samples\sample.rc
diff --git a/tests/makefile.gcc b/tests/makefile.gcc
index ab7646b5b9..c5f6814f66 100644
--- a/tests/makefile.gcc
+++ b/tests/makefile.gcc
@@ -78,7 +78,8 @@ TEST_OBJECTS = \
$(OBJS)\test_vectors.o \
$(OBJS)\test_evtconnection.o \
$(OBJS)\test_weakref.o \
- $(OBJS)\test_xlocale.o
+ $(OBJS)\test_xlocale.o \
+ $(OBJS)\test_xmltest.o
TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
$(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
@@ -151,6 +152,10 @@ ifeq ($(MONOLITHIC),0)
__WXLIB_NET_p = \
-lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net
endif
+ifeq ($(MONOLITHIC),0)
+__WXLIB_XML_p = \
+ -lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml
+endif
ifeq ($(USE_GUI),1)
__test_gui___depname = $(OBJS)\test_gui.exe
endif
@@ -309,7 +314,7 @@ clean:
-if exist $(OBJS)\printfbench.exe del $(OBJS)\printfbench.exe
$(OBJS)\test.exe: $(TEST_OBJECTS)
- $(CXX) -o $@ $(TEST_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) $(CPPUNIT_LIBS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
+ $(CXX) -o $@ $(TEST_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) $(CPPUNIT_LIBS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_XML_p) $(__WXLIB_MONO_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
ifeq ($(USE_GUI),1)
$(OBJS)\test_gui.exe: $(TEST_GUI_OBJECTS) $(OBJS)\test_gui_sample_rc.o
@@ -480,6 +485,9 @@ $(OBJS)\test_weakref.o: ./weakref/weakref.cpp
$(OBJS)\test_xlocale.o: ./xlocale/xlocale.cpp
$(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
+$(OBJS)\test_xmltest.o: ./xml/xmltest.cpp
+ $(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
+
$(OBJS)\test_gui_sample_rc.o: ./../samples/sample.rc
windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) --include-dir $(SETUPHDIR) --include-dir ./../include --include-dir . $(__DLLFLAG_p_3) --include-dir ./../samples --define NOPCH
diff --git a/tests/makefile.vc b/tests/makefile.vc
index 3dc3d715ff..e7b7ebde77 100644
--- a/tests/makefile.vc
+++ b/tests/makefile.vc
@@ -79,7 +79,8 @@ TEST_OBJECTS = \
$(OBJS)\test_vectors.obj \
$(OBJS)\test_evtconnection.obj \
$(OBJS)\test_weakref.obj \
- $(OBJS)\test_xlocale.obj
+ $(OBJS)\test_xlocale.obj \
+ $(OBJS)\test_xmltest.obj
TEST_GUI_CXXFLAGS = /M$(__RUNTIME_LIBS_23)$(__DEBUGRUNTIME) /DWIN32 \
$(__DEBUGINFO) /Fd$(OBJS)\test_gui.pdb $(____DEBUGRUNTIME) \
$(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
@@ -181,6 +182,10 @@ __RUNTIME_LIBS_8 = $(__THREADSFLAG)
__WXLIB_NET_p = \
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
!endif
+!if "$(MONOLITHIC)" == "0"
+__WXLIB_XML_p = \
+ wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib
+!endif
!if "$(USE_GUI)" == "1"
__test_gui___depname = $(OBJS)\test_gui.exe
!endif
@@ -411,7 +416,7 @@ clean:
$(OBJS)\test.exe: $(OBJS)\test_dummy.obj $(TEST_OBJECTS)
link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_2) /pdb:"$(OBJS)\test.pdb" $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:CONSOLE $(CPPUNIT_LIBS) @<<
- $(TEST_OBJECTS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
+ $(TEST_OBJECTS) $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_XML_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib
<<
!if "$(USE_GUI)" == "1"
@@ -587,6 +592,9 @@ $(OBJS)\test_weakref.obj: .\weakref\weakref.cpp
$(OBJS)\test_xlocale.obj: .\xlocale\xlocale.cpp
$(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\xlocale\xlocale.cpp
+$(OBJS)\test_xmltest.obj: .\xml\xmltest.cpp
+ $(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) .\xml\xmltest.cpp
+
$(OBJS)\test_gui_dummy.obj: .\dummy.cpp
$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) /Yctestprec.h .\dummy.cpp
diff --git a/tests/makefile.wat b/tests/makefile.wat
index 1cdce99cc9..4f1da2621c 100644
--- a/tests/makefile.wat
+++ b/tests/makefile.wat
@@ -74,6 +74,11 @@ __WXLIB_NET_p =
__WXLIB_NET_p = &
wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net.lib
!endif
+__WXLIB_XML_p =
+!ifeq MONOLITHIC 0
+__WXLIB_XML_p = &
+ wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_xml.lib
+!endif
__test_gui___depname =
!ifeq USE_GUI 1
__test_gui___depname = $(OBJS)\test_gui.exe
@@ -286,7 +291,8 @@ TEST_OBJECTS = &
$(OBJS)\test_vectors.obj &
$(OBJS)\test_evtconnection.obj &
$(OBJS)\test_weakref.obj &
- $(OBJS)\test_xlocale.obj
+ $(OBJS)\test_xlocale.obj &
+ $(OBJS)\test_xmltest.obj
TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
@@ -340,7 +346,7 @@ $(OBJS)\test.exe : $(TEST_OBJECTS)
@%append $(OBJS)\test.lbc option caseexact
@%append $(OBJS)\test.lbc $(LDFLAGS) $(__DEBUGINFO_2) libpath $(LIBDIRNAME) system nt ref 'main_' $(CPPUNIT_LIBS)
@for %i in ($(TEST_OBJECTS)) do @%append $(OBJS)\test.lbc file %i
- @for %i in ( $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\test.lbc library %i
+ @for %i in ( $(__WXLIB_NET_p) $(__WXLIB_BASE_p) $(__WXLIB_XML_p) $(__WXLIB_MONO_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__GDIPLUS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib) do @%append $(OBJS)\test.lbc library %i
@%append $(OBJS)\test.lbc
@for %i in () do @%append $(OBJS)\test.lbc option stack=%i
wlink @$(OBJS)\test.lbc
@@ -532,6 +538,9 @@ $(OBJS)\test_weakref.obj : .AUTODEPEND .\weakref\weakref.cpp
$(OBJS)\test_xlocale.obj : .AUTODEPEND .\xlocale\xlocale.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
+$(OBJS)\test_xmltest.obj : .AUTODEPEND .\xml\xmltest.cpp
+ $(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
+
$(OBJS)\test_gui_sample.res : .AUTODEPEND .\..\samples\sample.rc
wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\include -i=. $(__DLLFLAG_p) -i=.\..\samples -dNOPCH $<
diff --git a/tests/test.bkl b/tests/test.bkl
index 8d682b7998..6080b7b75a 100644
--- a/tests/test.bkl
+++ b/tests/test.bkl
@@ -73,9 +73,11 @@
weakref/evtconnection.cpp
weakref/weakref.cpp
xlocale/xlocale.cpp
+ xml/xmltest.cpp
net
base
+ xml
diff --git a/tests/test_test.dsp b/tests/test_test.dsp
index ea24f8eceb..8191d2c212 100644
--- a/tests/test_test.dsp
+++ b/tests/test_test.dsp
@@ -54,8 +54,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\test.exe" /debug /pdb:"vc_mswunivudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
-# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\test.exe" /debug /pdb:"vc_mswunivudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\test.exe" /debug /pdb:"vc_mswunivudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivudll\test.exe" /debug /pdb:"vc_mswunivudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 DLL Universal Debug"
@@ -77,8 +77,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\test.exe" /debug /pdb:"vc_mswunivuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
-# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\test.exe" /debug /pdb:"vc_mswunivuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\test.exe" /debug /pdb:"vc_mswunivuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\test.exe" /debug /pdb:"vc_mswunivuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 DLL Release"
@@ -100,8 +100,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\test.exe" /debug /pdb:"vc_mswudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
-# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\test.exe" /debug /pdb:"vc_mswudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\test.exe" /debug /pdb:"vc_mswudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswudll\test.exe" /debug /pdb:"vc_mswudll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 DLL Debug"
@@ -123,8 +123,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\test.exe" /debug /pdb:"vc_mswuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
-# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\test.exe" /debug /pdb:"vc_mswuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\test.exe" /debug /pdb:"vc_mswuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
+# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswuddll\test.exe" /debug /pdb:"vc_mswuddll\test.pdb" /libpath:".\..\lib\vc_dll" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 Universal Release"
@@ -146,8 +146,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\test.exe" /debug /pdb:"vc_mswunivu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
-# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\test.exe" /debug /pdb:"vc_mswunivu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\test.exe" /debug /pdb:"vc_mswunivu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivu\test.exe" /debug /pdb:"vc_mswunivu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 Universal Debug"
@@ -169,8 +169,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\test.exe" /debug /pdb:"vc_mswunivud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
-# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\test.exe" /debug /pdb:"vc_mswunivud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\test.exe" /debug /pdb:"vc_mswunivud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswunivud\test.exe" /debug /pdb:"vc_mswunivud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 Release"
@@ -192,8 +192,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\test.exe" /debug /pdb:"vc_mswu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
-# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\test.exe" /debug /pdb:"vc_mswu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD BASE LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\test.exe" /debug /pdb:"vc_mswu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD LINK32 wxbase29u_net.lib wxbase29u.lib wxbase29u_xml.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswu\test.exe" /debug /pdb:"vc_mswu\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
!ELSEIF "$(CFG)" == "test - Win32 Debug"
@@ -215,8 +215,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\test.exe" /debug /pdb:"vc_mswud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
-# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\test.exe" /debug /pdb:"vc_mswud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD BASE LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\test.exe" /debug /pdb:"vc_mswud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
+# ADD LINK32 wxbase29ud_net.lib wxbase29ud.lib wxbase29ud_xml.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib /nologo /machine:i386 /out:"vc_mswud\test.exe" /debug /pdb:"vc_mswud\test.pdb" /libpath:".\..\lib\vc_lib" /subsystem:console
!ENDIF
@@ -433,6 +433,10 @@ SOURCE=.\xlocale\xlocale.cpp
# End Source File
# Begin Source File
+SOURCE=.\xml\xmltest.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\archive\ziptest.cpp
# End Source File
# Begin Source File
diff --git a/tests/test_vc7_test.vcproj b/tests/test_vc7_test.vcproj
index 9494e01caa..f5be6007e4 100644
--- a/tests/test_vc7_test.vcproj
+++ b/tests/test_vc7_test.vcproj
@@ -67,7 +67,7 @@
Name="VCPreLinkEventTool"/>
+
+
diff --git a/tests/xml/xmltest.cpp b/tests/xml/xmltest.cpp
new file mode 100644
index 0000000000..1f354224f1
--- /dev/null
+++ b/tests/xml/xmltest.cpp
@@ -0,0 +1,106 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name: tests/xml/xmltest.cpp
+// Purpose: XML classes unit test
+// Author: Vaclav Slavik
+// Created: 2008-03-29
+// RCS-ID: $Id$
+// Copyright: (c) 2008 Vaclav Slavik
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "testprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/wx.h"
+#endif // WX_PRECOMP
+
+#include "wx/xml/xml.h"
+
+#include
+
+// ----------------------------------------------------------------------------
+// helpers for testing XML tree
+// ----------------------------------------------------------------------------
+
+namespace
+{
+
+void CheckXml(wxXmlNode *n, ...)
+{
+ va_list args;
+ va_start(args, n);
+
+ wxXmlNode *child = n->GetChildren();
+
+ for (;;)
+ {
+ const char *childName = va_arg(args, char*);
+ if ( childName == NULL )
+ break;
+
+ CPPUNIT_ASSERT( child );
+ WX_ASSERT_STR_EQUAL( childName, child->GetName() );
+ CPPUNIT_ASSERT( child->GetChildren() == NULL );
+ CPPUNIT_ASSERT( child->GetParent() == n );
+
+ child = child->GetNext();
+ }
+
+ va_end(args);
+
+ CPPUNIT_ASSERT( child == NULL ); // no more children
+}
+
+} // anon namespace
+
+// ----------------------------------------------------------------------------
+// test class
+// ----------------------------------------------------------------------------
+
+class XmlTestCase : public CppUnit::TestCase
+{
+public:
+ XmlTestCase() {}
+
+private:
+ CPPUNIT_TEST_SUITE( XmlTestCase );
+ CPPUNIT_TEST( InsertChild );
+ CPPUNIT_TEST_SUITE_END();
+
+ void InsertChild();
+
+ DECLARE_NO_COPY_CLASS(XmlTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( XmlTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XmlTestCase, "XmlTestCase" );
+
+void XmlTestCase::InsertChild()
+{
+ wxXmlNode *root = new wxXmlNode(wxXML_ELEMENT_NODE, "root");
+ root->AddChild(new wxXmlNode(wxXML_ELEMENT_NODE, "1"));
+ wxXmlNode *two = new wxXmlNode(wxXML_ELEMENT_NODE, "2");
+ root->AddChild(two);
+ root->AddChild(new wxXmlNode(wxXML_ELEMENT_NODE, "3"));
+ CheckXml(root, "1", "2", "3", NULL);
+
+ // check inserting in front:
+ root->InsertChild(new wxXmlNode(wxXML_ELEMENT_NODE, "A"), NULL);
+ CheckXml(root, "A", "1", "2", "3", NULL);
+ root->InsertChild(new wxXmlNode(wxXML_ELEMENT_NODE, "B"), root->GetChildren());
+ CheckXml(root, "B", "A", "1", "2", "3", NULL);
+
+ // and in the middle:
+ root->InsertChild(new wxXmlNode(wxXML_ELEMENT_NODE, "C"), two);
+ CheckXml(root, "B", "A", "1", "C", "2", "3", NULL);
+}