110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        tests/html/htmlparser.cpp
 | |
| // Purpose:     wxHtmlParser tests
 | |
| // Author:      Vadim Zeitlin
 | |
| // Created:     2011-01-13
 | |
| // Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // headers
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| #include "testprec.h"
 | |
| 
 | |
| #if wxUSE_HTML
 | |
| 
 | |
| #ifdef __BORLANDC__
 | |
|     #pragma hdrstop
 | |
| #endif
 | |
| 
 | |
| #ifndef WX_PRECOMP
 | |
|     #include "wx/dcmemory.h"
 | |
| #endif // WX_PRECOMP
 | |
| 
 | |
| #include "wx/html/winpars.h"
 | |
| 
 | |
| // Test that parsing invalid HTML simply fails but doesn't crash for example.
 | |
| TEST_CASE("wxHtmlParser::ParseInvalid", "[html][parser][error]")
 | |
| {
 | |
|     class NullParser : public wxHtmlWinParser
 | |
|     {
 | |
|     public:
 | |
|         virtual wxObject *GetProduct() wxOVERRIDE { return NULL; }
 | |
| 
 | |
|     protected:
 | |
|         virtual void AddText(const wxString& WXUNUSED(txt)) wxOVERRIDE { }
 | |
|     };
 | |
| 
 | |
|     NullParser p;
 | |
|     wxMemoryDC dc;
 | |
|     p.SetDC(&dc);
 | |
| 
 | |
|     p.Parse("<");
 | |
|     p.Parse("<foo");
 | |
|     p.Parse("<!--");
 | |
|     p.Parse("<!---");
 | |
| }
 | |
| 
 | |
| TEST_CASE("wxHtmlCell::Detach", "[html][cell]")
 | |
| {
 | |
|     wxMemoryDC dc;
 | |
| 
 | |
|     wxHtmlContainerCell* const top = new wxHtmlContainerCell(NULL);
 | |
|     wxHtmlContainerCell* const cont = new wxHtmlContainerCell(NULL);
 | |
|     wxHtmlCell* const cell1 = new wxHtmlWordCell("Hello", dc);
 | |
|     wxHtmlCell* const cell2 = new wxHtmlColourCell(*wxRED);
 | |
|     wxHtmlCell* const cell3 = new wxHtmlWordCell("world", dc);
 | |
| 
 | |
|     cont->InsertCell(cell1);
 | |
|     cont->InsertCell(cell2);
 | |
|     cont->InsertCell(cell3);
 | |
|     top->InsertCell(cont);
 | |
| 
 | |
|     SECTION("container")
 | |
|     {
 | |
|         top->Detach(cont);
 | |
|         CHECK( top->GetFirstChild() == NULL );
 | |
| 
 | |
|         delete cont;
 | |
|     }
 | |
| 
 | |
|     SECTION("first-child")
 | |
|     {
 | |
|         cont->Detach(cell1);
 | |
|         CHECK( cont->GetFirstChild() == cell2 );
 | |
| 
 | |
|         delete cell1;
 | |
|     }
 | |
| 
 | |
|     SECTION("middle-child")
 | |
|     {
 | |
|         cont->Detach(cell2);
 | |
|         CHECK( cont->GetFirstChild() == cell1 );
 | |
|         CHECK( cell1->GetNext() == cell3 );
 | |
| 
 | |
|         delete cell2;
 | |
|     }
 | |
| 
 | |
|     SECTION("last-child")
 | |
|     {
 | |
|         cont->Detach(cell3);
 | |
|         CHECK( cont->GetFirstChild() == cell1 );
 | |
|         CHECK( cell1->GetNext() == cell2 );
 | |
|         CHECK( cell2->GetNext() == NULL );
 | |
| 
 | |
|         delete cell3;
 | |
|     }
 | |
| 
 | |
|     SECTION("invalid")
 | |
|     {
 | |
|         WX_ASSERT_FAILS_WITH_ASSERT_MESSAGE
 | |
|         (
 | |
|             "Expected assertion for detaching non-child",
 | |
|             top->Detach(cell1);
 | |
|         );
 | |
|     }
 | |
| }
 | |
| 
 | |
| #endif //wxUSE_HTML
 |