def test_gradient_transformer_with_repeat_truncate_generates_wrapper_receiving_propper_channel( ): from inspect import signature sc, sh, sp, gr = screen_shape_sprite() tr = GradientTransformer(gr, size=10, repeat="truncate", channel="char") assert "char" in signature(tr.char).parameters
def test_gradient_transformer_works_on_vertical_direction(): sc, sh, sp, gr = screen_shape_sprite() tr = GradientTransformer(gr, direction=TM.Directions.DOWN) sp.transformers.append(tr) sh.draw.line((12, 0), (12, 10)) sc.update() yield None assert sc.data[12, 0].foreground == Color((0, 0, 0)) assert sc.data[12, 5].foreground.isclose(Color((.5, .5, .5)), abs_tol=15) assert sc.data[12, 9].foreground == Color((255, 255, 255))
def test_gradient_transformer_works(): sc, sh, sp, gr = screen_shape_sprite() tr = GradientTransformer(gr) sp.transformers.append(tr) sh.draw.line((0, 5), (26, 5)) sc.update() yield None assert sc.data[0, 5].foreground == Color((0, 0, 0)) assert sc.data[12, 5].foreground.isclose(Color((.5, .5, .5)), abs_tol=10) assert sc.data[25, 5].foreground == Color((255, 255, 255))
def test_gradient_transformer_with_horizontal_size_and_direction_left(): sc, sh, sp, gr = screen_shape_sprite() tr = GradientTransformer(gr, direction=TM.Directions.LEFT, size=10) sp.transformers.append(tr) sh.draw.line((0, 5), (26, 5)) sc.update() yield None assert sc.data[0, 5].foreground == Color((255, 255, 255)) assert sc.data[5, 5].foreground.isclose(Color((.5, .5, .5)), abs_tol=15) assert sc.data[9, 5].foreground == Color((0, 0, 0)) assert sc.data[10, 5].foreground == Color((255, 255, 255))
def test_gradient_transformer_with_horizontal_size_with_repeat_none_and_offset(): sc, sh, sp, gr = screen_shape_sprite() tr = GradientTransformer(gr, size=10, repeat="none", offset=5) sp.transformers.append(tr) sh.draw.line((0,5), (26, 5)) sc.update() yield None assert sc.data[0, 5].foreground == Color((0, 0, 0)) assert sc.data[4, 5].foreground == Color((0, 0, 0)) assert sc.data[14,5].foreground == Color((255, 255, 255)) assert sc.data[19, 5].foreground == Color((255, 255, 255))
def test_gradient_transformer_with_horizontal_size_and_repeat_triangle(): sc, sh, sp, gr = screen_shape_sprite() tr = GradientTransformer(gr, size=10, repeat="triangle") sp.transformers.append(tr) sh.draw.line((0, 5), (26, 5)) sc.update() yield None assert sc.data[0, 5].foreground == Color((0, 0, 0)) assert sc.data[5, 5].foreground.isclose(Color((.5, .5, .5)), abs_tol=15) assert sc.data[9, 5].foreground == Color((255, 255, 255)) assert sc.data[10, 5].foreground == Color((255, 255, 255)) assert sc.data[19, 5].foreground == Color((0, 0, 0)) assert sc.data[25, 5].foreground.isclose(Color((.5, .5, .5)), abs_tol=15)
def test_gradient_transformer_works_with_text_channel(): sc, sh, sp, gr = screen_shape_sprite() class CharGradient: def __getitem__(self, pos): pos = int(pos * 25) return string.ascii_uppercase[pos] tr = GradientTransformer(CharGradient(), channel="char") sp.transformers.append(tr) sh.draw.line((0, 5), (26, 5), char="*", color=(255, 0, 0)) sc.update() yield None assert sc.data[0, 5].foreground == Color((255, 0, 0)) assert sc.data[0, 5].value == "A" assert sc.data[12, 5].value == "M" assert sc.data[25, 5].value == "Z"
import terminedia as TM from terminedia.transformers import GradientTransformer sc = TM.Screen() a = TM.shape((40, 4)) a.text[4].at((0, 0), "terminedia") b = TM.Sprite(a) b.active = True sc.data.sprites.append(b) b.pos = (5, 5) a.context.transformers.append( GradientTransformer( TM.Gradient([(0, "blue"), (0.5, "white"), (1, "blue")]), TM.Directions.LEFT)) sc.update()