blob: d48bb48b0c57a9a1b8a171419fe6d7e26ec28ba9 (
plain) (
blame)
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
63
64
65
66
67
68
69
|
import base64
import json
import tempfile
from tests.unit import base
from chirp import chirp_common
from chirp import directory
class TestDirectory(base.BaseTest):
def setUp(self):
super(TestDirectory, self).setUp()
directory.enable_reregistrations()
class FakeAlias(chirp_common.Alias):
VENDOR = 'Taylor'
MODEL = 'Barmaster 2000'
VARIANT = 'A'
@directory.register
class FakeRadio(chirp_common.FileBackedRadio):
VENDOR = 'Dan'
MODEL = 'Foomaster 9000'
VARIANT = 'R'
ALIASES = [FakeAlias]
@classmethod
def match_model(cls, file_data, image_file):
return file_data == b'thisisrawdata'
self.test_class = FakeRadio
def _test_detect_finds_our_class(self, tempfn):
radio = directory.get_radio_by_image(tempfn)
self.assertTrue(isinstance(radio, self.test_class))
return radio
def test_detect_with_no_metadata(self):
with tempfile.NamedTemporaryFile() as f:
f.write(b'thisisrawdata')
f.flush()
self._test_detect_finds_our_class(f.name)
def test_detect_with_metadata_base_class(self):
with tempfile.NamedTemporaryFile() as f:
f.write(b'thisisrawdata')
f.write(self.test_class.MAGIC + b'-')
f.write(self.test_class._make_metadata())
f.flush()
self._test_detect_finds_our_class(f.name)
def test_detect_with_metadata_alias_class(self):
with tempfile.NamedTemporaryFile() as f:
f.write(b'thisisrawdata')
f.write(self.test_class.MAGIC + b'-')
FakeAlias = self.test_class.ALIASES[0]
fake_metadata = base64.b64encode(json.dumps(
{'vendor': FakeAlias.VENDOR,
'model': FakeAlias.MODEL,
'variant': FakeAlias.VARIANT,
}).encode())
f.write(fake_metadata)
f.flush()
radio = self._test_detect_finds_our_class(f.name)
self.assertEqual('Taylor', radio.VENDOR)
self.assertEqual('Barmaster 2000', radio.MODEL)
self.assertEqual('A', radio.VARIANT)
|