Skip to content
Snippets Groups Projects
Commit 7082b24a authored by Angus Lothian's avatar Angus Lothian :dark_sunglasses:
Browse files

Merge branch 'test-refactoring' into 'develop'

Changed test layout and refactorized some tests for OutputPort

See merge request PUM_TDDD96/B-ASIC!13
parents 368b9f4c 7c873143
No related branches found
No related tags found
2 merge requests!15Add changes from sprint 1 and 2 to master,!13Changed test layout and refactorized some tests for OutputPort
Pipeline #11123 passed
from test.fixtures.signal import signal, signals
from test.fixtures.operation_tree import *
from test.fixtures.port import *
import pytest
from test.fixtures.signal import *
from test.fixtures.operation_tree import *
\ No newline at end of file
......@@ -17,11 +17,10 @@ def create_operation(_type, dest_oper, index, **kwargs):
@pytest.fixture
def operation_tree():
"""
Return a addition operation connected with 2 constants.
>---C---+
---A
>---C---+
"""Return a addition operation connected with 2 constants.
---C---+
---A
---C---+
"""
add_oper = Addition()
create_operation(Constant, add_oper, 0, value=2)
......@@ -30,15 +29,14 @@ def operation_tree():
@pytest.fixture
def large_operation_tree():
"""
Return a constant operation connected with a large operation tree with 3 other constants and 3 additions.
>---C---+
---A---+
>---C---+ |
+---A
>---C---+ |
---A---+
>---C---+
"""Return a constant operation connected with a large operation tree with 3 other constants and 3 additions.
---C---+
---A---+
---C---+ |
+---A
---C---+ |
---A---+
---C---+
"""
add_oper = Addition()
add_oper_2 = Addition()
......
import pytest
from b_asic.port import InputPort, OutputPort
@pytest.fixture
def input_port():
return InputPort(0, None)
@pytest.fixture
def output_port():
return OutputPort(0, None)
"""
B-ASIC test suite for graph id generator.
"""
from b_asic.graph_id import GraphIDGenerator, GraphID
import pytest
@pytest.fixture
def graph_id_generator():
return GraphIDGenerator()
def test_empty_string_generator(graph_id_generator):
"""Test the graph id generator for an empty string type."""
assert graph_id_generator.get_next_id("") == "1"
assert graph_id_generator.get_next_id("") == "2"
def test_normal_string_generator(graph_id_generator):
""""Test the graph id generator for a normal string type."""
assert graph_id_generator.get_next_id("add") == "add1"
assert graph_id_generator.get_next_id("add") == "add2"
def test_different_strings_generator(graph_id_generator):
"""Test the graph id generator for different strings."""
assert graph_id_generator.get_next_id("sub") == "sub1"
assert graph_id_generator.get_next_id("mul") == "mul1"
assert graph_id_generator.get_next_id("sub") == "sub2"
assert graph_id_generator.get_next_id("mul") == "mul2"
"""
B-ASIC test suite for OutputPort
TODO: More info
"""
from b_asic import InputPort, OutputPort
import pytest
@pytest.fixture
def inp_ports():
return [InputPort(_, None) for _ in range(0,3)]
def test_connect_multiple_signals(inp_ports):
"""Can multiple ports connect to an output port?"""
out_port = OutputPort(0, None)
for port in inp_ports:
out_port.connect(port)
assert out_port.signal_count() == len(inp_ports)
def test_disconnect_multiple_signals(inp_ports):
"""Can multiple signals disconnect from an output port?"""
out_port = OutputPort(0, None)
sigs = []
for port in inp_ports:
sigs.append(out_port.connect(port))
for sig in sigs:
out_port.remove_signal(sig)
assert out_port.signal_count() == 0
def test_disconnect_mulitple_ports(inp_ports):
"""Can multiple ports be disconnected from an output port?"""
out_port = OutputPort(0, None)
for port in inp_ports:
out_port.connect(port)
for port in inp_ports:
out_port.disconnect(port)
assert out_port.signal_count() == 3
assert len(out_port.connected_ports) == 0
\ No newline at end of file
from b_asic.signal_flow_graph import SFG
from b_asic.core_operations import Addition, Constant
from b_asic.signal import Signal
from b_asic.signal_flow_graph import SFG
import pytest
def test_adding_to_sfg():
pass
......@@ -3,8 +3,6 @@ B-ASIC test suite for the core operations.
"""
from b_asic.core_operations import Constant, Addition, Subtraction, Multiplication, Division, SquareRoot, ComplexConjugate, Max, Min, Absolute, ConstantMultiplication, ConstantAddition, ConstantSubtraction, ConstantDivision
from b_asic.signal import Signal
import pytest
# Constant tests.
def test_constant():
......
"""
B-ASIC test suite for graph id generator.
"""
from b_asic.graph_id import GraphIDGenerator, GraphID
import pytest
@pytest.fixture
def graph_id_generator():
return GraphIDGenerator()
class TestGetNextId:
def test_empty_string_generator(self, graph_id_generator):
"""Test the graph id generator for an empty string type."""
assert graph_id_generator.get_next_id("") == "1"
assert graph_id_generator.get_next_id("") == "2"
def test_normal_string_generator(self, graph_id_generator):
""""Test the graph id generator for a normal string type."""
assert graph_id_generator.get_next_id("add") == "add1"
assert graph_id_generator.get_next_id("add") == "add2"
def test_different_strings_generator(self, graph_id_generator):
"""Test the graph id generator for different strings."""
assert graph_id_generator.get_next_id("sub") == "sub1"
assert graph_id_generator.get_next_id("mul") == "mul1"
assert graph_id_generator.get_next_id("sub") == "sub2"
assert graph_id_generator.get_next_id("mul") == "mul2"
File moved
from b_asic.core_operations import Constant, Addition
from b_asic.signal import Signal
from b_asic.port import InputPort, OutputPort
import pytest
class TestTraverse:
def test_traverse_single_tree(self, operation):
"""Traverse a tree consisting of one operation."""
constant = Constant(None)
assert list(constant.traverse()) == [constant]
def test_traverse_tree(self, operation_tree):
"""Traverse a basic addition tree with two constants."""
assert len(list(operation_tree.traverse())) == 3
def test_traverse_large_tree(self, large_operation_tree):
"""Traverse a larger tree."""
assert len(list(large_operation_tree.traverse())) == 7
def test_traverse_type(self, large_operation_tree):
traverse = list(large_operation_tree.traverse())
assert len(list(filter(lambda type_: isinstance(type_, Addition), traverse))) == 3
assert len(list(filter(lambda type_: isinstance(type_, Constant), traverse))) == 4
def test_traverse_loop(self, operation_tree):
add_oper_signal = Signal()
operation_tree._output_ports[0].add_signal(add_oper_signal)
operation_tree._input_ports[0].remove_signal(add_oper_signal)
operation_tree._input_ports[0].add_signal(add_oper_signal)
assert len(list(operation_tree.traverse())) == 2
"""
B-ASIC test suite for OutputPort.
"""
from b_asic import OutputPort, InputPort, Signal
import pytest
@pytest.fixture
def output_port():
return OutputPort(0, None)
@pytest.fixture
def input_port():
return InputPort(0, None)
@pytest.fixture
def list_of_input_ports():
return [InputPort(_, None) for _ in range(0,3)]
class TestConnect:
def test_multiple_ports(self, output_port, list_of_input_ports):
"""Can multiple ports connect to an output port?"""
for port in list_of_input_ports:
output_port.connect(port)
assert output_port.signal_count() == len(list_of_input_ports)
def test_same_port(self, output_port, list_of_input_ports):
"""Check error handing."""
output_port.connect(list_of_input_ports[0])
with pytest.raises(AssertionError):
output_port.connect(list_of_input_ports[0])
assert output_port.signal_count() == 2
class TestAddSignal:
def test_dangling(self, output_port):
s = Signal()
output_port.add_signal(s)
assert output_port.signal_count() == 1
def test_with_destination(self, output_port, input_port):
s = Signal(destination=input_port)
output_port.add_signal(s)
assert output_port.connected_ports == [s.destination]
class TestDisconnect:
def test_multiple_ports(self, output_port, list_of_input_ports):
"""Can multiple ports disconnect from OutputPort?"""
for port in list_of_input_ports:
output_port.connect(port)
for port in list_of_input_ports:
output_port.disconnect(port)
assert output_port.signal_count() == 3
assert output_port.connected_ports == []
class TestRemoveSignal:
def test_one_signal(self, output_port, input_port):
s = output_port.connect(input_port)
output_port.remove_signal(s)
assert output_port.signal_count() == 0
assert output_port.signals == []
assert output_port.connected_ports == []
def test_multiple_signals(self, output_port, list_of_input_ports):
"""Can multiple signals disconnect from OutputPort?"""
sigs = []
for port in list_of_input_ports:
sigs.append(output_port.connect(port))
for sig in sigs:
output_port.remove_signal(sig)
assert output_port.signal_count() == 0
assert output_port.signals == []
File moved
from b_asic.core_operations import Constant, Addition
from b_asic.signal import Signal
from b_asic.port import InputPort, OutputPort
import pytest
def test_traverse_single_tree(operation):
"""Traverse a tree consisting of one operation."""
constant = Constant(None)
assert list(constant.traverse()) == [constant]
def test_traverse_tree(operation_tree):
"""Traverse a basic addition tree with two constants."""
assert len(list(operation_tree.traverse())) == 3
def test_traverse_large_tree(large_operation_tree):
"""Traverse a larger tree."""
assert len(list(large_operation_tree.traverse())) == 7
def test_traverse_type(large_operation_tree):
traverse = list(large_operation_tree.traverse())
assert len(list(filter(lambda type_: isinstance(type_, Addition), traverse))) == 3
assert len(list(filter(lambda type_: isinstance(type_, Constant), traverse))) == 4
def test_traverse_loop(operation_tree):
add_oper_signal = Signal()
operation_tree._output_ports[0].add_signal(add_oper_signal)
operation_tree._input_ports[0].remove_signal(add_oper_signal)
operation_tree._input_ports[0].add_signal(add_oper_signal)
assert len(list(operation_tree.traverse())) == 2
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment