def test_clear_canvas(self): c = Canvas(3, 3) for i in range(3): for j in range(3): c.set_pixel(j, i, 'W') c.clear_canvas() expected = [['O', 'O', 'O'], ['O', 'O', 'O'], ['O', 'O', 'O']] self.assertEqual(expected, c.area)
class EditorGrafico(cmd.Cmd): """Interface em linha de comando para o editor grafico""" prompt = 'editor-> ' def do_I(self, line): M, N = (int(x) for x in line.split(' ')) limits = LimitValidator() try: limits.validate(M, N) except ValueError as e: print(str(e)) return False self.canvas = Canvas(M, N) def do_print(self, line): print(self.canvas.area) def do_X(self, line): return True def do_C(self, line): self.canvas.clear_canvas() print("Matriz limpa") def do_L(self, line): X, Y, C = line.split(' ') index = IndexValidator(self.canvas.area) try: index.validate('vertical', int(Y)) index.validate('horizontal', int(X)) except IndexError as e: print(str(e)) return False X = int(X) - 1 Y = int(Y) - 1 self.canvas.set_pixel(X, Y, C) def do_V(self, line): X, Y1, Y2, C = line.split(' ') index = IndexValidator(self.canvas.area) try: index.validate('horizontal', int(X)) index.validate('vertical', int(Y1)) index.validate('vertical', int(Y2)) except IndexError as e: print(str(e)) return False self.canvas.vertical_line(int(X) - 1, int(Y1) - 1, int(Y2) - 1, C) def do_H(self, line): X1, X2, Y, C = line.split(' ') index = IndexValidator(self.canvas.area) try: index.validate('horizontal', int(X1)) index.validate('horizontal', int(X2)) index.validate('vertical', int(Y)) except IndexError as e: print(str(e)) return False self.canvas.horizontal_line(int(X1) - 1, int(X2) - 1, int(Y) - 1, C) def do_K(self, line): X1, Y1, X2, Y2, C = line.split(' ') index = IndexValidator(self.canvas.area) try: index.validate('horizontal', int(X1)) index.validate('horizontal', int(X2)) index.validate('vertical', int(Y1)) index.validate('vertical', int(Y2)) except IndexError as e: print(str(e)) return False self.canvas.rectangle(int(X1)-1, int(Y1) - 1, int(X2) - 1, int(Y2) - 1, C) def do_F(self, line): X, Y, C = line.split(' ') index = IndexValidator(self.canvas.area) try: index.validate('horizontal', int(X)) index.validate('vertical', int(Y)) except IndexError as e: print(str(e)) return False self.canvas.paint_region(int(X) - 1, int(Y) - 1, C) def do_S(self, line): with open(line, 'w') as output: for linha in self.canvas.area: for pixel in linha: output.write(pixel) output.write("\n") output.close()