Example #1
0
 def test_stripped(self):
     """ Colr.stripped() should return strip_codes(Colr()). """
     data = 'This is a test.'
     c = Colr(data, fore='red', style='bright')
     datalen = len(data)
     stripped = c.stripped()
     strippedlen = len(stripped)
     self.assertEqual(
         datalen,
         strippedlen,
         test_msg(
             'Stripped Colr has different length.',
             datalen,
             strippedlen,
         ),
     )
     self.assertEqual(
         data,
         stripped,
         test_msg(
             'Stripped Colr has different content.',
             data,
             stripped,
         ),
     )
Example #2
0
 def test_stripped(self):
     """ Colr.stripped() should return strip_codes(Colr()). """
     data = 'This is a test.'
     c = Colr(data, fore='red', style='bright')
     datalen = len(data)
     stripped = c.stripped()
     strippedlen = len(stripped)
     self.assertEqual(
         datalen,
         strippedlen,
         call_msg(
             'Stripped Colr has different length.',
             datalen,
             strippedlen,
         ),
     )
     self.assertEqual(
         data,
         stripped,
         call_msg(
             'Stripped Colr has different content.',
             data,
             stripped,
         ),
     )
Example #3
0
    def test_getitem_after_chained(self):
        """ Colr.__getitem__ on a chained Colr should keep escape codes. """
        # Indexing after chaining.
        clr = Colr('test', 'red').blue('this').rgb(25, 25, 25, 'thing')
        stripped = clr.stripped()
        self.assertGreater(
            len(stripped),
            6,
            msg='Stripped Colr was missing characters: {!r}'.format(stripped),
        )
        clr_s = clr[5]
        expected_clr = Colr(closing_code, fore='red').blue('h')

        self.assertCallEqual(
            clr_s,
            expected_clr,
            func=Colr.__getitem__,
            args=(clr, 5),
            msg='Failed to keep color codes for chained __getitem__.',
        )
Example #4
0
    def test_getitem_slice(self):
        """ Colr.__getitem__ should handle slices/ranges. """
        clr = Colr('test', 'red').blue('this').rgb(0, 0, 0, 'thing')
        stripped = clr.stripped()
        self.assertGreater(
            len(stripped),
            6,
            msg='Stripped Colr was missing characters: {!r}'.format(stripped),
        )
        clr_s = clr[:]
        expected_clr = Colr(clr_s)

        self.assertCallEqual(
            clr_s,
            expected_clr,
            func=Colr.__getitem__,
            args=(clr, slice(None, None)),
            msg='Failed to keep color codes for __getitem__ range.',
        )

        clr_s = clr[4:8]
        expected_clr = Colr().red(closing_code).blue('this')

        self.assertCallEqual(
            clr_s,
            expected_clr,
            func=Colr.__getitem__,
            args=(clr, slice(4, 8)),
            msg='Failed to keep color codes for __getitem__ range.',
        )

        clr_s = clr[8:]
        expected_clr = (Colr(closing_code, fore='red').blue(closing_code).rgb(
            0, 0, 0, 'thing'))

        self.assertCallEqual(
            clr_s,
            expected_clr,
            func=Colr.__getitem__,
            args=(clr, slice(8)),
            msg='Failed to keep color codes for __getitem__ range.',
        )

        # These are actual examples from the docs.
        clr = Colr('test', 'blue')
        clr_s = clr[1:3]
        self.assertCallEqual(
            clr_s,
            Colr('es', 'blue'),
            func=Colr.__getitem__,
            args=(clr, slice(1, 3)),
            msg='failed to slice correctly.',
        )

        # Original Colr to slice up.
        clr = Colr('test', 'red').blue('this').rgb(25, 25, 25, 'thing')
        examples = (
            # Integer index with clr[5].
            (
                5,
                Colr(closing_code, fore='red').blue('h'),
            ),
            # All (copy) with clr[:], except closing_codes aren't needed.
            (
                slice(None, None),
                clr,
            ),
            # Starting index with clr[8:]
            (
                slice(8, None),
                (Colr(closing_code,
                      fore='red').blue(closing_code).rgb(25, 25, 25, 'thing')),
            ),
        )

        for sliceobj, expected in examples:
            slicerepr = str(sliceobj)
            if isinstance(sliceobj, slice):
                slicerepr = '{}:{}:{}'.format(
                    *sliceobj.indices(len(clr.stripped())))
            self.assertCallEqual(
                clr[sliceobj],
                expected,
                func=Colr.__getitem__,
                args=(clr, sliceobj),
                msg='Failed to slice correctly with Colr()[{}] ({!r})'.format(
                    slicerepr,
                    sliceobj,
                ),
            )