]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/controls/textctrltest.cpp
set buffer length after reading the file contents into it successfully (part of ...
[wxWidgets.git] / tests / controls / textctrltest.cpp
index 4c4234be44e30556516c228bb2c1e5d0547f8e13..02c600d55967a134ff58906d18896c344b45a790 100644 (file)
@@ -38,10 +38,18 @@ private:
     CPPUNIT_TEST_SUITE( TextCtrlTestCase );
         CPPUNIT_TEST( SetValue );
         CPPUNIT_TEST( TextChangeEvents );
+        CPPUNIT_TEST( Selection );
+        CPPUNIT_TEST( InsertionPoint );
     CPPUNIT_TEST_SUITE_END();
 
     void SetValue();
     void TextChangeEvents();
+    void Selection();
+    void InsertionPoint();
+
+    // Selection() test helper: verify that selection is as described by the
+    // function parameters
+    void AssertSelection(int from, int to, const char *sel);
 
     wxTextCtrl *m_text;
     wxFrame *m_frame;
@@ -79,16 +87,16 @@ void TextCtrlTestCase::SetValue()
     CPPUNIT_ASSERT( m_text->IsEmpty() );
 
     m_text->SetValue("foo");
-    WX_ASSERT_STR_EQUAL( "foo", m_text->GetValue() );
+    CPPUNIT_ASSERT_EQUAL( "foo", m_text->GetValue() );
 
     m_text->SetValue("");
     CPPUNIT_ASSERT( m_text->IsEmpty() );
 
     m_text->SetValue("hi");
-    WX_ASSERT_STR_EQUAL( "hi", m_text->GetValue() );
+    CPPUNIT_ASSERT_EQUAL( "hi", m_text->GetValue() );
 
     m_text->SetValue("bye");
-    WX_ASSERT_STR_EQUAL( "bye", m_text->GetValue() );
+    CPPUNIT_ASSERT_EQUAL( "bye", m_text->GetValue() );
 }
 
 void TextCtrlTestCase::TextChangeEvents()
@@ -146,3 +154,60 @@ void TextCtrlTestCase::TextChangeEvents()
     CPPUNIT_ASSERT_EQUAL( 1, handler.GetEvents() );
 }
 
+void TextCtrlTestCase::AssertSelection(int from, int to, const char *sel)
+{
+    CPPUNIT_ASSERT( m_text->HasSelection() );
+
+    long fromReal,
+         toReal;
+    m_text->GetSelection(&fromReal, &toReal);
+    CPPUNIT_ASSERT_EQUAL( from, fromReal );
+    CPPUNIT_ASSERT_EQUAL( to, toReal );
+    CPPUNIT_ASSERT_EQUAL( sel, m_text->GetStringSelection() );
+
+    CPPUNIT_ASSERT_EQUAL( from, m_text->GetInsertionPoint() );
+}
+
+void TextCtrlTestCase::Selection()
+{
+    m_text->SetValue("0123456789");
+
+    m_text->SetSelection(2, 4);
+    AssertSelection(2, 4, "23"); // not "234"!
+
+    m_text->SetSelection(3, -1);
+    AssertSelection(3, 10, "3456789");
+
+    m_text->SelectAll();
+    AssertSelection(0, 10, "0123456789");
+
+    m_text->SetSelection(0, 0);
+    CPPUNIT_ASSERT( !m_text->HasSelection() );
+}
+
+void TextCtrlTestCase::InsertionPoint()
+{
+    CPPUNIT_ASSERT_EQUAL( 0, m_text->GetLastPosition() );
+    CPPUNIT_ASSERT_EQUAL( 0, m_text->GetInsertionPoint() );
+
+    m_text->SetValue("0"); // should put the insertion point in front
+    CPPUNIT_ASSERT_EQUAL( 1, m_text->GetLastPosition() );
+    CPPUNIT_ASSERT_EQUAL( 0, m_text->GetInsertionPoint() );
+
+    m_text->AppendText("12"); // should update the insertion point position
+    CPPUNIT_ASSERT_EQUAL( 3, m_text->GetLastPosition() );
+    CPPUNIT_ASSERT_EQUAL( 3, m_text->GetInsertionPoint() );
+
+    m_text->SetInsertionPoint(1);
+    CPPUNIT_ASSERT_EQUAL( 3, m_text->GetLastPosition() );
+    CPPUNIT_ASSERT_EQUAL( 1, m_text->GetInsertionPoint() );
+
+    m_text->SetInsertionPointEnd();
+    CPPUNIT_ASSERT_EQUAL( 3, m_text->GetInsertionPoint() );
+
+    m_text->SetInsertionPoint(0);
+    m_text->WriteText("-"); // should move it after the written text
+    CPPUNIT_ASSERT_EQUAL( 4, m_text->GetLastPosition() );
+    CPPUNIT_ASSERT_EQUAL( 1, m_text->GetInsertionPoint() );
+}
+