def test_group_a_group_and_a_circle(self):
    rectangle1 = Rectangle(-2, -1, 4, 1)
    rectangle2 = Rectangle(-1, 2, 4, 2)
    
    square1 = Square(7, 3, 2)
    square2 = Square(10, 3, 2)
    
    circle1 = Circle(2, 6, 3)

    self.diagram.add_shape(rectangle1)
    self.diagram.add_shape(rectangle2)
    
    self.diagram.add_shape(square1)
    self.diagram.add_shape(square2)
    
    self.diagram.add_shape(circle1)
    
    self.diagram.group_shapes(-1, 1, 8, 6)
    
    self.diagram.group_shapes(9, 3, 8, 4)
    
    self.diagram.group_shapes(3, 6, 20, 20)
    
    self.assertEqual(circle1, self.diagram.shapes[0].shapes[0])
    self.assertEqual([rectangle1, rectangle2], self.diagram.shapes[0].shapes[1].shapes)
    self.assertEqual([square1, square2], self.diagram.shapes[0].shapes[2].shapes)
Example #2
0
class BaseFem(ABC):
    def __init__(self, n, shape):
        # omega setup
        self.shape = shape
        self.omega = Rectangle(self.shape)
        self.omega.triangulate(n)

        # function set up manually
        self.function = lambda x, y: x * (1 - x) * y * (1 - y)
        self.grad = lambda x, y: ((1 - 2 * x) * (y - y**2) + (1 - 2 * y) *
                                  (x - x**2))

        self.is_grad = False
        self.node_values = []

    def error(self, is_grad=False):
        ans = 0

        self.set_error_type(is_grad)
        for _ in self.omega.triangles.triangles:
            ans += self.int_triang(_)

        return sqrt(ans)

    def set_error_type(self, is_grad):
        self.is_grad = is_grad

    def get_coords(self, tr):
        omega = self.omega
        trc = np.zeros((3, 3))
        trc[0][0], trc[0][1], trc[0][2] = omega.x_coords[
            tr[0]], omega.y_coords[tr[0]], self.node_values[tr[0]]
        trc[1][0], trc[1][1], trc[1][2] = omega.x_coords[
            tr[1]], omega.y_coords[tr[1]], self.node_values[tr[1]]
        trc[2][0], trc[2][1], trc[2][2] = omega.x_coords[
            tr[2]], omega.y_coords[tr[2]], self.node_values[tr[2]]
        return trc

    def middle(self, trc, a, b):
        x = (trc[b][0] + trc[a][0]) / 2
        y = (trc[b][1] + trc[a][1]) / 2
        if self.is_grad:
            mid_val = middle_val_grad(trc)
            return (abs(mid_val - self.grad(x, y)))**2
        else:
            mid_val = middle_val(trc, a, b, x, y)
            return (abs(mid_val - self.function(x, y)))**2

    def int_triang(self, tr):
        trc = self.get_coords(tr)
        f01 = self.middle(trc, 0, 1)
        f12 = self.middle(trc, 1, 2)
        f20 = self.middle(trc, 2, 0)
        return area(trc) / 3 * (f01 + f12 + f20)

    @abstractmethod
    def set_node_values(self):
        pass
Example #3
0
    def __init__(self, n, shape):
        # omega setup
        self.shape = shape
        self.omega = Rectangle(self.shape)
        self.omega.triangulate(n)

        # function set up manually
        self.function = lambda x, y: x * (1 - x) * y * (1 - y)
        self.grad = lambda x, y: ((1 - 2 * x) * (y - y**2) + (1 - 2 * y) *
                                  (x - x**2))

        self.is_grad = False
        self.node_values = []
