Code Duplication    Length = 34-36 lines in 3 locations

starstruct/tests/test_elementbase.py 1 location

@@ 11-46 (lines=36) @@
8
9
10
# pylint: disable=line-too-long,invalid-name,no-self-use
11
class TestElementBase(unittest.TestCase):
12
    """ElementBase module tests"""
13
14
    def test_valid(self):
15
        """Test field formats that are valid ElementBase elements."""
16
17
        test_fields = [
18
            ('a', 'd'),     # double
19
            ('b', 'f'),     # float
20
            ('e', '?'),     # bool: 0, 1
21
        ]
22
23
        for field in test_fields:
24
            with self.subTest(field):  # pylint: disable=no-member
25
                out = ElementBase.valid(field)
26
                self.assertTrue(out)
27
28
    def test_not_valid(self):
29
        """Test field formats that are not valid ElementBase elements."""
30
31
        test_fields = [
32
            ('a', '4x'),    # 4 pad bytes
33
            ('b', 'z'),     # invalid
34
            ('c', '1'),     # invalid
35
            ('d', '9S'),    # invalid (must be lowercase)
36
            ('e', 'b'),     # signed byte: -128, 127
37
            ('f', 'H'),     # unsigned short: 0, 65535
38
            ('g', '10s'),   # 10 byte string
39
            ('h', 'L'),     # unsigned long: 0, 2^32-1
40
            ('i', '/'),     # invalid
41
        ]
42
43
        for field in test_fields:
44
            with self.subTest(field):  # pylint: disable=no-member
45
                out = ElementBase.valid(field)
46
                self.assertFalse(out)
47

starstruct/tests/test_elementpad.py 1 location

@@ 11-45 (lines=35) @@
8
9
10
# pylint: disable=line-too-long,invalid-name
11
class TestElementPad(unittest.TestCase):
12
    """ElementPad module tests"""
13
14
    def test_valid(self):
15
        """Test field formats that are valid ElementPad elements."""
16
17
        test_fields = [
18
            ('a', '4x'),   # 4 pad bytes
19
            ('a', 'x'),    # 1 pad bytes
20
        ]
21
22
        for field in test_fields:
23
            with self.subTest(field):  # pylint: disable=no-member
24
                out = ElementPad.valid(field)
25
                self.assertTrue(out)
26
27
    def test_not_valid(self):
28
        """Test field formats that are not valid ElementPad elements."""
29
30
        test_fields = [
31
            ('b', 'z'),     # invalid
32
            ('c', '1'),     # invalid
33
            ('d', '9S'),    # invalid (must be lowercase)
34
            ('e', '/'),     # invalid
35
            ('a', 'b'),     # signed byte: -128, 127
36
            ('b', 'H'),     # unsigned short: 0, 65535
37
            ('c', '10s'),   # 10 byte string
38
            ('d', 'L'),     # unsigned long: 0, 2^32-1
39
            ('e', '?'),     # bool: 0, 1
40
        ]
41
42
        for field in test_fields:
43
            with self.subTest(field):  # pylint: disable=no-member
44
                out = ElementPad.valid(field)
45
                self.assertFalse(out)
46

starstruct/tests/test_elementnum.py 1 location

@@ 11-44 (lines=34) @@
8
9
10
# pylint: disable=line-too-long,invalid-name
11
class TestElementNum(unittest.TestCase):
12
    """ElementNum module tests"""
13
14
    def test_valid(self):
15
        """Test field formats that are valid ElementNum elements."""
16
17
        test_fields = [
18
            ('a', '3b'),    # 3 byte number: 0, 2^24-1
19
            ('b', 'H'),     # unsigned short: 0, 65535
20
            ('c', '4Q'),    # 32 signed byte number: (super big number)
21
            ('d', 'l'),     # signed long: -2^31, 2^31-1
22
        ]
23
24
        for field in test_fields:
25
            with self.subTest(field):  # pylint: disable=no-member
26
                out = ElementNum.valid(field)
27
                self.assertTrue(out)
28
29
    def test_not_valid(self):
30
        """Test field formats that are not valid ElementNum elements."""
31
32
        test_fields = [
33
            ('a', '4x'),    # 4 pad bytes
34
            ('b', 'z'),     # invalid
35
            ('c', '1'),     # invalid
36
            ('d', '9S'),    # invalid (must be lowercase)
37
            ('e', '/'),     # invalid
38
            ('f', '?'),     # invalid
39
        ]
40
41
        for field in test_fields:
42
            with self.subTest(field):  # pylint: disable=no-member
43
                out = ElementNum.valid(field)
44
                self.assertFalse(out)
45