wxwidgets/tests/controls/textentrytest.h
Vadim Zeitlin 4f4c5fcfdf Use nullptr instead of NULL in the code and documentation
This is a combination of running clang-tidy with modernize-use-nullptr
check for some ports (GTK, X11, OSX) and manual changes to the ports for
which it couldn't be used easily (MSW, DFB) and also manually updating
the docs.

Also replace NULL with null or nullptr in the comments as this is more
consistent with the use of nullptr in the code and makes it simpler to
grep for the remaining occurrences of NULL itself.

And also use null in the assert messages.

Only a few occurrences of "NULL" are still left in non-C files, mostly
corresponding to unclear comments or string output which it might not be
safe to change.
2022-10-18 01:25:25 +02:00

106 lines
4 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: tests/controls/textentrytest.h
// Purpose: Base class implementing wxTextEntry unit tests
// Author: Vadim Zeitlin
// Created: 2008-09-19 (extracted from textctrltest.cpp)
// Copyright: (c) 2007, 2008 Vadim Zeitlin <vadim@wxwidgets.org>
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_TESTS_CONTROLS_TEXTENTRYTEST_H_
#define _WX_TESTS_CONTROLS_TEXTENTRYTEST_H_
class WXDLLIMPEXP_FWD_CORE wxTextEntry;
// ----------------------------------------------------------------------------
// abstract base class testing wxTextEntry methods
// ----------------------------------------------------------------------------
class TextEntryTestCase
{
public:
TextEntryTestCase() { }
virtual ~TextEntryTestCase() { }
protected:
// this function must be overridden by the derived classes to return the
// text entry object we're testing, typically this is done by creating a
// control implementing wxTextEntry interface in setUp() virtual method and
// just returning it from here
virtual wxTextEntry *GetTestEntry() const = 0;
// and this one must be overridden to return the window which implements
// wxTextEntry interface -- usually it will return the same pointer as
// GetTestEntry(), just as a different type
virtual wxWindow *GetTestWindow() const = 0;
// this should be inserted in the derived class CPPUNIT_TEST_SUITE
// definition to run all wxTextEntry tests as part of it
#define wxTEXT_ENTRY_TESTS() \
CPPUNIT_TEST( SetValue ); \
CPPUNIT_TEST( TextChangeEvents ); \
CPPUNIT_TEST( Selection ); \
CPPUNIT_TEST( InsertionPoint ); \
CPPUNIT_TEST( Replace ); \
WXUISIM_TEST( Editable ); \
CPPUNIT_TEST( Hint ); \
CPPUNIT_TEST( CopyPaste ); \
CPPUNIT_TEST( UndoRedo ); \
CPPUNIT_TEST( WriteText )
void SetValue();
void TextChangeEvents();
void Selection();
void InsertionPoint();
void Replace();
void Editable();
void Hint();
void CopyPaste();
void UndoRedo();
void WriteText();
private:
// Selection() test helper: verify that selection is as described by the
// function parameters
void AssertSelection(int from, int to, const char *sel);
// helper of AssertSelection(): check that the text selected in the control
// is the given one
//
// this is necessary to disable testing this in wxComboBox test as it
// doesn't provide any way to access the string selection directly, its
// GetStringSelection() method returns the currently selected string in the
// wxChoice part of the control, not the selected text
virtual void CheckStringSelection(const char *sel);
wxDECLARE_NO_COPY_CLASS(TextEntryTestCase);
};
// Helper used for creating the control of the specific type (currently either
// wxTextCtrl or wxComboBox) with the given flag.
class TextLikeControlCreator
{
public:
TextLikeControlCreator() {}
// Create the control of the right type using the given parent and style.
virtual wxControl* Create(wxWindow* parent, int style) const = 0;
// Return another creator similar to this one, but creating multiline
// version of the control. If the returned pointer is non-null, it must be
// deleted by the caller.
virtual TextLikeControlCreator* CloneAsMultiLine() const { return nullptr; }
// Give it a virtual dtor to avoid warnings even though this class is not
// supposed to be used polymorphically.
virtual ~TextLikeControlCreator() {}
private:
wxDECLARE_NO_COPY_CLASS(TextLikeControlCreator);
};
// Use the given control creator to check that various combinations of
// specifying and not specifying wxTE_PROCESS_ENTER and handling or not
// handling the resulting event work as expected.
void TestProcessEnter(const TextLikeControlCreator& controlCreator);
#endif // _WX_TESTS_CONTROLS_TEXTENTRYTEST_H_