Example #4
0
    def adopt_primitive(self, fig, mesh, prim_type_index, primitive_ind=-1):
        x, y, w, h = fig

        if primitive_ind == -1:
            primitive = None
            if prim_type_index == RECT:
                primitive = Rectangle(fig, mesh)
            elif prim_type_index == TRI:
                primitive = Triangle(fig, mesh)
            self.shape.append(primitive)
        else:
            self.shape[primitive_ind].modify(fig, mesh)

        not_match_x = x + w > self.world_size or x <= self.start_x
        not_match_y = y + h > self.world_size or y <= self.start_y
        if not_match_x or not_match_y:
            self.send_message("Рабочая область была расширена")
            self.adjust()
        else:
            self.parent_update.emit()

        # Select step for coordinate grid
        step_x = min(self.shape, key=lambda prim: prim.step_x).step_x
        step_y = min(self.shape, key=lambda prim: prim.step_y).step_y
        self.grid_step = min(step_x, step_y)
        self.forgo_displayer()
 def test_diagram_has_circle_on_top_of_rectangle_selects_rectangle_when_point_is_on_rectangle(self):
   rectangle1 = Rectangle(0, 0, 8, 4)
   circle1 = Circle(0, 0, 3)
   
   self.diagram.add_shape(rectangle1)
   self.diagram.add_shape(circle1)
   
   self.assertEqual(rectangle1, self.diagram.select_at(4, 2))
  def test_add_circle_and_rectangle_to_diagram(self):
    circle1 = Circle(0, 0, 3)
    rectangle1 = Rectangle(0, 0, 4, 2)
    
    self.diagram.add_shape(circle1)
    self.diagram.add_shape(rectangle1)

    self.assertEqual([circle1, rectangle1], self.diagram.shapes)
 def test_ungroup_a_nonexistent_group_from_a_di(self):
   circle1 = Circle(0, 3, 3)
   rectangle1 = Rectangle(0, 0, 4, 2)
   self.diagram.add_shape(circle1)
   self.diagram.add_shape(rectangle1)
   
   self.diagram.group_shapes(100,100, 4, 2)
   
   self.assertEqual(2, len(self.diagram.shapes))
 def create_shape(self):
     self.diagram.add_shape(Rectangle(140, 120, 80, 40))
     self.canvas.create_rectangle(100,
                                  100,
                                  180,
                                  140,
                                  outline='black',
                                  fill='white',
                                  tags="shape")
  def test_diagram_has_circle_on_top_of_rectangle_delete_circle_check_for_a_property_of_rectangle_being_there(self):
    rectangle1 = Rectangle(0, 0, 8, 4)
    circle1 = Circle(0, 0, 3)

    self.diagram.add_shape(rectangle1)
    self.diagram.add_shape(circle1)

    self.diagram.delete_shape_at(0, 0)
    self.assertEqual([rectangle1], self.diagram.shapes)
  def test_draw_a_rectangle_area_any_shape_within_it_will_be_grouped(self):
    rectangle1 = Rectangle(-1, 7, 8, 4)
    circle1 = Circle(0, 0, 3)
    square1 = Square(-5, 0, 8)

    self.diagram.add_shape(rectangle1)
    self.diagram.add_shape(circle1)
    self.diagram.add_shape(square1)
    
    self.diagram.group_shapes(0, 0, 25, 25)
  
    self.assertEqual([rectangle1, circle1, square1], self.diagram.shapes[0].shapes)
 def test_load_diagram_with_one_circle_and_one_rectangle(self):
   circle1 = Circle(0, 3, 3)
   rectangle1 = Rectangle(0, 0, 4, 2)
   self.diagram.add_shape(circle1)
   self.diagram.add_shape(rectangle1)
   data_bytes = self.diagram.convert_data()
   
   self.diagram.shapes = []
   
   self.diagram.shapes = self.diagram.load_diagram(data_bytes)
   
   self.assertEqual(2, len(self.diagram.shapes))
 def test_diagram_has_only_a_group_no_ungrouped_shapes(self):
   rectangle1 = Rectangle(-1, 7, 8, 4)
   circle1 = Circle(3, 6, 3)
   square1 = Square(-5, 0, 8)
   
   self.diagram.add_shape(rectangle1)
   self.diagram.add_shape(circle1)
   self.diagram.add_shape(square1)
   
   self.diagram.group_shapes(0, 0, 21, 20)
   
   self.assertEqual([rectangle1, circle1, square1], self.diagram.shapes[0].shapes)
   self.assertEqual(1, len(self.diagram.shapes))
  def test_ungroup_a_group(self):
    rectangle1 = Rectangle(-1, 7, 8, 4)
    circle1 = Circle(20, 2, 3)
    square1 = Square(-5, 0, 8)

    self.diagram.add_shape(rectangle1)
    self.diagram.add_shape(circle1)
    self.diagram.add_shape(square1)

    self.diagram.group_shapes(0, 0, 21, 20)
    
    self.diagram.ungroup(self.diagram.shapes[1])

    self.assertEqual([circle1, rectangle1, square1], self.diagram.shapes)
  def test_delete_group_and_its_shapes(self):
    rectangle1 = Rectangle(-1, 7, 8, 4)
    circle1 = Circle(20, 6, 3)
    square1 = Square(-5, 0, 8)

    self.diagram.add_shape(rectangle1)
    self.diagram.add_shape(circle1)
    self.diagram.add_shape(square1)

    self.diagram.group_shapes(0, 0, 21, 20)
    
    self.diagram.delete_shape_at(3, 6)
    
    self.assertEqual([circle1], self.diagram.shapes)
  def test_diagram_has_a_group_and_two_ungrouped_shapes(self):
    rectangle1 = Rectangle(-1, 7, 8, 4)
    circle1 = Circle(3, 6, 3)
    square1 = Square(-5, 0, 8)

    circle2 = Circle(9, 6, 3)
    square2 = Square(8, 0, 8)

    self.diagram.add_shape(rectangle1)
    self.diagram.add_shape(circle1)
    self.diagram.add_shape(square1)

    self.diagram.add_shape(circle2)
    self.diagram.add_shape(square2)
    
    self.diagram.group_shapes(0, 0, 21, 20)
    
    self.assertEqual([rectangle1, circle1, square1], self.diagram.shapes[2].shapes)
    self.assertEqual([circle2, square2], self.diagram.shapes[0:2])
