File: test_hidden_helpers.py

package info (click to toggle)
python-adb-shell 0.4.4-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 760 kB
  • sloc: python: 3,860; makefile: 191; sh: 124
file content (224 lines) | stat: -rw-r--r-- 9,858 bytes parent folder | download
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
import unittest

from adb_shell import constants
from adb_shell.hidden_helpers import _AdbPacketStore, _AdbTransactionInfo


class TestAdbPacketStore(unittest.TestCase):
    def setUp(self):
        self.packet_store = _AdbPacketStore()

    def test_init(self):
        self.assertEqual(len(self.packet_store), 0)
        self.assertFalse((None, None) in self.packet_store)

    def test_contains(self):
        self.assertFalse((None, None) in self.packet_store)

        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd1", data=b"data1")
        self.assertTrue((0, 1) in self.packet_store)
        self.assertTrue((None, 1) in self.packet_store)
        self.assertFalse((None, 0) in self.packet_store)
        self.assertTrue((0, None) in self.packet_store)
        self.assertFalse((1, None) in self.packet_store)
        self.assertFalse((1, 1) in self.packet_store)
        self.assertTrue((None, None) in self.packet_store)

    def test_put(self):
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd1", data=b"data1")
        self.assertTrue((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 1)

        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd2", data=b"data2")
        self.assertTrue((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 1)

        self.packet_store.put(arg0=1, arg1=0, cmd=b"cmd3", data=b"data3")
        self.assertTrue((1, 0) in self.packet_store)
        self.assertEqual(len(self.packet_store), 2)

        self.packet_store.put(arg0=1, arg1=1, cmd=b"cmd4", data=b"data4")
        self.assertTrue((1, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 3)

        self.packet_store.put(arg0=5, arg1=5, cmd=constants.CLSE, data=b"data5")
        self.assertEqual(len(self.packet_store), 3)
        self.assertFalse((5, 5) in self.packet_store)
        
        self.packet_store.put(arg0=5, arg1=1, cmd=constants.CLSE, data=b"data5")
        self.assertEqual(len(self.packet_store), 3)
        self.assertFalse((5, 1) in self.packet_store)

    def test_get(self):
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd1", data=b"data1")
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd2", data=b"data2")
        self.packet_store.put(arg0=1, arg1=0, cmd=b"cmd3", data=b"data3")
        self.packet_store.put(arg0=1, arg1=1, cmd=b"cmd4", data=b"data4")
        self.packet_store.put(arg0=2, arg1=3, cmd=b"cmd5", data=b"data5")
        self.packet_store.put(arg0=4, arg1=5, cmd=b"cmd6", data=b"data6")

        self.assertTrue((0, 1) in self.packet_store)
        cmd1, arg0, arg1, data1 = self.packet_store.get(arg0=0, arg1=1)
        self.assertEqual(arg0, 0)
        self.assertEqual(arg1, 1)
        self.assertEqual(cmd1, b"cmd1")
        self.assertEqual(data1, b"data1")
        self.assertTrue((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 5)

        self.assertTrue((0, 1) in self.packet_store)
        cmd2, arg0, arg1, data2 = self.packet_store.get(arg0=0, arg1=1)
        self.assertEqual(arg0, 0)
        self.assertEqual(arg1, 1)
        self.assertEqual(cmd2, b"cmd2")
        self.assertEqual(data2, b"data2")
        self.assertFalse((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 4)

        self.assertTrue((1, 0) in self.packet_store)
        cmd3, arg0, arg1, data3 = self.packet_store.get(arg0=1, arg1=0)
        self.assertEqual(arg0, 1)
        self.assertEqual(arg1, 0)
        self.assertEqual(cmd3, b"cmd3")
        self.assertEqual(data3, b"data3")
        self.assertEqual(len(self.packet_store), 3)

        self.assertTrue((1, None) in self.packet_store)
        cmd4, arg0, arg1, data4 = self.packet_store.get(arg0=1, arg1=None)
        self.assertEqual(arg0, 1)
        self.assertEqual(arg1, 1)
        self.assertEqual(cmd4, b"cmd4")
        self.assertEqual(data4, b"data4")
        self.assertEqual(len(self.packet_store), 2)

        self.assertTrue((None, 3) in self.packet_store)
        cmd5, arg0, arg1, data5 = self.packet_store.get(arg0=None, arg1=3)
        self.assertEqual(arg0, 2)
        self.assertEqual(arg1, 3)
        self.assertEqual(cmd5, b"cmd5")
        self.assertEqual(data5, b"data5")
        self.assertEqual(len(self.packet_store), 1)

        self.assertTrue((None, None) in self.packet_store)
        cmd6, arg0, arg1, data6 = self.packet_store.get(arg0=None, arg1=None)
        self.assertEqual(arg0, 4)
        self.assertEqual(arg1, 5)
        self.assertEqual(cmd6, b"cmd6")
        self.assertEqual(data6, b"data6")
        self.assertEqual(len(self.packet_store), 0)

        self.assertEqual(len(self.packet_store._dict), 4)
        self.assertEqual(len(self.packet_store._dict[1]), 2)
        self.assertEqual(len(self.packet_store._dict[0]), 1)
        self.assertEqual(len(self.packet_store._dict[3]), 1)
        self.assertEqual(len(self.packet_store._dict[5]), 1)
        
    def test_get_clse(self):
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd1", data=b"data1")
        self.packet_store.put(arg0=0, arg1=1, cmd=constants.CLSE, data=b"data2")
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd3", data=b"data3")

        self.assertTrue((0, 1) in self.packet_store)
        cmd1, arg0, arg1, data1 = self.packet_store.get(arg0=0, arg1=1)
        self.assertEqual(arg0, 0)
        self.assertEqual(arg1, 1)
        self.assertEqual(cmd1, b"cmd1")
        self.assertEqual(data1, b"data1")
        self.assertTrue((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 1)

        self.assertTrue((0, 1) in self.packet_store)
        cmd2, arg0, arg1, data2 = self.packet_store.get(arg0=0, arg1=1)
        self.assertEqual(arg0, 0)
        self.assertEqual(arg1, 1)
        self.assertEqual(cmd2, constants.CLSE)
        self.assertEqual(data2, b"data2")
        self.assertFalse((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 0)

        self.assertEqual(len(self.packet_store._dict), 0)

    def test_clear(self):
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd1", data=b"data1")
        self.packet_store.put(arg0=2, arg1=1, cmd=b"cmd2", data=b"data2")

        self.packet_store.clear(arg0=None, arg1=None)
        self.assertEqual(len(self.packet_store), 2)

        self.packet_store.clear(arg0=1, arg1=0)
        self.assertEqual(len(self.packet_store), 2)

        self.packet_store.clear(arg0=0, arg1=1)
        self.assertEqual(len(self.packet_store), 1)
        self.assertEqual(len(self.packet_store._dict), 1)

        self.packet_store.clear(arg0=2, arg1=1)
        self.assertEqual(len(self.packet_store), 0)
        self.assertEqual(len(self.packet_store._dict), 0)

    def test_clear_all(self):
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd1", data=b"data1")

        self.packet_store.clear_all()
        self.assertFalse((0, 1) in self.packet_store)
        self.assertEqual(len(self.packet_store), 0)

    def test_find_allow_zeros(self):
        self.packet_store.put(arg0=0, arg1=1, cmd=b"cmd", data=b"data")
        self.assertEqual(self.packet_store.find_allow_zeros(arg0=2, arg1=1), (0, 1))
        self.assertIsNone(self.packet_store.find_allow_zeros(arg0=2, arg1=2))


class TestAdbTransactionInfo(unittest.TestCase):

    def test_args_match(self):
        adb_info_1_None = _AdbTransactionInfo(1, None, 123, 456, 789)
        adb_info_1_2 = _AdbTransactionInfo(1, 2, 123, 456, 789)

        # (1, None) -> exact matches
        self.assertTrue(adb_info_1_None.args_match(6, 1))
        self.assertTrue(adb_info_1_None.args_match(7, 1))
        self.assertTrue(adb_info_1_None.args_match(6, 1, allow_zeros=True))
        self.assertTrue(adb_info_1_None.args_match(7, 1, allow_zeros=True))

        # (1, None) -> no match
        self.assertFalse(adb_info_1_None.args_match(0, 0))
        self.assertFalse(adb_info_1_None.args_match(1, 0))
        self.assertFalse(adb_info_1_None.args_match(2, 0))
        self.assertFalse(adb_info_1_None.args_match(3, 0))
        self.assertFalse(adb_info_1_None.args_match(4, 5, allow_zeros=True))

        # (1, None) -> zero matches
        self.assertTrue(adb_info_1_None.args_match(0, 0, allow_zeros=True))
        self.assertTrue(adb_info_1_None.args_match(1, 0, allow_zeros=True))
        self.assertTrue(adb_info_1_None.args_match(2, 0, allow_zeros=True))
        self.assertTrue(adb_info_1_None.args_match(3, 0, allow_zeros=True))

        # (1, 2) -> exact matches
        self.assertTrue(adb_info_1_2.args_match(2, 1))
        self.assertTrue(adb_info_1_2.args_match(2, 1, allow_zeros=True))

        # (1, 2) -> no match
        self.assertFalse(adb_info_1_2.args_match(0, 0))
        self.assertFalse(adb_info_1_2.args_match(2, 0))
        self.assertFalse(adb_info_1_2.args_match(0, 1))

        self.assertFalse(adb_info_1_2.args_match(1, 2))
        self.assertFalse(adb_info_1_2.args_match(1, 2, allow_zeros=True))

        self.assertFalse(adb_info_1_2.args_match(3, 0))
        self.assertFalse(adb_info_1_2.args_match(0, 4))
        self.assertFalse(adb_info_1_2.args_match(3, 4))
        self.assertFalse(adb_info_1_2.args_match(3, 0, allow_zeros=True))
        self.assertFalse(adb_info_1_2.args_match(0, 4, allow_zeros=True))
        self.assertFalse(adb_info_1_2.args_match(3, 4, allow_zeros=True))

        self.assertFalse(adb_info_1_2.args_match(2, 6))
        self.assertFalse(adb_info_1_2.args_match(2, 6, allow_zeros=True))
        self.assertFalse(adb_info_1_2.args_match(7, 1))
        self.assertFalse(adb_info_1_2.args_match(7, 1, allow_zeros=True))

        # (1, 2) -> zero matches
        self.assertTrue(adb_info_1_2.args_match(0, 0, allow_zeros=True))
        self.assertTrue(adb_info_1_2.args_match(2, 0, allow_zeros=True))
        self.assertTrue(adb_info_1_2.args_match(0, 1, allow_zeros=True))