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