class RectangleTest(unittest.TestCase):
    def setUp(self):
        self.rectangle = Rectangle(0, 0, 8, 4)

    def test_create_rectangle(self):

        self.assertEqual(self.rectangle.width, 4)

    def test_get_location(self):
        self.rectangle.set_location(3, 3)

        self.assertEqual((3, 3), self.rectangle.get_location())

    def test_move_rectangle(self):
        self.rectangle.set_location(2, 2)

        self.assertEqual(
            (2, 2), (self.rectangle.x_coordinate, self.rectangle.y_coordinate))

    def test_point_outside_square(self):

        self.assertFalse(self.rectangle.is_point_on(6, 6))

    def test_point_inside_square(self):

        self.assertTrue(self.rectangle.is_point_on(0, 0))

    def test_point_on_left_edge_square(self):

        self.assertTrue(self.rectangle.is_point_on(-2, 0))

    def test_point_on_top_edge_square(self):

        self.assertTrue(self.rectangle.is_point_on(0, 1))

    def test_point_on_right_edge_square(self):

        self.assertTrue(self.rectangle.is_point_on(2, 0))

    def test_point_on_bottom_edge_square(self):

        self.assertTrue(self.rectangle.is_point_on(0, -1))

    def test_if_rectangle_in_selection_region(self):

        self.assertTrue(self.rectangle.is_shape_in_region(0, 0, 10, 10))

    def test_move_by(self):

        self.rectangle.set_location(5, 5)
        self.rectangle.move_by(5, -5)

        self.assertEqual(
            [10, 0],
            [self.rectangle.x_coordinate, self.rectangle.y_coordinate])
