67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
|
|
"""
|
|
Tests for the insults windowing module, L{twisted.conch.insults.window}.
|
|
"""
|
|
|
|
from twisted.trial.unittest import TestCase
|
|
|
|
from twisted.conch.insults.window import TopWindow, ScrolledArea, TextOutput
|
|
|
|
|
|
class TopWindowTests(TestCase):
|
|
"""
|
|
Tests for L{TopWindow}, the root window container class.
|
|
"""
|
|
|
|
def test_paintScheduling(self):
|
|
"""
|
|
Verify that L{TopWindow.repaint} schedules an actual paint to occur
|
|
using the scheduling object passed to its initializer.
|
|
"""
|
|
paints = []
|
|
scheduled = []
|
|
root = TopWindow(lambda: paints.append(None), scheduled.append)
|
|
|
|
# Nothing should have happened yet.
|
|
self.assertEqual(paints, [])
|
|
self.assertEqual(scheduled, [])
|
|
|
|
# Cause a paint to be scheduled.
|
|
root.repaint()
|
|
self.assertEqual(paints, [])
|
|
self.assertEqual(len(scheduled), 1)
|
|
|
|
# Do another one to verify nothing else happens as long as the previous
|
|
# one is still pending.
|
|
root.repaint()
|
|
self.assertEqual(paints, [])
|
|
self.assertEqual(len(scheduled), 1)
|
|
|
|
# Run the actual paint call.
|
|
scheduled.pop()()
|
|
self.assertEqual(len(paints), 1)
|
|
self.assertEqual(scheduled, [])
|
|
|
|
# Do one more to verify that now that the previous one is finished
|
|
# future paints will succeed.
|
|
root.repaint()
|
|
self.assertEqual(len(paints), 1)
|
|
self.assertEqual(len(scheduled), 1)
|
|
|
|
|
|
|
|
class ScrolledAreaTests(TestCase):
|
|
"""
|
|
Tests for L{ScrolledArea}, a widget which creates a viewport containing
|
|
another widget and can reposition that viewport using scrollbars.
|
|
"""
|
|
def test_parent(self):
|
|
"""
|
|
The parent of the widget passed to L{ScrolledArea} is set to a new
|
|
L{Viewport} created by the L{ScrolledArea} which itself has the
|
|
L{ScrolledArea} instance as its parent.
|
|
"""
|
|
widget = TextOutput()
|
|
scrolled = ScrolledArea(widget)
|
|
self.assertIs(widget.parent, scrolled._viewport)
|
|
self.assertIs(scrolled._viewport.parent, scrolled)
|