def testLineWrap(self):
   terminal.TerminalSize = lambda: (5, 11)
   text = ''
   self.assertEqual(text, terminal.LineWrap(text))
   text = 'one line'
   self.assertEqual(text, terminal.LineWrap(text))
   text = 'two\nlines'
   self.assertEqual(text, terminal.LineWrap(text))
   text = 'one line that is too long'
   text2 = 'one line th\nat is too l\nong'
   self.assertEqual(text2, terminal.LineWrap(text))
   # Counting ansi characters won't matter if there are none.
   self.assertEqual(text2, terminal.LineWrap(text, False))
   text = 'one line \033[5;32;44mthat\033[0m is too long with ansi'
   text2 = 'one line \033[5;32;44mth\nat\033[0m is too l\nong with an\nsi'
   text3 = 'one line \033[\n5;32;44mtha\nt\033[0m is to\no long with\n ansi'
   # Ansi does not factor and the line breaks stay the same.
   self.assertEqual(text2, terminal.LineWrap(text, True))
   # If we count the ansi escape as characters then the line breaks change.
   self.assertEqual(text3, terminal.LineWrap(text, False))
   # False is implicit default.
   self.assertEqual(text3, terminal.LineWrap(text))
   # Couple of edge cases where we split on token boundary.
   text4 = 'ooone line \033[5;32;44mthat\033[0m is too long with ansi'
   text5 = 'ooone line \033[5;32;44m\nthat\033[0m is too\n long with \nansi'
   self.assertEqual(text5, terminal.LineWrap(text4, True))
   text6 = 'e line \033[5;32;44mthat\033[0m is too long with ansi'
   text7 = 'e line \033[5;32;44mthat\033[0m\n is too lon\ng with ansi'
   self.assertEqual(text7, terminal.LineWrap(text6, True))
 def testIssue1(self):
   self.assertEqual(10, len(terminal.StripAnsiText('boembabies' '\033[0m')))
   terminal.TerminalSize = lambda: (10, 10)
   text1 = terminal.LineWrap('\033[32m' + 'boembabies, ' * 10 + 'boembabies' +
                             '\033[0m', omit_sgr=True)
   text2 = ('\033[32m' +
            terminal.LineWrap('boembabies, ' * 10 + 'boembabies') +
            '\033[0m')
   self.assertEqual(text1, text2)