Example #17
0
class Monitoring(pygame.sprite.Sprite):
    def __init__(self):
        # CPU
        self.CPUtotalUsage = round(percentage().user + percentage().system)

        self.CPUText = Text(50, 50 - 25)
        self.CPU = Rectangle(50, 50, 100, 30, GREEN)
        # CPU Usage
        self.CPUUsageText = Text(50, 90)
        self.CPUUsage = Rectangle(50, 50, int(self.CPUtotalUsage), 30, RED)

        # Memory
        self.memory = Rectangle(450, 50, 100, 30, GREEN)
        self.memoryText = Text(450, 50 - 25)
        # Memory usage
        self.memoryUsage = Rectangle(450, 50, memory_usage_percent(), 30, RED)
        self.memoryTextUsage = Text(450, 90)

        # Disk
        self.disk = Rectangle(50, 200, 100, 30, GREEN)
        self.diskText = Text(50, 170)
        # disk usage
        self.diskUsage = Rectangle(50, 200, disk_percent(), 30, RED)
        self.diskTextUsage = Text(50, 240)
        # info ip
        self.ip = Text(50, 400)
        # systen
        self.platform_name = Text(50, 430)
        self.platform_platform = Text(50, 460)
        self.platform_system = Text(50, 490)
        self.platform_processor = Text(50, 520)

    def update(self):
        # CPU
        self.CPUText.display(f'CPU {freq()} GHZ')
        self.CPU.draw()
        self.CPUUsage.draw(round(percentage().user + percentage().system))
        self.CPUUsageText.display(
            f'CPU Usage {round(percentage().user + percentage().system)} %')
        # Memory
        self.memory.draw()
        self.memoryText.display(f'Memory Total {Mem()} GB')
        self.memoryUsage.draw(50 * 200 / 100)
        self.memoryTextUsage.display(f'Memory Usage {memory_usage()} GB')
        # Disk
        self.disk.draw()
        self.diskText.display(f'Disk Total {disk_total()} GB')
        # Disk Usage
        self.diskUsage.draw(disk_percent())
        self.diskTextUsage.display(f'Disk Usage {disk_usage()} GB')
        # IP
        self.ip.display(f'IP config {Ip()}')
        # system
        self.platform_name.display(f'Nome da plataforma: {platform_name()}')
        self.platform_system.display(
            f'Sistema Operacional: {platform_system()}')
        self.platform_platform.display(f'Plataforma: {platform_platform()}')
        self.platform_processor.display(
            f'Bits do processador: {platform_processor()}')
Example #18
0
    def __init__(self):
        # CPU
        self.CPUtotalUsage = round(percentage().user + percentage().system)

        self.CPUText = Text(50, 50 - 25)
        self.CPU = Rectangle(50, 50, 100, 30, GREEN)
        # CPU Usage
        self.CPUUsageText = Text(50, 90)
        self.CPUUsage = Rectangle(50, 50, int(self.CPUtotalUsage), 30, RED)

        # Memory
        self.memory = Rectangle(450, 50, 100, 30, GREEN)
        self.memoryText = Text(450, 50 - 25)
        # Memory usage
        self.memoryUsage = Rectangle(450, 50, memory_usage_percent(), 30, RED)
        self.memoryTextUsage = Text(450, 90)

        # Disk
        self.disk = Rectangle(50, 200, 100, 30, GREEN)
        self.diskText = Text(50, 170)
        # disk usage
        self.diskUsage = Rectangle(50, 200, disk_percent(), 30, RED)
        self.diskTextUsage = Text(50, 240)
        # info ip
        self.ip = Text(50, 400)
        # systen
        self.platform_name = Text(50, 430)
        self.platform_platform = Text(50, 460)
        self.platform_system = Text(50, 490)
        self.platform_processor = Text(50, 520)
