+        self.tc.Replace(5, 9, "IS A")
+        #self.tc.Remove(5, 9)
+
+    def OnTestWriteText(self, evt):
+        self.tc.WriteText("TEXT")
+
+    def OnTestGetSelection(self, evt):
+        start, end = self.tc.GetSelection()
+        text = self.tc.GetValue()
+        if wx.Platform == "__WXMSW__":  # This is why GetStringSelection was added
+            text = text.replace('\n', '\r\n')
+
+        self.log.write("multi-line GetSelection(): (%d, %d)\n"
+                       "\tGetStringSelection(): %s\n"
+                       "\tSelectedText: %s\n" %
+                       (start, end,
+                        self.tc.GetStringSelection(),
+                        repr(text[start:end])))
+
+        start, end = self.tc1.GetSelection()
+        text = self.tc1.GetValue()
+
+        if wx.Platform == "__WXMSW__":  # This is why GetStringSelection was added
+            text = text.replace('\n', '\r\n')
+
+        self.log.write("single-line GetSelection(): (%d, %d)\n"
+                       "\tGetStringSelection(): %s\n"
+                       "\tSelectedText: %s\n" %
+                       (start, end,
+                        self.tc1.GetStringSelection(),
+                        repr(text[start:end])))
+
+
+    def OnT5LeftDown(self, evt):
+        evt.Skip()
+        wx.CallAfter(self.LogT5Position, evt)
+
+    def LogT5Position(self, evt):
+        text = self.t5.GetValue()
+        ip = self.t5.GetInsertionPoint()
+        lp = self.t5.GetLastPosition()
+        self.log.write("LogT5Position:\n"
+                       "\tGetInsertionPoint:\t%d\n"
+                       "\ttext[insertionpoint]:\t%s\n"
+                       "\tGetLastPosition:\t%d\n"
+                       "\tlen(text):\t\t%d\n"
+                       % (ip, text[ip], lp, len(text)))