Newer
Older

Ivar Härnqvist
committed
import pytest
import numpy as np
from b_asic import SFG, Output, Simulation
Kevin Scott
committed
class TestRunFor:
def test_with_lambdas_as_input(self, sfg_two_inputs_two_outputs):

Ivar Härnqvist
committed
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
simulation = Simulation(sfg_two_inputs_two_outputs, [lambda n: n + 3, lambda n: 1 + n * 2], save_results = True)
output = simulation.run_for(101)
assert output[0] == 304
assert output[1] == 505
assert simulation.results[100]["0"] == 304
assert simulation.results[100]["1"] == 505
assert simulation.results[0]["in1"] == 3
assert simulation.results[0]["in2"] == 1
assert simulation.results[0]["add1"] == 4
assert simulation.results[0]["add2"] == 5
assert simulation.results[0]["0"] == 4
assert simulation.results[0]["1"] == 5
assert simulation.results[1]["in1"] == 4
assert simulation.results[1]["in2"] == 3
assert simulation.results[1]["add1"] == 7
assert simulation.results[1]["add2"] == 10
assert simulation.results[1]["0"] == 7
assert simulation.results[1]["1"] == 10
assert simulation.results[2]["in1"] == 5
assert simulation.results[2]["in2"] == 5
assert simulation.results[2]["add1"] == 10
assert simulation.results[2]["add2"] == 15
assert simulation.results[2]["0"] == 10
assert simulation.results[2]["1"] == 15
assert simulation.results[3]["in1"] == 6
assert simulation.results[3]["in2"] == 7
assert simulation.results[3]["add1"] == 13
assert simulation.results[3]["add2"] == 20
assert simulation.results[3]["0"] == 13
assert simulation.results[3]["1"] == 20
Kevin Scott
committed
def test_with_numpy_arrays_as_input(self, sfg_two_inputs_two_outputs):

Ivar Härnqvist
committed
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
input0 = np.array([5, 9, 25, -5, 7])
input1 = np.array([7, 3, 3, 54, 2])
simulation = Simulation(sfg_two_inputs_two_outputs, [input0, input1])
simulation.save_results = True
output = simulation.run_for(5)
assert output[0] == 9
assert output[1] == 11
assert simulation.results[0]["in1"] == 5
assert simulation.results[0]["in2"] == 7
assert simulation.results[0]["add1"] == 12
assert simulation.results[0]["add2"] == 19
assert simulation.results[0]["0"] == 12
assert simulation.results[0]["1"] == 19
assert simulation.results[1]["in1"] == 9
assert simulation.results[1]["in2"] == 3
assert simulation.results[1]["add1"] == 12
assert simulation.results[1]["add2"] == 15
assert simulation.results[1]["0"] == 12
assert simulation.results[1]["1"] == 15
assert simulation.results[2]["in1"] == 25
assert simulation.results[2]["in2"] == 3
assert simulation.results[2]["add1"] == 28
assert simulation.results[2]["add2"] == 31
assert simulation.results[2]["0"] == 28
assert simulation.results[2]["1"] == 31
assert simulation.results[3]["in1"] == -5
assert simulation.results[3]["in2"] == 54
assert simulation.results[3]["add1"] == 49
assert simulation.results[3]["add2"] == 103
assert simulation.results[3]["0"] == 49
assert simulation.results[3]["1"] == 103
assert simulation.results[4]["0"] == 9
assert simulation.results[4]["1"] == 11
Kevin Scott
committed
def test_with_numpy_array_overflow(self, sfg_two_inputs_two_outputs):

Ivar Härnqvist
committed
input0 = np.array([5, 9, 25, -5, 7])
input1 = np.array([7, 3, 3, 54, 2])
simulation = Simulation(sfg_two_inputs_two_outputs, [input0, input1])
simulation.run_for(5)
with pytest.raises(IndexError):
simulation.run_for(1)
Kevin Scott
committed
def test_delay(self, sfg_delay):

Ivar Härnqvist
committed
simulation = Simulation(sfg_delay, save_results = True)
simulation.set_input(0, [5, -2, 25, -6, 7, 0])
simulation.run_for(6)
assert simulation.results[0]["0"] == 0
assert simulation.results[1]["0"] == 5
assert simulation.results[2]["0"] == -2
assert simulation.results[3]["0"] == 25
assert simulation.results[4]["0"] == -6
assert simulation.results[5]["0"] == 7
Kevin Scott
committed
class TestRun:
def test_nested(self, sfg_nested):
input0 = np.array([5, 9])
input1 = np.array([7, 3])
simulation = Simulation(sfg_nested, [input0, input1])
output0 = simulation.run()
output1 = simulation.run()
assert output0[0] == 11405
assert output1[0] == 4221

Ivar Härnqvist
committed
Kevin Scott
committed
def test_accumulator(self, sfg_accumulator):

Ivar Härnqvist
committed
data_in = np.array([5, -2, 25, -6, 7, 0])
reset = np.array([0, 0, 0, 1, 0, 0])
simulation = Simulation(sfg_accumulator, [data_in, reset])
output0 = simulation.run()
output1 = simulation.run()
output2 = simulation.run()
output3 = simulation.run()
output4 = simulation.run()
output5 = simulation.run()
assert output0[0] == 0
assert output1[0] == 5
assert output2[0] == 3
assert output3[0] == 28
assert output4[0] == 0
Kevin Scott
committed
assert output5[0] == 7
def test_simple_filter(self, simple_filter):
input0 = np.array([1, 2, 3, 4, 5])
simulation = Simulation(simple_filter, [input0], save_results=True)
output0 = [simulation.run()[0] for _ in range(len(input0))]
assert output0 == [0, 1.0, 2.5, 4.25, 6.125]