| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        tests/controls/textentrytest.cpp
 
- // Purpose:     TestEntryTestCase implementation
 
- // Author:      Vadim Zeitlin
 
- // Created:     2008-09-19 (extracted from textctrltest.cpp)
 
- // Copyright:   (c) 2007, 2008 Vadim Zeitlin <vadim@wxwidgets.org>
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #include "testprec.h"
 
- #ifndef WX_PRECOMP
 
-     #include "wx/app.h"
 
-     #include "wx/event.h"
 
-     #include "wx/textentry.h"
 
-     #include "wx/window.h"
 
- #endif // WX_PRECOMP
 
- #include "textentrytest.h"
 
- #include "testableframe.h"
 
- #include "wx/uiaction.h"
 
- void TextEntryTestCase::SetValue()
 
- {
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     CPPUNIT_ASSERT( entry->IsEmpty() );
 
-     entry->SetValue("foo");
 
-     CPPUNIT_ASSERT_EQUAL( "foo", entry->GetValue() );
 
-     entry->SetValue("");
 
-     CPPUNIT_ASSERT( entry->IsEmpty() );
 
-     entry->SetValue("hi");
 
-     CPPUNIT_ASSERT_EQUAL( "hi", entry->GetValue() );
 
-     entry->SetValue("bye");
 
-     CPPUNIT_ASSERT_EQUAL( "bye", entry->GetValue() );
 
- }
 
- void TextEntryTestCase::TextChangeEvents()
 
- {
 
-     EventCounter updated(GetTestWindow(), wxEVT_TEXT);
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     // notice that SetValue() generates an event even if the text didn't change
 
-     entry->SetValue("");
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->SetValue("foo");
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->SetValue("foo");
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->ChangeValue("bar");
 
-     CPPUNIT_ASSERT_EQUAL( 0, updated.GetCount() );
 
-     entry->AppendText("bar");
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->Replace(3, 6, "baz");
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->Remove(0, 3);
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->WriteText("foo");
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
-     entry->Clear();
 
-     CPPUNIT_ASSERT_EQUAL( 1, updated.GetCount() );
 
-     updated.Clear();
 
- }
 
- void TextEntryTestCase::CheckStringSelection(const char *sel)
 
- {
 
-     CPPUNIT_ASSERT_EQUAL( sel, GetTestEntry()->GetStringSelection() );
 
- }
 
- void TextEntryTestCase::AssertSelection(int from, int to, const char *sel)
 
- {
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     CPPUNIT_ASSERT( entry->HasSelection() );
 
-     long fromReal,
 
-          toReal;
 
-     entry->GetSelection(&fromReal, &toReal);
 
-     CPPUNIT_ASSERT_EQUAL( from, fromReal );
 
-     CPPUNIT_ASSERT_EQUAL( to, toReal );
 
-     CPPUNIT_ASSERT_EQUAL( from, entry->GetInsertionPoint() );
 
-     CheckStringSelection(sel);
 
- }
 
- void TextEntryTestCase::Selection()
 
- {
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     entry->SetValue("0123456789");
 
-     entry->SetSelection(2, 4);
 
-     AssertSelection(2, 4, "23"); // not "234"!
 
-     entry->SetSelection(3, -1);
 
-     AssertSelection(3, 10, "3456789");
 
-     entry->SelectAll();
 
-     AssertSelection(0, 10, "0123456789");
 
-     entry->SetSelection(0, 0);
 
-     CPPUNIT_ASSERT( !entry->HasSelection() );
 
- }
 
- void TextEntryTestCase::InsertionPoint()
 
- {
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     CPPUNIT_ASSERT_EQUAL( 0, entry->GetLastPosition() );
 
-     CPPUNIT_ASSERT_EQUAL( 0, entry->GetInsertionPoint() );
 
-     entry->SetValue("0"); // should put the insertion point in front
 
-     CPPUNIT_ASSERT_EQUAL( 1, entry->GetLastPosition() );
 
-     CPPUNIT_ASSERT_EQUAL( 0, entry->GetInsertionPoint() );
 
-     entry->AppendText("12"); // should update the insertion point position
 
-     CPPUNIT_ASSERT_EQUAL( 3, entry->GetLastPosition() );
 
-     CPPUNIT_ASSERT_EQUAL( 3, entry->GetInsertionPoint() );
 
-     entry->SetInsertionPoint(1);
 
-     CPPUNIT_ASSERT_EQUAL( 3, entry->GetLastPosition() );
 
-     CPPUNIT_ASSERT_EQUAL( 1, entry->GetInsertionPoint() );
 
-     entry->SetInsertionPointEnd();
 
-     CPPUNIT_ASSERT_EQUAL( 3, entry->GetInsertionPoint() );
 
-     entry->SetInsertionPoint(0);
 
-     entry->WriteText("-"); // should move it after the written text
 
-     CPPUNIT_ASSERT_EQUAL( 4, entry->GetLastPosition() );
 
-     CPPUNIT_ASSERT_EQUAL( 1, entry->GetInsertionPoint() );
 
-     entry->SetValue("something different"); // should still reset the caret
 
-     CPPUNIT_ASSERT_EQUAL( 0, entry->GetInsertionPoint() );
 
- }
 
- void TextEntryTestCase::Replace()
 
- {
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     entry->SetValue("Hello replace!"
 
-                     "0123456789012");
 
-     entry->SetInsertionPoint(0);
 
-     entry->Replace(6, 13, "changed");
 
-     CPPUNIT_ASSERT_EQUAL("Hello changed!"
 
-                          "0123456789012",
 
-                          entry->GetValue());
 
-     CPPUNIT_ASSERT_EQUAL(13, entry->GetInsertionPoint());
 
-     entry->Replace(13, -1, "");
 
-     CPPUNIT_ASSERT_EQUAL("Hello changed", entry->GetValue());
 
-     CPPUNIT_ASSERT_EQUAL(13, entry->GetInsertionPoint());
 
-     entry->Replace(0, 6, "Un");
 
-     CPPUNIT_ASSERT_EQUAL("Unchanged", entry->GetValue());
 
-     CPPUNIT_ASSERT_EQUAL(2, entry->GetInsertionPoint());
 
- }
 
- void TextEntryTestCase::Editable()
 
- {
 
- #if wxUSE_UIACTIONSIMULATOR
 
- #ifdef __WXGTK__
 
-     // FIXME: For some reason this test regularly (although not always) fails
 
-     //        in wxGTK build bot builds when testing wxBitmapComboBox, but I
 
-     //        can't reproduce the failure locally. For now, disable this check
 
-     //        to let the entire test suite pass in automatic tests instead of
 
-     //        failing sporadically.
 
-     if ( wxStrcmp(GetTestWindow()->GetClassInfo()->GetClassName(),
 
-                   "wxBitmapComboBox") == 0 &&
 
-            IsAutomaticTest() )
 
-     {
 
-         return;
 
-     }
 
- #endif // __WGTK__
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     wxWindow * const window = GetTestWindow();
 
-     EventCounter updated(window, wxEVT_TEXT);
 
-     window->SetFocus();
 
-     wxYield();
 
-     wxUIActionSimulator sim;
 
-     sim.Text("abcdef");
 
-     wxYield();
 
-     CPPUNIT_ASSERT_EQUAL("abcdef", entry->GetValue());
 
-     CPPUNIT_ASSERT_EQUAL(6, updated.GetCount());
 
-     updated.Clear();
 
-     entry->SetEditable(false);
 
-     sim.Text("gh");
 
-     wxYield();
 
-     CPPUNIT_ASSERT_EQUAL("abcdef", entry->GetValue());
 
-     CPPUNIT_ASSERT_EQUAL(0, updated.GetCount());
 
- #endif
 
- }
 
- void TextEntryTestCase::Hint()
 
- {
 
-     GetTestEntry()->SetHint("This is a hint");
 
-     CPPUNIT_ASSERT_EQUAL("", GetTestEntry()->GetValue());
 
- }
 
- void TextEntryTestCase::CopyPaste()
 
- {
 
- #ifndef __WXOSX__
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     entry->AppendText("sometext");
 
-     entry->SelectAll();
 
-     if(entry->CanCopy() && entry->CanPaste())
 
-     {
 
-         entry->Copy();
 
-         entry->Clear();
 
-         CPPUNIT_ASSERT(entry->IsEmpty());
 
-         wxYield();
 
-         entry->Paste();
 
-         CPPUNIT_ASSERT_EQUAL("sometext", entry->GetValue());
 
-     }
 
- #endif
 
- }
 
- void TextEntryTestCase::UndoRedo()
 
- {
 
-     wxTextEntry * const entry = GetTestEntry();
 
-     entry->AppendText("sometext");
 
-     if(entry->CanUndo())
 
-     {
 
-         entry->Undo();
 
-         CPPUNIT_ASSERT(entry->IsEmpty());
 
-         if(entry->CanRedo())
 
-         {
 
-             entry->Redo();
 
-             CPPUNIT_ASSERT_EQUAL("sometext", entry->GetValue());
 
-         }
 
-     }
 
- }
 
 
  |