blob: 4d312a3d9d495ea392fd2cd1e714c0a395c98fe6 (
plain)
1
2
3
4
5
6
7
8
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
|
from typing import Dict
import matplotlib.pyplot as plt
import pytest
from importlib_resources import files, as_file
from pyecsca.sca import Trace
cases: Dict[str, int] = {}
@pytest.fixture()
def plot_name(request):
def namer():
test_name = f"{request.module.__name__}.{request.node.name}"
case_id = cases.setdefault(test_name, 0) + 1
cases[test_name] = case_id
return test_name + str(case_id)
return namer
@pytest.fixture()
def plot_path(plot_name):
def namer():
with as_file(files("test").joinpath("plots", plot_name())) as fname:
return fname
return namer
@pytest.fixture()
def plot(plot_path):
def plotter(*traces: Trace, **kwtraces: Trace):
fig = plt.figure()
ax = fig.add_subplot(111)
for i, trace in enumerate(traces):
ax.plot(trace.samples, label=str(i))
for name, trace in kwtraces.items():
ax.plot(trace.samples, label=name)
ax.legend(loc="best")
fname = plot_path()
plt.savefig(fname.parent / (fname.name + ".png"))
return plotter
|