02f697d0c0
Remove the unnecessary, and actually harmful, overridden GetProduct(), as we must delete the pointer returned by the base class version to avoid leaking it. Also use wxScopedPtr to avoid leaking a test wxHtmlContainerCell.
105 lines
2.5 KiB
C++
105 lines
2.5 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
|
|
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/dcmemory.h"
|
|
#endif // WX_PRECOMP
|
|
|
|
#include "wx/html/winpars.h"
|
|
#include "wx/scopedptr.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
|
|
{
|
|
protected:
|
|
virtual void AddText(const wxString& WXUNUSED(txt)) wxOVERRIDE { }
|
|
};
|
|
|
|
NullParser p;
|
|
wxMemoryDC dc;
|
|
p.SetDC(&dc);
|
|
|
|
delete p.Parse("<");
|
|
delete p.Parse("<foo");
|
|
delete p.Parse("<!--");
|
|
delete p.Parse("<!---");
|
|
}
|
|
|
|
TEST_CASE("wxHtmlCell::Detach", "[html][cell]")
|
|
{
|
|
wxMemoryDC dc;
|
|
|
|
wxScopedPtr<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
|