| Index: third_party/twisted_8_1/twisted/conch/test/test_helper.py
|
| diff --git a/third_party/twisted_8_1/twisted/conch/test/test_helper.py b/third_party/twisted_8_1/twisted/conch/test/test_helper.py
|
| deleted file mode 100644
|
| index 95db6ab2c2d5a4b064ff813578d86004f6ba3f08..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/conch/test/test_helper.py
|
| +++ /dev/null
|
| @@ -1,560 +0,0 @@
|
| -# -*- test-case-name: twisted.conch.test.test_helper -*-
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -from twisted.conch.insults import helper
|
| -from twisted.conch.insults.insults import G0, G1, G2, G3
|
| -from twisted.conch.insults.insults import modes, privateModes
|
| -from twisted.conch.insults.insults import NORMAL, BOLD, UNDERLINE, BLINK, REVERSE_VIDEO
|
| -
|
| -from twisted.trial import unittest
|
| -
|
| -WIDTH = 80
|
| -HEIGHT = 24
|
| -
|
| -class BufferTestCase(unittest.TestCase):
|
| - def setUp(self):
|
| - self.term = helper.TerminalBuffer()
|
| - self.term.connectionMade()
|
| -
|
| - def testInitialState(self):
|
| - self.assertEquals(self.term.width, WIDTH)
|
| - self.assertEquals(self.term.height, HEIGHT)
|
| - self.assertEquals(str(self.term),
|
| - '\n' * (HEIGHT - 1))
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 0))
|
| -
|
| -
|
| - def test_initialPrivateModes(self):
|
| - """
|
| - Verify that only DEC Auto Wrap Mode (DECAWM) and DEC Text Cursor Enable
|
| - Mode (DECTCEM) are initially in the Set Mode (SM) state.
|
| - """
|
| - self.assertEqual(
|
| - {privateModes.AUTO_WRAP: True,
|
| - privateModes.CURSOR_MODE: True},
|
| - self.term.privateModes)
|
| -
|
| -
|
| - def test_carriageReturn(self):
|
| - """
|
| - C{"\r"} moves the cursor to the first column in the current row.
|
| - """
|
| - self.term.cursorForward(5)
|
| - self.term.cursorDown(3)
|
| - self.assertEqual(self.term.reportCursorPosition(), (5, 3))
|
| - self.term.insertAtCursor("\r")
|
| - self.assertEqual(self.term.reportCursorPosition(), (0, 3))
|
| -
|
| -
|
| - def test_linefeed(self):
|
| - """
|
| - C{"\n"} moves the cursor to the next row without changing the column.
|
| - """
|
| - self.term.cursorForward(5)
|
| - self.assertEqual(self.term.reportCursorPosition(), (5, 0))
|
| - self.term.insertAtCursor("\n")
|
| - self.assertEqual(self.term.reportCursorPosition(), (5, 1))
|
| -
|
| -
|
| - def test_newline(self):
|
| - """
|
| - C{write} transforms C{"\n"} into C{"\r\n"}.
|
| - """
|
| - self.term.cursorForward(5)
|
| - self.term.cursorDown(3)
|
| - self.assertEqual(self.term.reportCursorPosition(), (5, 3))
|
| - self.term.write("\n")
|
| - self.assertEqual(self.term.reportCursorPosition(), (0, 4))
|
| -
|
| -
|
| - def test_setPrivateModes(self):
|
| - """
|
| - Verify that L{helper.TerminalBuffer.setPrivateModes} changes the Set
|
| - Mode (SM) state to "set" for the private modes it is passed.
|
| - """
|
| - expected = self.term.privateModes.copy()
|
| - self.term.setPrivateModes([privateModes.SCROLL, privateModes.SCREEN])
|
| - expected[privateModes.SCROLL] = True
|
| - expected[privateModes.SCREEN] = True
|
| - self.assertEqual(expected, self.term.privateModes)
|
| -
|
| -
|
| - def test_resetPrivateModes(self):
|
| - """
|
| - Verify that L{helper.TerminalBuffer.resetPrivateModes} changes the Set
|
| - Mode (SM) state to "reset" for the private modes it is passed.
|
| - """
|
| - expected = self.term.privateModes.copy()
|
| - self.term.resetPrivateModes([privateModes.AUTO_WRAP, privateModes.CURSOR_MODE])
|
| - del expected[privateModes.AUTO_WRAP]
|
| - del expected[privateModes.CURSOR_MODE]
|
| - self.assertEqual(expected, self.term.privateModes)
|
| -
|
| -
|
| - def testCursorDown(self):
|
| - self.term.cursorDown(3)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 3))
|
| - self.term.cursorDown()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 4))
|
| - self.term.cursorDown(HEIGHT)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, HEIGHT - 1))
|
| -
|
| - def testCursorUp(self):
|
| - self.term.cursorUp(5)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 0))
|
| -
|
| - self.term.cursorDown(20)
|
| - self.term.cursorUp(1)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 19))
|
| -
|
| - self.term.cursorUp(19)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 0))
|
| -
|
| - def testCursorForward(self):
|
| - self.term.cursorForward(2)
|
| - self.assertEquals(self.term.reportCursorPosition(), (2, 0))
|
| - self.term.cursorForward(2)
|
| - self.assertEquals(self.term.reportCursorPosition(), (4, 0))
|
| - self.term.cursorForward(WIDTH)
|
| - self.assertEquals(self.term.reportCursorPosition(), (WIDTH, 0))
|
| -
|
| - def testCursorBackward(self):
|
| - self.term.cursorForward(10)
|
| - self.term.cursorBackward(2)
|
| - self.assertEquals(self.term.reportCursorPosition(), (8, 0))
|
| - self.term.cursorBackward(7)
|
| - self.assertEquals(self.term.reportCursorPosition(), (1, 0))
|
| - self.term.cursorBackward(1)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 0))
|
| - self.term.cursorBackward(1)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 0))
|
| -
|
| - def testCursorPositioning(self):
|
| - self.term.cursorPosition(3, 9)
|
| - self.assertEquals(self.term.reportCursorPosition(), (3, 9))
|
| -
|
| - def testSimpleWriting(self):
|
| - s = "Hello, world."
|
| - self.term.write(s)
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s + '\n' +
|
| - '\n' * (HEIGHT - 2))
|
| -
|
| - def testOvertype(self):
|
| - s = "hello, world."
|
| - self.term.write(s)
|
| - self.term.cursorBackward(len(s))
|
| - self.term.resetModes([modes.IRM])
|
| - self.term.write("H")
|
| - self.assertEquals(
|
| - str(self.term),
|
| - ("H" + s[1:]) + '\n' +
|
| - '\n' * (HEIGHT - 2))
|
| -
|
| - def testInsert(self):
|
| - s = "ello, world."
|
| - self.term.write(s)
|
| - self.term.cursorBackward(len(s))
|
| - self.term.setModes([modes.IRM])
|
| - self.term.write("H")
|
| - self.assertEquals(
|
| - str(self.term),
|
| - ("H" + s) + '\n' +
|
| - '\n' * (HEIGHT - 2))
|
| -
|
| - def testWritingInTheMiddle(self):
|
| - s = "Hello, world."
|
| - self.term.cursorDown(5)
|
| - self.term.cursorForward(5)
|
| - self.term.write(s)
|
| - self.assertEquals(
|
| - str(self.term),
|
| - '\n' * 5 +
|
| - (self.term.fill * 5) + s + '\n' +
|
| - '\n' * (HEIGHT - 7))
|
| -
|
| - def testWritingWrappedAtEndOfLine(self):
|
| - s = "Hello, world."
|
| - self.term.cursorForward(WIDTH - 5)
|
| - self.term.write(s)
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s[:5].rjust(WIDTH) + '\n' +
|
| - s[5:] + '\n' +
|
| - '\n' * (HEIGHT - 3))
|
| -
|
| - def testIndex(self):
|
| - self.term.index()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 1))
|
| - self.term.cursorDown(HEIGHT)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, HEIGHT - 1))
|
| - self.term.index()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, HEIGHT - 1))
|
| -
|
| - def testReverseIndex(self):
|
| - self.term.reverseIndex()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 0))
|
| - self.term.cursorDown(2)
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 2))
|
| - self.term.reverseIndex()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 1))
|
| -
|
| - def test_nextLine(self):
|
| - """
|
| - C{nextLine} positions the cursor at the beginning of the row below the
|
| - current row.
|
| - """
|
| - self.term.nextLine()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 1))
|
| - self.term.cursorForward(5)
|
| - self.assertEquals(self.term.reportCursorPosition(), (5, 1))
|
| - self.term.nextLine()
|
| - self.assertEquals(self.term.reportCursorPosition(), (0, 2))
|
| -
|
| - def testSaveCursor(self):
|
| - self.term.cursorDown(5)
|
| - self.term.cursorForward(7)
|
| - self.assertEquals(self.term.reportCursorPosition(), (7, 5))
|
| - self.term.saveCursor()
|
| - self.term.cursorDown(7)
|
| - self.term.cursorBackward(3)
|
| - self.assertEquals(self.term.reportCursorPosition(), (4, 12))
|
| - self.term.restoreCursor()
|
| - self.assertEquals(self.term.reportCursorPosition(), (7, 5))
|
| -
|
| - def testSingleShifts(self):
|
| - self.term.singleShift2()
|
| - self.term.write('Hi')
|
| -
|
| - ch = self.term.getCharacter(0, 0)
|
| - self.assertEquals(ch[0], 'H')
|
| - self.assertEquals(ch[1].charset, G2)
|
| -
|
| - ch = self.term.getCharacter(1, 0)
|
| - self.assertEquals(ch[0], 'i')
|
| - self.assertEquals(ch[1].charset, G0)
|
| -
|
| - self.term.singleShift3()
|
| - self.term.write('!!')
|
| -
|
| - ch = self.term.getCharacter(2, 0)
|
| - self.assertEquals(ch[0], '!')
|
| - self.assertEquals(ch[1].charset, G3)
|
| -
|
| - ch = self.term.getCharacter(3, 0)
|
| - self.assertEquals(ch[0], '!')
|
| - self.assertEquals(ch[1].charset, G0)
|
| -
|
| - def testShifting(self):
|
| - s1 = "Hello"
|
| - s2 = "World"
|
| - s3 = "Bye!"
|
| - self.term.write("Hello\n")
|
| - self.term.shiftOut()
|
| - self.term.write("World\n")
|
| - self.term.shiftIn()
|
| - self.term.write("Bye!\n")
|
| -
|
| - g = G0
|
| - h = 0
|
| - for s in (s1, s2, s3):
|
| - for i in range(len(s)):
|
| - ch = self.term.getCharacter(i, h)
|
| - self.assertEquals(ch[0], s[i])
|
| - self.assertEquals(ch[1].charset, g)
|
| - g = g == G0 and G1 or G0
|
| - h += 1
|
| -
|
| - def testGraphicRendition(self):
|
| - self.term.selectGraphicRendition(BOLD, UNDERLINE, BLINK, REVERSE_VIDEO)
|
| - self.term.write('W')
|
| - self.term.selectGraphicRendition(NORMAL)
|
| - self.term.write('X')
|
| - self.term.selectGraphicRendition(BLINK)
|
| - self.term.write('Y')
|
| - self.term.selectGraphicRendition(BOLD)
|
| - self.term.write('Z')
|
| -
|
| - ch = self.term.getCharacter(0, 0)
|
| - self.assertEquals(ch[0], 'W')
|
| - self.failUnless(ch[1].bold)
|
| - self.failUnless(ch[1].underline)
|
| - self.failUnless(ch[1].blink)
|
| - self.failUnless(ch[1].reverseVideo)
|
| -
|
| - ch = self.term.getCharacter(1, 0)
|
| - self.assertEquals(ch[0], 'X')
|
| - self.failIf(ch[1].bold)
|
| - self.failIf(ch[1].underline)
|
| - self.failIf(ch[1].blink)
|
| - self.failIf(ch[1].reverseVideo)
|
| -
|
| - ch = self.term.getCharacter(2, 0)
|
| - self.assertEquals(ch[0], 'Y')
|
| - self.failUnless(ch[1].blink)
|
| - self.failIf(ch[1].bold)
|
| - self.failIf(ch[1].underline)
|
| - self.failIf(ch[1].reverseVideo)
|
| -
|
| - ch = self.term.getCharacter(3, 0)
|
| - self.assertEquals(ch[0], 'Z')
|
| - self.failUnless(ch[1].blink)
|
| - self.failUnless(ch[1].bold)
|
| - self.failIf(ch[1].underline)
|
| - self.failIf(ch[1].reverseVideo)
|
| -
|
| - def testColorAttributes(self):
|
| - s1 = "Merry xmas"
|
| - s2 = "Just kidding"
|
| - self.term.selectGraphicRendition(helper.FOREGROUND + helper.RED,
|
| - helper.BACKGROUND + helper.GREEN)
|
| - self.term.write(s1 + "\n")
|
| - self.term.selectGraphicRendition(NORMAL)
|
| - self.term.write(s2 + "\n")
|
| -
|
| - for i in range(len(s1)):
|
| - ch = self.term.getCharacter(i, 0)
|
| - self.assertEquals(ch[0], s1[i])
|
| - self.assertEquals(ch[1].charset, G0)
|
| - self.assertEquals(ch[1].bold, False)
|
| - self.assertEquals(ch[1].underline, False)
|
| - self.assertEquals(ch[1].blink, False)
|
| - self.assertEquals(ch[1].reverseVideo, False)
|
| - self.assertEquals(ch[1].foreground, helper.RED)
|
| - self.assertEquals(ch[1].background, helper.GREEN)
|
| -
|
| - for i in range(len(s2)):
|
| - ch = self.term.getCharacter(i, 1)
|
| - self.assertEquals(ch[0], s2[i])
|
| - self.assertEquals(ch[1].charset, G0)
|
| - self.assertEquals(ch[1].bold, False)
|
| - self.assertEquals(ch[1].underline, False)
|
| - self.assertEquals(ch[1].blink, False)
|
| - self.assertEquals(ch[1].reverseVideo, False)
|
| - self.assertEquals(ch[1].foreground, helper.WHITE)
|
| - self.assertEquals(ch[1].background, helper.BLACK)
|
| -
|
| - def testEraseLine(self):
|
| - s1 = 'line 1'
|
| - s2 = 'line 2'
|
| - s3 = 'line 3'
|
| - self.term.write('\n'.join((s1, s2, s3)) + '\n')
|
| - self.term.cursorPosition(1, 1)
|
| - self.term.eraseLine()
|
| -
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s1 + '\n' +
|
| - '\n' +
|
| - s3 + '\n' +
|
| - '\n' * (HEIGHT - 4))
|
| -
|
| - def testEraseToLineEnd(self):
|
| - s = 'Hello, world.'
|
| - self.term.write(s)
|
| - self.term.cursorBackward(5)
|
| - self.term.eraseToLineEnd()
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s[:-5] + '\n' +
|
| - '\n' * (HEIGHT - 2))
|
| -
|
| - def testEraseToLineBeginning(self):
|
| - s = 'Hello, world.'
|
| - self.term.write(s)
|
| - self.term.cursorBackward(5)
|
| - self.term.eraseToLineBeginning()
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s[-4:].rjust(len(s)) + '\n' +
|
| - '\n' * (HEIGHT - 2))
|
| -
|
| - def testEraseDisplay(self):
|
| - self.term.write('Hello world\n')
|
| - self.term.write('Goodbye world\n')
|
| - self.term.eraseDisplay()
|
| -
|
| - self.assertEquals(
|
| - str(self.term),
|
| - '\n' * (HEIGHT - 1))
|
| -
|
| - def testEraseToDisplayEnd(self):
|
| - s1 = "Hello world"
|
| - s2 = "Goodbye world"
|
| - self.term.write('\n'.join((s1, s2, '')))
|
| - self.term.cursorPosition(5, 1)
|
| - self.term.eraseToDisplayEnd()
|
| -
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s1 + '\n' +
|
| - s2[:5] + '\n' +
|
| - '\n' * (HEIGHT - 3))
|
| -
|
| - def testEraseToDisplayBeginning(self):
|
| - s1 = "Hello world"
|
| - s2 = "Goodbye world"
|
| - self.term.write('\n'.join((s1, s2)))
|
| - self.term.cursorPosition(5, 1)
|
| - self.term.eraseToDisplayBeginning()
|
| -
|
| - self.assertEquals(
|
| - str(self.term),
|
| - '\n' +
|
| - s2[6:].rjust(len(s2)) + '\n' +
|
| - '\n' * (HEIGHT - 3))
|
| -
|
| - def testLineInsertion(self):
|
| - s1 = "Hello world"
|
| - s2 = "Goodbye world"
|
| - self.term.write('\n'.join((s1, s2)))
|
| - self.term.cursorPosition(7, 1)
|
| - self.term.insertLine()
|
| -
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s1 + '\n' +
|
| - '\n' +
|
| - s2 + '\n' +
|
| - '\n' * (HEIGHT - 4))
|
| -
|
| - def testLineDeletion(self):
|
| - s1 = "Hello world"
|
| - s2 = "Middle words"
|
| - s3 = "Goodbye world"
|
| - self.term.write('\n'.join((s1, s2, s3)))
|
| - self.term.cursorPosition(9, 1)
|
| - self.term.deleteLine()
|
| -
|
| - self.assertEquals(
|
| - str(self.term),
|
| - s1 + '\n' +
|
| - s3 + '\n' +
|
| - '\n' * (HEIGHT - 3))
|
| -
|
| -class FakeDelayedCall:
|
| - called = False
|
| - cancelled = False
|
| - def __init__(self, fs, timeout, f, a, kw):
|
| - self.fs = fs
|
| - self.timeout = timeout
|
| - self.f = f
|
| - self.a = a
|
| - self.kw = kw
|
| -
|
| - def active(self):
|
| - return not (self.cancelled or self.called)
|
| -
|
| - def cancel(self):
|
| - self.cancelled = True
|
| -# self.fs.calls.remove(self)
|
| -
|
| - def call(self):
|
| - self.called = True
|
| - self.f(*self.a, **self.kw)
|
| -
|
| -class FakeScheduler:
|
| - def __init__(self):
|
| - self.calls = []
|
| -
|
| - def callLater(self, timeout, f, *a, **kw):
|
| - self.calls.append(FakeDelayedCall(self, timeout, f, a, kw))
|
| - return self.calls[-1]
|
| -
|
| -class ExpectTestCase(unittest.TestCase):
|
| - def setUp(self):
|
| - self.term = helper.ExpectableBuffer()
|
| - self.term.connectionMade()
|
| - self.fs = FakeScheduler()
|
| -
|
| - def testSimpleString(self):
|
| - result = []
|
| - d = self.term.expect("hello world", timeout=1, scheduler=self.fs)
|
| - d.addCallback(result.append)
|
| -
|
| - self.term.write("greeting puny earthlings\n")
|
| - self.failIf(result)
|
| - self.term.write("hello world\n")
|
| - self.failUnless(result)
|
| - self.assertEquals(result[0].group(), "hello world")
|
| - self.assertEquals(len(self.fs.calls), 1)
|
| - self.failIf(self.fs.calls[0].active())
|
| -
|
| - def testBrokenUpString(self):
|
| - result = []
|
| - d = self.term.expect("hello world")
|
| - d.addCallback(result.append)
|
| -
|
| - self.failIf(result)
|
| - self.term.write("hello ")
|
| - self.failIf(result)
|
| - self.term.write("worl")
|
| - self.failIf(result)
|
| - self.term.write("d")
|
| - self.failUnless(result)
|
| - self.assertEquals(result[0].group(), "hello world")
|
| -
|
| -
|
| - def testMultiple(self):
|
| - result = []
|
| - d1 = self.term.expect("hello ")
|
| - d1.addCallback(result.append)
|
| - d2 = self.term.expect("world")
|
| - d2.addCallback(result.append)
|
| -
|
| - self.failIf(result)
|
| - self.term.write("hello")
|
| - self.failIf(result)
|
| - self.term.write(" ")
|
| - self.assertEquals(len(result), 1)
|
| - self.term.write("world")
|
| - self.assertEquals(len(result), 2)
|
| - self.assertEquals(result[0].group(), "hello ")
|
| - self.assertEquals(result[1].group(), "world")
|
| -
|
| - def testSynchronous(self):
|
| - self.term.write("hello world")
|
| -
|
| - result = []
|
| - d = self.term.expect("hello world")
|
| - d.addCallback(result.append)
|
| - self.failUnless(result)
|
| - self.assertEquals(result[0].group(), "hello world")
|
| -
|
| - def testMultipleSynchronous(self):
|
| - self.term.write("goodbye world")
|
| -
|
| - result = []
|
| - d1 = self.term.expect("bye")
|
| - d1.addCallback(result.append)
|
| - d2 = self.term.expect("world")
|
| - d2.addCallback(result.append)
|
| -
|
| - self.assertEquals(len(result), 2)
|
| - self.assertEquals(result[0].group(), "bye")
|
| - self.assertEquals(result[1].group(), "world")
|
| -
|
| - def _cbTestTimeoutFailure(self, res):
|
| - self.assert_(hasattr(res, 'type'))
|
| - self.assertEqual(res.type, helper.ExpectationTimeout)
|
| -
|
| - def testTimeoutFailure(self):
|
| - d = self.term.expect("hello world", timeout=1, scheduler=self.fs)
|
| - d.addBoth(self._cbTestTimeoutFailure)
|
| - self.fs.calls[0].call()
|
| -
|
| - def testOverlappingTimeout(self):
|
| - self.term.write("not zoomtastic")
|
| -
|
| - result = []
|
| - d1 = self.term.expect("hello world", timeout=1, scheduler=self.fs)
|
| - d1.addBoth(self._cbTestTimeoutFailure)
|
| - d2 = self.term.expect("zoom")
|
| - d2.addCallback(result.append)
|
| -
|
| - self.fs.calls[0].call()
|
| -
|
| - self.assertEquals(len(result), 1)
|
| - self.assertEquals(result[0].group(), "zoom")
|
|
|