From 1d284ff314b3d87eb65965e6d8d263001ba831c0 Mon Sep 17 00:00:00 2001 From: Mikael Henriksson <mike.zx@hotmail.com> Date: Wed, 15 Feb 2023 17:55:04 +0100 Subject: [PATCH] Add proper testing to ProcessCollection --- b_asic/resources.py | 10 ++- .../baseline/test_draw_process_collection.png | Bin 0 -> 10292 bytes test/conftest.py | 1 + test/fixtures/resources.py | 36 ++++++++ test/test_resources.py | 82 +++--------------- 5 files changed, 57 insertions(+), 72 deletions(-) create mode 100644 test/baseline/test_draw_process_collection.png create mode 100644 test/fixtures/resources.py diff --git a/b_asic/resources.py b/b_asic/resources.py index 2c55e0af..eaed928f 100644 --- a/b_asic/resources.py +++ b/b_asic/resources.py @@ -65,7 +65,12 @@ def draw_exclusion_graph_coloring( else: node_color_dict = {k: color_list[v] for k, v in color_dict.items()} node_color_list = [node_color_dict[node] for node in exclusion_graph] - nx.draw_networkx(exclusion_graph, node_color=node_color_list, ax=ax) + nx.draw_networkx( + exclusion_graph, + node_color=node_color_list, + ax=ax, + pos=nx.spring_layout(exclusion_graph, seed=1), + ) class ProcessCollection: @@ -79,7 +84,7 @@ class ProcessCollection: def __init__(self, collection: Optional[Set[Process]] = None): if collection is None: - self._collection = set[Process]() + self._collection: Set[Process] = set() else: self._collection = collection @@ -182,7 +187,6 @@ class ProcessCollection: va="center", ) _ax.grid(True) - _ax.set_title(f'Schedule time: {schedule_time}') _ax.xaxis.set_major_locator(MaxNLocator(integer=True)) _ax.yaxis.set_major_locator(MaxNLocator(integer=True)) diff --git a/test/baseline/test_draw_process_collection.png b/test/baseline/test_draw_process_collection.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab1996784015b6d0bc3e5bc68e0f3ae21c64d94 GIT binary patch literal 10292 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 FO#p;!n4bUu literal 0 HcmV?d00001 diff --git a/test/conftest.py b/test/conftest.py index 179a82c2..138fefe0 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -2,6 +2,7 @@ import os from distutils import dir_util from test.fixtures.operation_tree import * from test.fixtures.port import * +from test.fixtures.resources import * from test.fixtures.schedule import * from test.fixtures.signal import signal, signals from test.fixtures.signal_flow_graph import * diff --git a/test/fixtures/resources.py b/test/fixtures/resources.py new file mode 100644 index 00000000..6317e4cb --- /dev/null +++ b/test/fixtures/resources.py @@ -0,0 +1,36 @@ +import pytest + +from b_asic.process import PlainMemoryVariable +from b_asic.resources import ProcessCollection + + +@pytest.fixture() +def simple_collection(): + NO_PORT = 0 + return ProcessCollection( + { + PlainMemoryVariable(4, NO_PORT, {NO_PORT: 2}), + PlainMemoryVariable(2, NO_PORT, {NO_PORT: 6}), + PlainMemoryVariable(3, NO_PORT, {NO_PORT: 5}), + PlainMemoryVariable(6, NO_PORT, {NO_PORT: 2}), + PlainMemoryVariable(0, NO_PORT, {NO_PORT: 3}), + PlainMemoryVariable(0, NO_PORT, {NO_PORT: 2}), + PlainMemoryVariable(0, NO_PORT, {NO_PORT: 6}), + } + ) + + +@pytest.fixture() +def collection(): + NO_PORT = 0 + return ProcessCollection( + { + PlainMemoryVariable(4, NO_PORT, {NO_PORT: 2}), + PlainMemoryVariable(2, NO_PORT, {NO_PORT: 6}), + PlainMemoryVariable(3, NO_PORT, {NO_PORT: 5}), + PlainMemoryVariable(6, NO_PORT, {NO_PORT: 2}), + PlainMemoryVariable(0, NO_PORT, {NO_PORT: 3}), + PlainMemoryVariable(0, NO_PORT, {NO_PORT: 2}), + PlainMemoryVariable(0, NO_PORT, {NO_PORT: 6}), + } + ) diff --git a/test/test_resources.py b/test/test_resources.py index fb41017d..67f20cc9 100644 --- a/test/test_resources.py +++ b/test/test_resources.py @@ -1,5 +1,3 @@ -from time import sleep - import matplotlib.pyplot as plt import networkx as nx import pytest @@ -7,79 +5,25 @@ import pytest from b_asic.process import PlainMemoryVariable from b_asic.resources import ProcessCollection, draw_exclusion_graph_coloring -NO_PORT = 0 - -# -# Tests to run -# -def test_run(): - # TestProcessCollectionPlainMemoryVariable().test_draw_proces_collection() - TestProcessCollectionPlainMemoryVariable().test_split_memory_variable() - class TestProcessCollectionPlainMemoryVariable: - def __init__(self) -> None: - self.collection = ProcessCollection( - { - PlainMemoryVariable(4, NO_PORT, {NO_PORT: 2}), - PlainMemoryVariable(2, NO_PORT, {NO_PORT: 6}), - PlainMemoryVariable(3, NO_PORT, {NO_PORT: 5}), - PlainMemoryVariable(6, NO_PORT, {NO_PORT: 2}), - PlainMemoryVariable(0, NO_PORT, {NO_PORT: 3}), - PlainMemoryVariable(0, NO_PORT, {NO_PORT: 2}), - PlainMemoryVariable(0, NO_PORT, {NO_PORT: 6}), - } - ) + @pytest.mark.mpl_image_compare(style='mpl20') + def test_draw_process_collection(self, simple_collection): + fig, ax = plt.subplots() + simple_collection.draw_lifetime_chart(ax=ax) + return fig - def test_draw_proces_collection(self): + def test_draw_proces_collection(self, simple_collection): _, ax = plt.subplots(1, 2) - self.collection.draw_lifetime_chart(schedule_time=8, ax=ax[0]) - exclusion_graph = self.collection.create_exclusion_graph_from_overlap() + simple_collection.draw_lifetime_chart(schedule_time=8, ax=ax[0]) + exclusion_graph = ( + simple_collection.create_exclusion_graph_from_overlap() + ) color_dict = nx.coloring.greedy_color(exclusion_graph) draw_exclusion_graph_coloring(exclusion_graph, color_dict, ax=ax[1]) - plt.show() - def test_split_memory_variable(self): - collection_split = self.collection.split( + def test_split_memory_variable(self, simple_collection): + collection_split = simple_collection.split( read_ports=1, write_ports=1, total_ports=2 ) - _, ax = plt.subplots(1, len(collection_split) + 1) - # print(f'Length: {len(ax)}') - # assert(False) - self.collection.draw_lifetime_chart(ax=ax[0]) - ax[0].set_title("Original") - for idx, collection in enumerate(collection_split): - collection.draw_lifetime_chart(ax=ax[idx + 1]) - plt.show() - - -# def test_draw_process_collection(): -# collection = ProcessCollection({ -# PlainMemoryVariable(4, NO_PORT, {NO_PORT: 2}), -# PlainMemoryVariable(2, NO_PORT, {NO_PORT: 6}), -# PlainMemoryVariable(3, NO_PORT, {NO_PORT: 5}), -# PlainMemoryVariable(6, NO_PORT, {NO_PORT: 2}), -# PlainMemoryVariable(0, NO_PORT, {NO_PORT: 3}), -# PlainMemoryVariable(0, NO_PORT, {NO_PORT: 2}), -# PlainMemoryVariable(0, NO_PORT, {NO_PORT: 6}), -# }) -# _, ax = plt.subplots(1, 2) -# collection.draw_lifetime_chart(schedule_time=8, ax=ax[0]) -# exclusion_graph = collection.create_exclusion_graph_from_overlap() -# color_dict = nx.greedy_color(exclusion_graph) -# draw_exclusion_graph_coloring(exclusion_graph, color_dict, ax=ax[1]) -# plt.show() -# -# def test_memory_split(): - - -# @pytest.mark.mpl_image_compare(remove_text=True, style='mpl20') - -# def test_create_exclusion_graph_overlap(): -# collection = ProcessCollection({ -# PlainMemoryVariable(4, NO_PORT, {NO_PORT: 2}), -# PlainMemoryVariable(2, NO_PORT, {NO_PORT: 6}), -# }) -# exclusion_graph = collection.create_exclusion_graph_overlap() -# nx.draw(exclusion_graph) -# plt.show() + assert len(collection_split) == 3 -- GitLab