extends TestCase func test_a_figure_appears_where_it_is_first_placed() -> void: var figures := Figures.new() check_eq(figures.shown_at(2), Vector2.INF, "nobody is shown at first") figures.place(2, Vector2(10.0, 20.0)) check_eq(figures.shown_at(2), Vector2(10.0, 20.0), "at once at its first position") figures.free() func test_a_figure_glides_toward_its_latest_position() -> void: var figures := Figures.new() figures.place(1, Vector2.ZERO) figures.place(1, Vector2(100.0, 0.0)) figures._process(0.02) var halfway := figures.shown_at(1).x check(halfway > 0.0 and halfway < 100.0, "part of the way after a frame: %s" % halfway) for frame in 60: figures._process(0.02) check(figures.shown_at(1).distance_to(Vector2(100.0, 0.0)) < 0.01, "there after a second") figures.free() func test_figures_can_be_forgotten() -> void: var figures := Figures.new() figures.place(1, Vector2.ZERO) figures.place(3, Vector2.ONE) figures.forget(1) check_eq(figures.shown_at(1), Vector2.INF, "one is gone") check_eq(figures.shown_at(3), Vector2.ONE, "the other stays") figures.clear() check_eq(figures.shown_at(3), Vector2.INF, "all are gone") figures.free() func test_a_figure_faces_the_way_it_glides() -> void: var figures := Figures.new() figures.place(1, Vector2(100.0, 0.0)) check_eq(figures.facing_of(1), 1.0, "facing right at first") figures.place(1, Vector2.ZERO) figures._process(0.02) check_eq(figures.facing_of(1), -1.0, "facing left while it glides to the left") figures.free()