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, ), )
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, ), )
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__.', )
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, ), )