Exemplo n.º 1
0
 def test_remove_complex_number_at_index(self):
     """
     Test controller remove_complex_number_at_index.
     """
     controllers.remove_complex_number_at_index(self.list_track, 0)
     self.assertEqual(track.peek(self.list_track), [2 + 2.5j, 3 + 0j])
     controllers.remove_complex_number_at_index(self.list_track, 1)
     self.assertEqual(track.peek(self.list_track), [2 + 2.5j])
     with self.assertRaises(IndexError):
         controllers.remove_complex_number_at_index(self.list_track, 1)
Exemplo n.º 2
0
 def test_append_complex_number_to_list(self):
     """
     Test controller append_complex_number_to_list.
     """
     controllers.append_complex_number_to_list(self.list_track, 1 + 0j)
     self.assertEqual(track.peek(self.list_track),
                      [1 + 1j, 2 + 2.5j, 3 + 0j, 1 + 0j])
     controllers.append_complex_number_to_list(self.list_track, 2 + 0j)
     self.assertEqual(track.peek(self.list_track),
                      [1 + 1j, 2 + 2.5j, 3 + 0j, 1 + 0j, 2 + 0j])
Exemplo n.º 3
0
 def test_undo_list_track(self):
     """
     Test controller undo_list_track.
     """
     controllers.undo_list_track(self.list_track)
     self.assertEqual(track.peek(self.list_track),
                      [1 + 1j, 2 + 2.5j, 3 + 0j])
     track.push(self.list_track, [3 + 0j])
     controllers.undo_list_track(self.list_track)
     self.assertEqual(track.peek(self.list_track),
                      [1 + 1j, 2 + 2.5j, 3 + 0j])
Exemplo n.º 4
0
 def test_replace_complex_number(self):
     """
     Test controller replace_complex_number.
     """
     controllers.replace_complex_number(self.list_track, 1 + 1j, 2 + 2.5j)
     self.assertEqual(track.peek(self.list_track),
                      [2 + 2.5j, 2 + 2.5j, 3 + 0j])
     controllers.replace_complex_number(self.list_track, 2 + 2.5j, 3 + 0j)
     self.assertEqual(track.peek(self.list_track), [3 + 0j, 3 + 0j, 3 + 0j])
     controllers.replace_complex_number(self.list_track, 1 + 0j, 2 + 0j)
     self.assertEqual(track.peek(self.list_track), [3 + 0j, 3 + 0j, 3 + 0j])
