File: test_OTF2_AttributeList.py

package info (click to toggle)
otf2 3.1.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 29,000 kB
  • sloc: ansic: 92,997; python: 16,977; cpp: 9,057; sh: 6,299; makefile: 238; awk: 54
file content (99 lines) | stat: -rw-r--r-- 4,074 bytes parent folder | download | duplicates (3)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/env python

import unittest

import _otf2


class TestOTF2AttributeList(unittest.TestCase):
    def test_1_new_delete(self):
        attr_list = _otf2.AttributeList_New()
        self.assertIsNotNone(attr_list)
        _otf2.AttributeList_Delete(attr_list)

    def test_2_add_get_pop(self):
        attr_list = _otf2.AttributeList_New()
        self.assertIsNotNone(attr_list)
        attr = _otf2.AttributeValue()
        attr.uint32 = 1
        _otf2.AttributeList_AddAttribute(attr_list, 42, _otf2.TYPE_UINT32, attr)

        res = _otf2.AttributeList_TestAttributeByID(attr_list, 42)
        self.assertTrue(res, "test id")

        number_of_elements = _otf2.AttributeList_GetNumberOfElements(attr_list)
        self.assertEqual(number_of_elements, 1, "incorrect number of elements")

        # C-style
        type_ = _otf2.Type()
        id_ = _otf2.AttributeRef()
        _otf2.AttributeList_GetAttributeByID(attr_list, 42, type_, attr)
        self.assertEqual(type_, _otf2.TYPE_UINT32, "incorrect type")
        self.assertNotEqual(type_, _otf2.TYPE_INT32, "incorrect type matches")
        self.assertEqual(attr.uint32, 1, "incorrect value")

        _otf2.AttributeList_GetAttributeByIndex(attr_list, 0, id_, type_, attr)
        self.assertEqual(id_.value, 42, "incorrect id")
        self.assertEqual(type_, _otf2.TYPE_UINT32, "incorrect type")
        self.assertEqual(attr.uint32, 1, "incorrect value")

        # Python-style
        (type_, attr) = _otf2.AttributeList_GetAttributeByID(attr_list, 42)
        self.assertEqual(type_, _otf2.TYPE_UINT32, "incorrect type")
        self.assertNotEqual(type_, _otf2.TYPE_INT32, "incorrect type matches")
        self.assertEqual(attr.uint32, 1, "incorrect value")

        (id_, type_, attr) = _otf2.AttributeList_GetAttributeByIndex(attr_list, 0)
        self.assertEqual(id_, 42, "incorrect id")
        self.assertEqual(type_, _otf2.TYPE_UINT32, "incorrect type")
        self.assertEqual(attr.uint32, 1, "incorrect value")

        (id, type, attr) = _otf2.AttributeList_PopAttribute(attr_list)
        self.assertEqual(id_, 42, "incorrect id")
        self.assertEqual(type_, _otf2.TYPE_UINT32, "incorrect type")
        self.assertEqual(attr.uint32, 1, "incorrect value")

        number_of_elements = _otf2.AttributeList_GetNumberOfElements(attr_list)
        self.assertEqual(number_of_elements, 0, "incorrect number of elements")

        _otf2.AttributeList_Delete(attr_list)

    def test_3_random_remove(self):
        attr_list = _otf2.AttributeList_New()
        self.assertIsNotNone(attr_list)

        ids_to_add = [4, 8, 15, 16, 23, 42]
        # from the end, from the front, from the middle, as index into ids_to_add
        ids_to_remove = [5, 0, 2, 1, 4, 3]

        attr = _otf2.AttributeValue()

        for (i, id_to_add) in enumerate(ids_to_add):
            attr.uint32 = i
            _otf2.AttributeList_AddAttribute(attr_list, id_to_add, _otf2.TYPE_UINT32, attr)

            res = _otf2.AttributeList_TestAttributeByID(attr_list, id_to_add);
            self.assertTrue(res, "failed test id")

            number_of_elements = _otf2.AttributeList_GetNumberOfElements(attr_list)
            self.assertEqual(number_of_elements, i + 1, "incorrect number of elements")

        for (i, id_to_remove) in enumerate(ids_to_remove):
            id_to_add = ids_to_add[id_to_remove]
            (type_, attr) = _otf2.AttributeList_GetAttributeByID(attr_list, id_to_add)
            self.assertEqual(type_, _otf2.TYPE_UINT32)
            self.assertEqual(attr.uint32, id_to_remove)

            _otf2.AttributeList_RemoveAttribute(attr_list, id_to_add)

            ret = _otf2.AttributeList_TestAttributeByID(attr_list, id_to_add)
            self.assertFalse(ret, "found removed test id")

            number_of_elements = _otf2.AttributeList_GetNumberOfElements(attr_list)
            self.assertEqual(number_of_elements, len(ids_to_add) - i - 1, "incorrect number of elements")

        _otf2.AttributeList_Delete(attr_list)


if __name__ == '__main__':
    unittest.main()