Example #19
0
    def __init__(self):
        ############################################################################
        # CPU
        self.cpu = CPU()
        self.surfCpu = Surface(0, 0, 500, 400)
        self.textCpu = Text(19, 25, self.surfCpu.getSurface(), 15)
        self.rectCpu = Rectangle(20, 50, 200, 15, self.surfCpu.getSurface(), GREEN)
        self.rectCpuUsage = Rectangle(20, 50, 200, 15, self.surfCpu.getSurface(), RED)
        # logic core cpu
        self.xCores = 0
        self.xCoresInside = 0
        self.rectCores = []
        for core in range(self.cpu.getCoresLogical()):
            self.xCores += 20
            if self.xCores > 180:
                self.xCoresInside += 20
                self.rectCores.append(Rectangle(self.xCoresInside, 95, 10, 15, self.surfCpu.getSurface(), GREEN))
            self.rectCores.append(Rectangle(self.xCores, 75, 10, 15, self.surfCpu.getSurface(), GREEN))
        # infos cpu
        self.textCore = Text(20, 130, self.surfCpu.getSurface(), 15)
        self.textCoreLogical = Text(20, 150, self.surfCpu.getSurface(), 15)
        self.textArch = Text(20, 170, self.surfCpu.getSurface(), 15)
        self.textBits = Text(20, 190, self.surfCpu.getSurface(), 15)
        self.textBrand = Text(20, 210, self.surfCpu.getSurface(), 15)
        #############################################################################
        #############################################################################
        # MEMORY
        self.memory = Memory()
        self.surfMemory = Surface(0, 0, 500, 400)
        self.rectMemory = Rectangle(20, 50, 200, 15, self.surfMemory.getSurface(), GREEN)
        self.rectMemoryUsage = Rectangle(20, 50, 200, 15, self.surfMemory.getSurface(), RED)
        # memory info
        self.textMemory = Text(19, 25, self.surfMemory.getSurface(), 15)
        self.textMemoryTotal = Text(19, 130, self.surfMemory.getSurface(), 15)
        self.textMemoryPercent = Text(19, 150, self.surfMemory.getSurface(), 15)
        self.textMemoryUsage = Text(19, 170, self.surfMemory.getSurface(), 15)
        #############################################################################
        #############################################################################
        # DISK
        self.disk = Disk()
        self.surfDisk = Surface(0, 0, 500, 400)
        self.rectDisk = Rectangle(20, 50, 200, 15, self.surfDisk.getSurface(), GREEN)
        self.rectDiskUsage = Rectangle(20, 50, 200, 15, self.surfDisk.getSurface(), RED)
        # disk info
        self.textDisk = Text(19, 25, self.surfDisk.getSurface(), 15)
        self.textDiskTotal = Text(19, 130, self.surfDisk.getSurface(), 15)
        self.textDiskPercent = Text(19, 150, self.surfDisk.getSurface(), 15)
        self.textDiskUsage = Text(19, 170, self.surfDisk.getSurface(), 15)
        #############################################################################
        ###############################################################################
        # IP
        self.ip = Ip
        self.surfIp = Surface(0, 0, 500, 400)
        self.textIp = Text(250, 25, self.surfIp.getSurface(), 15)
        self.textIpEddressLocal = Text(15, 50, self.surfIp.getSurface(), 15)
        self.textIpEddress = Text(15, 100, self.surfIp.getSurface(), 15)
        self.textIpEddressMask = Text(15, 150, self.surfIp.getSurface(), 15)
        self.textIpEddressBroadcast = Text(15, 200, self.surfIp.getSurface(), 15) \
            ###############################################################################
        ###############################################################################
        # INFOS
        self.surfInfo = Surface(0, 0, 500, 400)
        # texts infos cpu
        self.textInfoCpu = Text(10, 10, self.surfInfo.getSurface(), 15)
        self.textInfoCore = Text(20, 30, self.surfInfo.getSurface(), 15)
        self.textInfoCoreLogical = Text(20, 50, self.surfInfo.getSurface(), 15)
        self.textInfoArch = Text(20, 70, self.surfInfo.getSurface(), 15)
        self.textInfoBits = Text(20, 90, self.surfInfo.getSurface(), 15)
        self.textInfoBrand = Text(20, 110, self.surfInfo.getSurface(), 15)
        # texts infos memory

        self.textInfoMemory = Text(10, 140, self.surfInfo.getSurface(), 15)
        self.textInfoMemoryTotal = Text(20, 160, self.surfInfo.getSurface(), 15)
        self.textInfoMemoryPercent = Text(20, 180, self.surfInfo.getSurface(), 15)
        self.textInfoMemoryUsage = Text(20, 200, self.surfInfo.getSurface(), 15)
        # texts infos disk
        self.textInfoDisk = Text(10, 230, self.surfInfo.getSurface(), 15)
        self.textInfoDiskTotal = Text(20, 250, self.surfInfo.getSurface(), 15)
        self.textInfoDiskPercent = Text(20, 270, self.surfInfo.getSurface(), 15)
        self.textInfoDiskUsage = Text(20, 290, self.surfInfo.getSurface(), 15)
        # text ip
        self.textInfoIp = Text(10, 320, self.surfInfo.getSurface(), 15)
        self.textInfoIpEddress = Text(20, 340, self.surfInfo.getSurface(), 15)

        ###############################################################################
        ###############################################################################
        # arrays surface
        self.arrSurface = [self.surfCpu, self.surfMemory, self.surfDisk, self.surfIp, self.surfInfo]
 def test_save_diagram_with_one_circle_and_one_rectangle(self):
   self.diagram.add_shape(Circle(0, 0, 3))
   self.diagram.add_shape(Rectangle(0, 0, 4, 2))
   
   self.assertEqual(bytes, type(self.diagram.convert_data()))