Exemplo n.º 5
0
 def test_filter_by_absolute_relation(self):
     """
     Test controller filter_by_absolute_relation.
     """
     controllers.filter_by_absolute_relation(self.list_track, 3, 0)
     self.assertEqual(track.peek(self.list_track), [1 + 1j, 2 + 2.5j])
     track.push(self.list_track, [1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.filter_by_absolute_relation(self.list_track, 2, -999)
     self.assertEqual(track.peek(self.list_track), [2 + 2.5j, 3 + 0j])
     track.push(self.list_track, [1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.filter_by_absolute_relation(self.list_track, 3, 12321)
     self.assertEqual(track.peek(self.list_track), [1 + 1j, 3 + 0j])
Exemplo n.º 6
0
 def test_remove_complex_numbers_sequence(self):
     """
     Test controller remove_complex_numbers_sequence.
     """
     controllers.remove_complex_numbers_sequence(self.list_track, 1, 2)
     self.assertEqual(track.peek(self.list_track), [1 + 1j])
     track.push(self.list_track, [1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.remove_complex_numbers_sequence(self.list_track, -2, -1)
     self.assertEqual(track.peek(self.list_track), [1 + 1j])
     track.push(self.list_track, [1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.remove_complex_numbers_sequence(self.list_track, -10, 1)
     self.assertEqual(track.peek(self.list_track), [3 + 0j])
Exemplo n.º 7
0
def filter_real_part_not_prime(list_track):
    list_snapshot = track.peek(list_track)
    list_snapshot = [
        item for item in list_snapshot
        if not utils.is_prime(item.real)
    ]
    track.push(list_track, list_snapshot)
Exemplo n.º 8
0
def filter_by_absolute_relation(list_track, target, relation):
    list_snapshot = track.peek(list_track)
    list_snapshot = [
        item for item in list_snapshot
        if not utils.satisfies_relation(abs(item), target, relation)
    ]
    track.push(list_track, list_snapshot)
Exemplo n.º 9
0
def print_complex_numbers_product(list_track, index_left, index_right):
    list_snapshot = track.peek(list_track)
    list_sequence = list_snapshot[index_left:index_right + 1 or None]
    list_product = None
    for result in accumulate(list_sequence, mul):
        list_product = result
    return list_product
Exemplo n.º 10
0
 def test_insert_complex_number_at_index(self):
     """
     Test controller insert_complex_number_at_index.
     """
     controllers.insert_complex_number_at_index(self.list_track, 1 + 0j, 0)
     self.assertEqual(track.peek(self.list_track),
                      [1 + 0j, 1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.insert_complex_number_at_index(self.list_track, 2 + 0j, 0)
     self.assertEqual(track.peek(self.list_track),
                      [2 + 0j, 1 + 0j, 1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.insert_complex_number_at_index(self.list_track, 3 + 0j,
                                                -100)
     self.assertEqual(track.peek(self.list_track),
                      [3 + 0j, 2 + 0j, 1 + 0j, 1 + 1j, 2 + 2.5j, 3 + 0j])
     controllers.insert_complex_number_at_index(self.list_track, 4 + 0j,
                                                100)
     self.assertEqual(
         track.peek(self.list_track),
         [3 + 0j, 2 + 0j, 1 + 0j, 1 + 1j, 2 + 2.5j, 3 + 0j, 4 + 0j])
Exemplo n.º 11
0
def start_ui():
    """
    > Start the main program loop.
    """
    options = {
        # Feature group 1
        "Append complex number at the end of the list":
            drivers.append_complex_number_to_list,
        "Insert complex number at index":
            drivers.insert_complex_number_at_index,
        # Feature group 2
        "Remove complex number at index":
            drivers.remove_complex_number_at_index,
        "Remove complex numbers between indexes(inclusive)":
            drivers.remove_complex_numbers_sequence,
        "Replace complex number with another complex number":
            drivers.replace_complex_number,
        # Feature group 3
        "Print imaginary part of complex numbers between indexes(inclusive)":
            drivers.print_imaginary_parts,
        "Print all complex numbers with absolute value less than 10":
            drivers.print_absolute_less_than_ten,
        "Print all complex numbers with absolute value equal with 10":
            drivers.print_absolute_equal_with_ten,
        # Feature group 4
        "Print sum of complex numbers between indexes(inclusive)":
            drivers.print_complex_numbers_sum,
        "Print product of complex numbers between indexes(inclusive)":
            drivers.print_complex_numbers_product,
        "Print all complex numbers in descending order by imaginary part":
            drivers.print_reverse_sorted_by_j,
        # Feature group 5
        "Remove all complex numbers where the real part is prime":
            drivers.filter_real_part_not_prime,
        "Remove all complex numbers by relation with given absolute value":
            drivers.filter_by_absolute_relation,
        # Feature group 6
        "Undo last operation":
            drivers.undo_list_track,
        # Quit
        "Quit":
            exit_ui
    }
    options_texts = list(options.keys())
    options_handlers = list(options.values())
    complex_number_list = track.create(2, [])
    while True:
        print("NUMBERS: ", track.peek(complex_number_list))
        try:
            option_index = console.input_option(options_texts)
            option_handler = options_handlers[option_index]
            option_handler(console, complex_number_list)
        except (EOFError, IndexError, ValueError):
            print("INVALID INPUT.")
        print()
Exemplo n.º 12
0
def remove_complex_number_at_index(list_track, index):
    list_snapshot = track.peek(list_track)
    list_snapshot.pop(index)
    track.push(list_track, list_snapshot)
Exemplo n.º 13
0
def remove_complex_numbers_sequence(list_track, index_left, index_right):
    list_snapshot = track.peek(list_track)
    list_snapshot[index_left:index_right + 1 or None] = []
    track.push(list_track, list_snapshot)
Exemplo n.º 14
0
def replace_complex_number(list_track, old_item, new_item):
    list_snapshot = track.peek(list_track)
    list_snapshot = [new_item if item == old_item else item for item in list_snapshot]
    track.push(list_track, list_snapshot)
Exemplo n.º 15
0
def print_imaginary_parts(list_track, index_left, index_right):
    list_snapshot = track.peek(list_track)
    list_sequence = list_snapshot[index_left:index_right + 1 or None]
    imaginary_parts = [item.imag for item in list_sequence]
    return imaginary_parts
Exemplo n.º 16
0
 def test_filter_real_part_not_prime(self):
     """
     Test controller filter_real_part_not_prime.
     """
     controllers.filter_real_part_not_prime(self.list_track)
     self.assertEqual(track.peek(self.list_track), [1 + 1j])
Exemplo n.º 17
0
def print_absolute_less_than_ten(list_track):
    list_snapshot = track.peek(list_track)
    list_sequence = [item for item in list_snapshot if abs(item) < 10]
    return list_sequence
Exemplo n.º 18
0
def append_complex_number_to_list(list_track, item):
    list_snapshot = track.peek(list_track)
    list_snapshot.append(item)
    track.push(list_track, list_snapshot)
Exemplo n.º 19
0
def insert_complex_number_at_index(list_track, item, index):
    list_snapshot = track.peek(list_track)
    list_snapshot.insert(index, item)
    track.push(list_track, list_snapshot)
Exemplo n.º 20
0
def print_reverse_sorted_by_j(list_track):
    list_snapshot = track.peek(list_track)
    sorted_list = sorted(list_snapshot, key=lambda item: item.imag, reverse=True)
    return sorted_list
Exemplo n.º 21
0
def print_absolute_equal_with_ten(list_track):
    list_snapshot = track.peek(list_track)
    list_sequence = [item for item in list_snapshot if abs(item) == 10]
    return list_sequence