1# -*- coding: utf-8 -*- 2from __future__ import division 3from __future__ import absolute_import 4from __future__ import print_function 5from __future__ import unicode_literals 6from datetime import datetime 7import time 8import unittest 9from asciimatics.strings import ColouredText 10from asciimatics.parsers import AsciimaticsParser 11 12 13class TestUtilities(unittest.TestCase): 14 15 def test_coloured_text(self): 16 """ 17 Check ColouredText works as expected. 18 """ 19 # No specified start colour 20 ct = ColouredText("Some ${1}text", AsciimaticsParser()) 21 self.assertEquals(str(ct), "Some text") 22 self.assertEquals(ct.raw_text, "Some ${1}text") 23 self.assertEquals(len(ct), 9) 24 self.assertEquals(ct.first_colour, None) 25 self.assertEquals(ct.last_colour, (1, 0, None)) 26 self.assertEquals(ct.colour_map[0], (None, None, None)) 27 28 # Specified start colour 29 ct = ColouredText("Some ${1}text", AsciimaticsParser(), colour=(2, 1, 0)) 30 self.assertEquals(str(ct), "Some text") 31 self.assertEquals(ct.raw_text, "Some ${1}text") 32 self.assertEquals(len(ct), 9) 33 self.assertEquals(ct.first_colour, (2, 1, 0)) 34 self.assertEquals(ct.last_colour, (1, 0, None)) 35 self.assertEquals(ct.colour_map[0], (2, 1, 0)) 36 37 # Slicing 38 self.assertEquals(ct[0], ColouredText("S", AsciimaticsParser())) 39 self.assertEquals(ct[1:-1], ColouredText("ome ${1}tex", AsciimaticsParser())) 40 self.assertNotEquals(ct[1:-1], ColouredText("ome tex", AsciimaticsParser())) 41 self.assertEquals(ct[100:101], ColouredText("", AsciimaticsParser())) 42 43 # Adding 44 self.assertEquals( 45 ColouredText("Some ", AsciimaticsParser()) + 46 ColouredText("${3}Text", AsciimaticsParser()), 47 ColouredText("Some ${3}Text", AsciimaticsParser())) 48 49 # Joining 50 self.assertEquals(ColouredText(" ", AsciimaticsParser()).join([ 51 ColouredText("Hello", AsciimaticsParser()), 52 ColouredText("${3}World", AsciimaticsParser())]), 53 ColouredText("Hello ${3}World", AsciimaticsParser())) 54 55 # Bad data comparisons 56 self.assertNotEquals(ct, 1) 57 self.assertFalse(ct == "Some text") 58 59 # Startswith 60 self.assertTrue(ct.startswith("Some")) 61