Example #21
0
class Monitoring():
    def __init__(self):
        ############################################################################
        # CPU
        self.cpu = CPU()
        self.surfCpu = Surface(0, 0, 500, 400)
        self.textCpu = Text(19, 25, self.surfCpu.getSurface(), 15)
        self.rectCpu = Rectangle(20, 50, 200, 15, self.surfCpu.getSurface(), GREEN)
        self.rectCpuUsage = Rectangle(20, 50, 200, 15, self.surfCpu.getSurface(), RED)
        # logic core cpu
        self.xCores = 0
        self.xCoresInside = 0
        self.rectCores = []
        for core in range(self.cpu.getCoresLogical()):
            self.xCores += 20
            if self.xCores > 180:
                self.xCoresInside += 20
                self.rectCores.append(Rectangle(self.xCoresInside, 95, 10, 15, self.surfCpu.getSurface(), GREEN))
            self.rectCores.append(Rectangle(self.xCores, 75, 10, 15, self.surfCpu.getSurface(), GREEN))
        # infos cpu
        self.textCore = Text(20, 130, self.surfCpu.getSurface(), 15)
        self.textCoreLogical = Text(20, 150, self.surfCpu.getSurface(), 15)
        self.textArch = Text(20, 170, self.surfCpu.getSurface(), 15)
        self.textBits = Text(20, 190, self.surfCpu.getSurface(), 15)
        self.textBrand = Text(20, 210, self.surfCpu.getSurface(), 15)
        #############################################################################
        #############################################################################
        # MEMORY
        self.memory = Memory()
        self.surfMemory = Surface(0, 0, 500, 400)
        self.rectMemory = Rectangle(20, 50, 200, 15, self.surfMemory.getSurface(), GREEN)
        self.rectMemoryUsage = Rectangle(20, 50, 200, 15, self.surfMemory.getSurface(), RED)
        # memory info
        self.textMemory = Text(19, 25, self.surfMemory.getSurface(), 15)
        self.textMemoryTotal = Text(19, 130, self.surfMemory.getSurface(), 15)
        self.textMemoryPercent = Text(19, 150, self.surfMemory.getSurface(), 15)
        self.textMemoryUsage = Text(19, 170, self.surfMemory.getSurface(), 15)
        #############################################################################
        #############################################################################
        # DISK
        self.disk = Disk()
        self.surfDisk = Surface(0, 0, 500, 400)
        self.rectDisk = Rectangle(20, 50, 200, 15, self.surfDisk.getSurface(), GREEN)
        self.rectDiskUsage = Rectangle(20, 50, 200, 15, self.surfDisk.getSurface(), RED)
        # disk info
        self.textDisk = Text(19, 25, self.surfDisk.getSurface(), 15)
        self.textDiskTotal = Text(19, 130, self.surfDisk.getSurface(), 15)
        self.textDiskPercent = Text(19, 150, self.surfDisk.getSurface(), 15)
        self.textDiskUsage = Text(19, 170, self.surfDisk.getSurface(), 15)
        #############################################################################
        ###############################################################################
        # IP
        self.ip = Ip
        self.surfIp = Surface(0, 0, 500, 400)
        self.textIp = Text(250, 25, self.surfIp.getSurface(), 15)
        self.textIpEddressLocal = Text(15, 50, self.surfIp.getSurface(), 15)
        self.textIpEddress = Text(15, 100, self.surfIp.getSurface(), 15)
        self.textIpEddressMask = Text(15, 150, self.surfIp.getSurface(), 15)
        self.textIpEddressBroadcast = Text(15, 200, self.surfIp.getSurface(), 15) \
            ###############################################################################
        ###############################################################################
        # INFOS
        self.surfInfo = Surface(0, 0, 500, 400)
        # texts infos cpu
        self.textInfoCpu = Text(10, 10, self.surfInfo.getSurface(), 15)
        self.textInfoCore = Text(20, 30, self.surfInfo.getSurface(), 15)
        self.textInfoCoreLogical = Text(20, 50, self.surfInfo.getSurface(), 15)
        self.textInfoArch = Text(20, 70, self.surfInfo.getSurface(), 15)
        self.textInfoBits = Text(20, 90, self.surfInfo.getSurface(), 15)
        self.textInfoBrand = Text(20, 110, self.surfInfo.getSurface(), 15)
        # texts infos memory

        self.textInfoMemory = Text(10, 140, self.surfInfo.getSurface(), 15)
        self.textInfoMemoryTotal = Text(20, 160, self.surfInfo.getSurface(), 15)
        self.textInfoMemoryPercent = Text(20, 180, self.surfInfo.getSurface(), 15)
        self.textInfoMemoryUsage = Text(20, 200, self.surfInfo.getSurface(), 15)
        # texts infos disk
        self.textInfoDisk = Text(10, 230, self.surfInfo.getSurface(), 15)
        self.textInfoDiskTotal = Text(20, 250, self.surfInfo.getSurface(), 15)
        self.textInfoDiskPercent = Text(20, 270, self.surfInfo.getSurface(), 15)
        self.textInfoDiskUsage = Text(20, 290, self.surfInfo.getSurface(), 15)
        # text ip
        self.textInfoIp = Text(10, 320, self.surfInfo.getSurface(), 15)
        self.textInfoIpEddress = Text(20, 340, self.surfInfo.getSurface(), 15)

        ###############################################################################
        ###############################################################################
        # arrays surface
        self.arrSurface = [self.surfCpu, self.surfMemory, self.surfDisk, self.surfIp, self.surfInfo]

    def update(self, count):
        self.arrSurface[count].draw()
        ###############################################################################
        # cpu
        percentCPU = round((self.cpu.getPercentUsage() * 200) / 100)
        self.rectCpu.draw()
        self.rectCpuUsage.draw()
        self.rectCpuUsage.update(percentCPU)
        self.textCpu.draw(f'CPU {self.cpu.getCpu()} MHz | Usage {percentCPU} %')
        # logic core cpu
        for core in range(self.cpu.getCoresLogical()):
            self.rectCores[core].draw()
        # infos cpu
        self.textCoreLogical.draw(f'Núcleos (Lógicos): {self.cpu.getCoresLogical()}')
        self.textCore.draw(f'Núcleos (Físicos): {self.cpu.getCores()}')
        self.textArch.draw(f'Arquitetura: {self.cpu.getArch()}')
        self.textBits.draw(f'Palavra (bits): {self.cpu.getBits()}')
        self.textBrand.draw(f'Nome: {self.cpu.getBrand()}')
        ###############################################################################
        ###############################################################################
        # memory
        self.rectMemory.draw()
        self.rectMemoryUsage.draw()
        self.rectMemoryUsage.update(round((self.memory.getMemoryPercent() * 200) / 100))
        self.textMemory.draw(f'Memória: {self.memory.getMemoryTotalGb()} GB')
        self.textMemoryTotal.draw(f'Memória Total: {self.memory.getMemoryTotalGb()} GB')
        self.textMemoryUsage.draw(f'Memória Usada: {self.memory.getMemoryUsage()} GB')
        self.textMemoryPercent.draw(f'Memória Porcentagem: {self.memory.getMemoryPercent()}%')
        ###############################################################################
        ###############################################################################
        # disk
        self.rectDisk.draw()
        self.rectDiskUsage.draw()
        self.rectDiskUsage.update(round((self.disk.getDiskPercent() * 200) / 100))
        self.textDisk.draw(f'Disco {self.disk.getDiskTotal()} GB')
        self.textDiskTotal.draw(f'Disco Total {self.disk.getDiskTotal()} GB')
        self.textDiskUsage.draw(f'Disco Usado {self.disk.getDiskUsage()} GB')
        self.textDiskPercent.draw(f'Porcentagem do Disco {self.disk.getDiskPercent()}%')
        ###############################################################################
        ###############################################################################
        # IP
        self.ip = Ip()
        self.textIp.draw('IP')
        self.textIpEddressLocal.draw(f'Endereço Local: {self.ip.getEddressLocal()}')
        self.textIpEddress.draw(f'Endereço: {self.ip.getEddress()}')
        self.textIpEddressMask.draw(f'Endereço Mask: {self.ip.getEddressMask()}')
        self.textIpEddressBroadcast.draw(f'Endereço Broadcast: {self.ip.getEddressBroadcast()}')
        ###############################################################################
        ###############################################################################
        # INFOS
        # cpu
        self.textInfoCpu.draw('CPU:')
        self.textInfoCoreLogical.draw(f'- Núcleos (Lógicos): {self.cpu.getCoresLogical()}')
        self.textInfoCore.draw(f'- Núcleos (Físicos): {self.cpu.getCores()}')
        self.textInfoArch.draw(f'- Arquitetura: {self.cpu.getArch()}')
        self.textInfoBits.draw(f'- Palavra (bits): {self.cpu.getBits()}')
        self.textInfoBrand.draw(f'- Nome: {self.cpu.getBrand()}')
        # memory
        self.textInfoMemory.draw(f'Memória:')
        self.textInfoMemoryTotal.draw(f'- Memória Total: {self.memory.getMemoryTotalGb()} GB')
        self.textInfoMemoryUsage.draw(f'- Memória Usada: {self.memory.getMemoryUsage()} GB')
        self.textInfoMemoryPercent.draw(f'- Memória Porcentagem: {self.memory.getMemoryPercent()}%')
        # disk
        self.textInfoDisk.draw('Disco:')
        self.textInfoDiskTotal.draw(f'- Disco Total {self.disk.getDiskTotal()} GB')
        self.textInfoDiskUsage.draw(f'- Disco Usado {self.disk.getDiskUsage()} GB')
        self.textInfoDiskPercent.draw(f'- Porcentagem do Disco {self.disk.getDiskPercent()}%')
        # ip
        self.textInfoIp.draw('IP:')
        self.textInfoIpEddress.draw(f'- Endereço: {self.ip.getEddress()}')
 def setUp(self):
     self.rectangle = Rectangle(0, 0, 8, 4)