Issue #21477: Idle htest: merge and modify run and runall; add many tests.
Patch by Saimadhav Heblikar
diff --git a/Lib/idlelib/CallTipWindow.py b/Lib/idlelib/CallTipWindow.py
index 8e29dab..aacfa00 100644
--- a/Lib/idlelib/CallTipWindow.py
+++ b/Lib/idlelib/CallTipWindow.py
@@ -133,37 +133,36 @@
         return bool(self.tipwindow)
 
 
+def _calltip_window(parent):
+    root = Tk()
+    root.title("Test calltips")
+    width, height, x, y = list(map(int, re.split('[x+]', parent.geometry())))
+    root.geometry("+%d+%d"%(x, y + 150))
 
-###############################
-#
-# Test Code
-#
-class container: # Conceptually an editor_window
-    def __init__(self):
-        root = Tk()
-        text = self.text = Text(root)
-        text.pack(side=LEFT, fill=BOTH, expand=1)
-        text.insert("insert", "string.split")
-        root.update()
-        self.calltip = CallTip(text)
+    class MyEditWin: # comparenceptually an editor_window
+        def __init__(self):
+            text = self.text = Text(root)
+            text.pack(side=LEFT, fill=BOTH, expand=1)
+            text.insert("insert", "string.split")
+            root.update()
+            self.calltip = CallTip(text)
 
-        text.event_add("<<calltip-show>>", "(")
-        text.event_add("<<calltip-hide>>", ")")
-        text.bind("<<calltip-show>>", self.calltip_show)
-        text.bind("<<calltip-hide>>", self.calltip_hide)
+            text.event_add("<<calltip-show>>", "(")
+            text.event_add("<<calltip-hide>>", ")")
+            text.bind("<<calltip-show>>", self.calltip_show)
+            text.bind("<<calltip-hide>>", self.calltip_hide)
 
-        text.focus_set()
-        root.mainloop()
+            text.focus_set()
+            root.mainloop()
 
-    def calltip_show(self, event):
-        self.calltip.showtip("Hello world")
+        def calltip_show(self, event):
+            self.calltip.showtip("Hello world", "insert", "end")
 
-    def calltip_hide(self, event):
-        self.calltip.hidetip()
+        def calltip_hide(self, event):
+            self.calltip.hidetip()
 
-def main():
-    # Test code
-    c=container()
+    editwin = MyEditWin()
 
 if __name__=='__main__':
-    main()
+    from idlelib.idle_test.htest import run
+    run(_calltip_window)