• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2021 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14"""Tests for the pw_log_tokenized packed metadata class."""
15
16import unittest
17
18from pw_log_tokenized import Metadata
19
20
21class TestMetadata(unittest.TestCase):
22    """Tests extracting fields from a pw_log_tokenized packed metadata value."""
23
24    def test_zero(self):
25        metadata = Metadata(0)
26        self.assertEqual(metadata.log_level, 0)
27        self.assertEqual(metadata.line, 0)
28        self.assertEqual(metadata.flags, 0)
29        self.assertEqual(metadata.module_token, 0)
30
31    def test_various(self):
32        metadata = Metadata(
33            0xABCD << 16 | 1 << 14 | 1234 << 3 | 5,
34            log_bits=3,
35            line_bits=11,
36            flag_bits=2,
37            module_bits=16,
38        )
39        self.assertEqual(metadata.log_level, 5)
40        self.assertEqual(metadata.line, 1234)
41        self.assertEqual(metadata.flags, 1)
42        self.assertEqual(metadata.module_token, 0xABCD)
43
44    def test_max(self):
45        metadata = Metadata(
46            0xFFFFFFFF, log_bits=3, line_bits=11, flag_bits=2, module_bits=16
47        )
48        self.assertEqual(metadata.log_level, 7)
49        self.assertEqual(metadata.line, 2047)
50        self.assertEqual(metadata.flags, 3)
51        self.assertEqual(metadata.module_token, 0xFFFF)
52
53
54if __name__ == '__main__':
55    unittest.main()
56