aboutsummaryrefslogtreecommitdiff
path: root/test/sca/test_traceset.py
blob: 6d487072fae88948e01847334ed60c50943e0340 (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import os.path
import tempfile
from unittest import TestCase

from pyecsca.sca import TraceSet, InspectorTraceSet, ChipWhispererTraceSet


class TraceSetTests(TestCase):

    def test_create(self):
        self.assertIsNotNone(TraceSet())
        self.assertIsNotNone(InspectorTraceSet())
        self.assertIsNotNone(ChipWhispererTraceSet())


class InspectorTraceSetTests(TestCase):

    def test_load_fname(self):
        result = InspectorTraceSet("test/data/example.trs")
        self.assertIsNotNone(result)
        self.assertEqual(result.global_title, "Example trace set")
        self.assertEqual(len(result), 10)
        self.assertEqual(len(list(result)), 10)
        self.assertIn("InspectorTraceSet", str(result))
        self.assertIs(result[0].trace_set, result)
        self.assertEqual(result.sampling_frequency, 12500000)

    def test_load_file(self):
        with open("test/data/example.trs", "rb") as f:
            self.assertIsNotNone(InspectorTraceSet(f))

    def test_load_bytes(self):
        with open("test/data/example.trs", "rb") as f:
            self.assertIsNotNone(InspectorTraceSet(f.read()))

    def test_get_bytes(self):
        self.assertIsNotNone(bytes(InspectorTraceSet("test/data/example.trs")))

    def test_keep_traces(self):
        trace_set = InspectorTraceSet("test/data/example.trs")
        self.assertIsNotNone(trace_set.raw)
        trace_set = InspectorTraceSet("test/data/example.trs", keep_raw_traces=False)
        self.assertIsNone(trace_set.raw)

    def test_save(self):
        trace_set = InspectorTraceSet("test/data/example.trs")
        with tempfile.TemporaryDirectory() as dirname:
            path = os.path.join(dirname, "out.trs")
            trace_set.save(path)
            self.assertTrue(os.path.exists(path))
            self.assertIsNotNone(InspectorTraceSet(path))

        with self.assertRaises(ValueError):
            trace_set.save(None)


class ChipWhispererTraceSetTest(TestCase):

    def test_load_fname(self):
        result = ChipWhispererTraceSet("test/data/", "chipwhisperer")
        self.assertIsNotNone(result)
        self.assertEqual(len(result), 2)