Skip to content
Snippets Groups Projects
Commit e5c68724 authored by Oscar Gustafsson's avatar Oscar Gustafsson :bicyclist:
Browse files

Refactor GUI load for testing and add test

parent 5620f851
No related branches found
No related tags found
1 merge request!98Refactor GUI load for testing and add test
Pipeline #88004 passed
......@@ -210,18 +210,22 @@ class MainWindow(QMainWindow):
self.logger.info(f"Saved SFG to path: {module}.")
def save_work(self):
def save_work(self, arg):
print("Save: ", arg)
self.sfg_widget = SelectSFGWindow(self)
self.sfg_widget.show()
# Wait for input to dialog.
self.sfg_widget.ok.connect(self._save_work)
def load_work(self):
def load_work(self, arg):
print("Load: ", arg)
module, accepted = QFileDialog().getOpenFileName()
if not accepted:
return
self._load_from_file(module)
def _load_from_file(self, module):
self.logger.info(f"Loading SFG from path: {module}.")
try:
sfg, positions = python_to_sfg(module)
......@@ -244,6 +248,12 @@ class MainWindow(QMainWindow):
return
sfg.name = name
self._load_sfg(sfg, positions)
self.logger.info(f"Loaded SFG from path: {module}.")
def _load_sfg(self, sfg, positions=None):
if positions is None:
positions = {}
for op in sfg.split():
self.create_operation(
......@@ -285,7 +295,6 @@ class MainWindow(QMainWindow):
self.opToSFG[self.operationDragDict[op]] = sfg
self.sfg_dict[sfg.name] = sfg
self.logger.info(f"Loaded SFG from path: {module}.")
self.update()
def exit_app(self):
......
"""
B-ASIC automatically generated SFG file.
Name: twotapfir
Last saved: 2023-01-23 11:29:09.423052.
"""
from b_asic import SFG, Signal, Input, Output, ConstantMultiplication, Delay, Input, Output, Addition
# Inputs:
in1 = Input(name="")
# Outputs:
out1 = Output(name="")
# Operations:
cmul1 = ConstantMultiplication(value=0.5, name="cmul", latency_offsets={'in0': None, 'out0': None})
in1 = Input(name="")
add1 = Addition(name="", latency_offsets={'in0': None, 'in1': None, 'out0': None})
cmul2 = ConstantMultiplication(value=0.5, name="cmul2", latency_offsets={'in0': None, 'out0': None})
out1 = Output(name="")
t1 = Delay(initial_value=0, name="")
in1 = Input(name="")
# Signals:
Signal(source=cmul1.output(0), destination=add1.input(1))
Signal(source=in1.output(0), destination=cmul1.input(0))
Signal(source=in1.output(0), destination=t1.input(0))
Signal(source=add1.output(0), destination=out1.input(0))
Signal(source=cmul2.output(0), destination=add1.input(0))
Signal(source=t1.output(0), destination=cmul2.input(0))
twotapfir = SFG(inputs=[in1], outputs=[out1], name='twotapfir')
# SFG Properties:
prop = {'name':twotapfir}
positions = {'in1': (-264.0, -202.0), 't1': (-135.0, -204.0), 'out1': (216.0, 92.0), 'cmul1': (-181.0, -67.0), 'cmul2': (-27.0, -66.0), 'add1': (91.0, 93.0)}
......@@ -3,4 +3,21 @@ from test.fixtures.port import *
from test.fixtures.signal import signal, signals
from test.fixtures.signal_flow_graph import *
from distutils import dir_util
import os
import pytest
@pytest.fixture
def datadir(tmpdir, request):
print(tmpdir, request)
filename = request.module.__file__
print(filename)
test_dir, ext = os.path.splitext(filename)
print(test_dir, ext)
if os.path.isdir(test_dir):
dir_util.copy_tree(test_dir, str(tmpdir))
return tmpdir
......@@ -11,3 +11,15 @@ def test_start(qtbot):
qtbot.addWidget(widget)
widget.exit_app()
def test_load(qtbot, datadir):
widget = GUI.MainWindow()
qtbot.addWidget(widget)
widget._load_from_file(datadir.join('twotapfir.py'))
assert 'twotapfir' in widget.sfg_dict
widget.clear_workspace()
assert 'twotapfir' not in widget.sfg_dict
assert not widget.sfg_dict
widget.exit_app()
"""
B-ASIC automatically generated SFG file.
Name: twotapfir
Last saved: 2023-01-23 11:29:09.423052.
"""
from b_asic import (
SFG,
Signal,
Input,
Output,
ConstantMultiplication,
Delay,
Input,
Output,
Addition,
)
# Inputs:
in1 = Input(name="")
# Outputs:
out1 = Output(name="")
# Operations:
cmul1 = ConstantMultiplication(
value=0.5, name="cmul", latency_offsets={'in0': None, 'out0': None}
)
in1 = Input(name="")
add1 = Addition(
name="", latency_offsets={'in0': None, 'in1': None, 'out0': None}
)
cmul2 = ConstantMultiplication(
value=0.5, name="cmul2", latency_offsets={'in0': None, 'out0': None}
)
out1 = Output(name="")
t1 = Delay(initial_value=0, name="")
in1 = Input(name="")
# Signals:
Signal(source=cmul1.output(0), destination=add1.input(1))
Signal(source=in1.output(0), destination=cmul1.input(0))
Signal(source=in1.output(0), destination=t1.input(0))
Signal(source=add1.output(0), destination=out1.input(0))
Signal(source=cmul2.output(0), destination=add1.input(0))
Signal(source=t1.output(0), destination=cmul2.input(0))
twotapfir = SFG(inputs=[in1], outputs=[out1], name='twotapfir')
# SFG Properties:
prop = {'name': twotapfir}
positions = {
'in1': (-264.0, -202.0),
't1': (-135.0, -204.0),
'out1': (216.0, 92.0),
'cmul1': (-181.0, -67.0),
'cmul2': (-27.0, -66.0),
'add1': (91.0, 93.0),
}
......@@ -2,6 +2,7 @@ import pytest
from b_asic.core_operations import Addition, ConstantMultiplication
from b_asic.schedule import Schedule
try:
import b_asic.scheduler_gui as GUI
except ImportError:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment