From: Václav Slavík Date: Sat, 29 Mar 2008 22:55:35 +0000 (+0000) Subject: 1. fixed wxXmlNode::InsertChild() documentation to match the code X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/5e05df3c7ff33db7eab01f5012ab218ac2843cea 1. fixed wxXmlNode::InsertChild() documentation to match the code 2. added tests for InsertChild() 3. simplified InsertChild() code without changing what it does git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- 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. - */ - bool InsertChild(wxXmlNode* child, wxXmlNode* before_node); + 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* 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) - { - 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) + // 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 ) { - // 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); +}