コード例 #1
0
ファイル: muster.py プロジェクト: neerolyte/selpi
 def update(self, variables: list):
     ranges = []
     datas = []
     for var in variables:
         ranges.append(var.range)
     for range in reduce(ranges):
         logging.debug("query: %s" % range)
         res = self.__protocol.query(range)
         datas.append(Data(range, res))
     for var in variables:
         var.bytes = extract(var.range, datas).bytes
コード例 #2
0
 def test_sorted(self):
     datas = [
         Data(Range(0x1234, 1), b'zz'),
         Data(Range(0x9999, 2), b'aaaa'),
         Data(Range(0x0000, 1), b'mm'),
         Data(Range(0x4567, 1), b'aa'),
     ]
     self.maxDiff = None
     self.assertEqual([
         Data(Range(0x0000, 1), b'mm'),
         Data(Range(0x1234, 1), b'zz'),
         Data(Range(0x4567, 1), b'aa'),
         Data(Range(0x9999, 2), b'aaaa'),
     ], sorted(datas))
コード例 #3
0
ファイル: test_extract.py プロジェクト: neerolyte/selpi
class ExtractTest(TestCase):
    @data_provider(lambda: (
        (
            Range(0x0001, 2),
            [
                Data(Range(0x0000, 10), b'1234567890abcdefghij'),
            ],
            Data(Range(0x0001, 2), b'3456'),
        ),
        (
            Range(0x0001, 2),
            [
                Data(Range(0x0001, 4), b'12345678'),
            ],
            Data(Range(0x0001, 2), b'1234'),
        ),
        (Range(0x1234, 4), [
            Data(Range(0x0000, 10), b'aaaaaaaaaaaaaaaaaaaa'),
            Data(Range(0x1230, 10), b'mmmmmmmm78901234mmmm'),
            Data(Range(0x9999, 10), b'zzzzzzzzzzzzzzzzzzzz'),
        ], Data(Range(0x1234, 4), b'78901234')),
    ))
    def test_extract(self, range, datas, expected):
        self.assertEqual(expected, extract(range, datas))

    @data_provider(lambda: (
        (Range(0x0000, 10),
         [Data(Range(0x00010, 10), b'1234567890abcdefghij')]),
        (Range(0x0010, 12),
         [Data(Range(0x00010, 10), b'1234567890abcdefghij')]),
        (Range(0x0011, 5), [Data(Range(0x00010, 5), b'1234567890')]),
        (Range(0xcafe, 1), [Data(Range(0x00010, 5), b'1234567890')]),
    ))
    def test_extract_out_of_range(self, range, datas):
        with self.assertRaises(NotFoundException) as context:
            extract(range, datas)
        self.assertEqual('%s was not found' % range, context.exception.args[0])
コード例 #4
0
 def test_bytes_raises_setter(self, range, bytes, expected):
     data = Data(range)
     with self.assertRaises(ValidationException) as context:
         data.bytes = bytes
     self.assertEqual(expected, context.exception.args[0])
コード例 #5
0
 def test_bytes_setter(self, range: Range, bytes: bytes):
     data = Data(range)
     data.bytes = bytes
     self.assertEqual(bytes, data.bytes)
コード例 #6
0
 def test_bytes_raises_during_init(self):
     with self.assertRaises(ValidationException) as context:
         Data(Range(0x0000, 1), b'1234')
     self.assertEqual('Unable to store 4 bytes to range requiring 2',
                      context.exception.args[0])
コード例 #7
0
 def test_bytes_raises_before_set(self):
     data = Data(Mock())
     with self.assertRaises(NotFoundException) as context:
         data.bytes
     self.assertEqual('Unable to read bytes before property is set',
                      context.exception.args[0])
コード例 #8
0
def extract(range: Range, datas: list) -> Data:
    for data in datas:
        d = _extract(range, data)
        if d:
            return Data(range, d)
    raise NotFoundException("%s was not found" % (range))