• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jpwsutton / instax_api / 3811978815

pending completion
3811978815

Pull #30

github

GitHub
Merge bc650e95a into 51db4a494
Pull Request #30: feat: general code improvements and adding github workflow

945 of 945 new or added lines in 15 files covered. (100.0%)

1901 of 2101 relevant lines covered (90.48%)

0.9 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

99.68
/instax/tests/test_basic.py
1
"""
1✔
2
Instax SP2 Test File.
3

4
@jpwsutton 2016/17
5
"""
6
import time
1✔
7
import unittest
1✔
8

9
from instax.packet import (
1✔
10
    LockStateCommand,
11
    ModelNameCommand,
12
    Packet,
13
    PacketFactory,
14
    PrepImageCommand,
15
    PrePrintCommand,
16
    PrintCountCommand,
17
    PrinterLockCommand,
18
    ResetCommand,
19
    SendImageCommand,
20
    SpecificationsCommand,
21
    Type83Command,
22
    Type195Command,
23
    VersionCommand,
24
)
25

26

27
class PacketTests(unittest.TestCase):
1✔
28
    """
1✔
29
    Instax-SP2 Packet Test Class.
30

31
    A series of tests to verify that all commands and responses can be
32
    correctly encoded and decoded.
33
    """
34

35
    def helper_verify_header(
1✔
36
        self,
37
        header,
38
        direction,
39
        type,
40
        length,
41
        time,
42
        pin=None,
43
        returnCode=None,
44
        unknown1=None,
45
        ejecting=None,
46
        battery=None,
47
        printCount=None,
48
    ):
49
        """Verify the Header of a packet."""
50
        self.assertEqual(header["startByte"], direction)
1✔
51
        self.assertEqual(header["cmdByte"], type)
1✔
52
        self.assertEqual(header["packetLength"], length)
1✔
53
        self.assertEqual(header["sessionTime"], time)
1✔
54
        if direction == Packet.MESSAGE_MODE_COMMAND:
1✔
55
            self.assertEqual(header["password"], pin)
1✔
56
        if direction == Packet.MESSAGE_MODE_RESPONSE:
1✔
57
            self.assertEqual(header["returnCode"], returnCode)
1✔
58
            # self.assertEqual(header['unknown1'], unknown1)
59
            self.assertEqual(header["ejecting"], ejecting)
1✔
60
            self.assertEqual(header["battery"], battery)
1✔
61
            self.assertEqual(header["printCount"], printCount)
1✔
62

63
    def test_encode_cmd_specifications(self):
1✔
64
        """Test the process of encoding a spcecifications command."""
65
        # Create Specifications Command Packet
66
        sessionTime = int(round(time.time() * 1000))
1✔
67
        pinCode = 1111
1✔
68
        cmdPacket = SpecificationsCommand(Packet.MESSAGE_MODE_COMMAND)
1✔
69
        # Encode the command to raw byte array
70
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
71
        # Decode the command back into a packet object
72
        packetFactory = PacketFactory()
1✔
73
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
74
        # decodedPacket.printDebug()
75
        postHeader = decodedPacket.header
1✔
76
        self.helper_verify_header(
1✔
77
            postHeader,
78
            Packet.MESSAGE_MODE_COMMAND,
79
            Packet.MESSAGE_TYPE_SPECIFICATIONS,
80
            len(encodedCommand),
81
            cmdPacket.encodedSessionTime,
82
            pinCode,
83
        )
84

85
    def test_encode_resp_specifications(self):
1✔
86
        """Test the process of encoding a specifications response."""
87
        sessionTime = int(round(time.time() * 1000))
1✔
88
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
89
        ejecting = 0
1✔
90
        battery = 2
1✔
91
        printCount = 7
1✔
92
        resPacket = SpecificationsCommand(
1✔
93
            Packet.MESSAGE_MODE_RESPONSE,
94
            maxHeight=800,
95
            maxWidth=600,
96
            maxColours=256,
97
            unknown1=10,
98
            maxMsgSize=60000,
99
            unknown2=16,
100
            unknown3=0,
101
        )
102
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
103
        packetFactory = PacketFactory()
1✔
104
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
105
        # decodedPacket.printDebug()
106
        postHeader = decodedPacket.header
1✔
107
        self.helper_verify_header(
1✔
108
            postHeader,
109
            Packet.MESSAGE_MODE_RESPONSE,
110
            Packet.MESSAGE_TYPE_SPECIFICATIONS,
111
            len(encodedResponse),
112
            resPacket.encodedSessionTime,
113
            returnCode=returnCode,
114
            ejecting=ejecting,
115
            battery=battery,
116
            printCount=printCount,
117
        )
118

119
        # Verify Payload
120
        # print(decodedPacket.payload)
121
        self.assertEqual(decodedPacket.payload["maxHeight"], 800)
1✔
122
        self.assertEqual(decodedPacket.payload["maxWidth"], 600)
1✔
123
        self.assertEqual(decodedPacket.payload["maxColours"], 256)
1✔
124
        self.assertEqual(decodedPacket.payload["unknown1"], 10)
1✔
125
        self.assertEqual(decodedPacket.payload["maxMsgSize"], 60000)
1✔
126
        self.assertEqual(decodedPacket.payload["unknown2"], 16)
1✔
127
        self.assertEqual(decodedPacket.payload["unknown3"], 0)
1✔
128

129
    def test_encode_cmd_version(self):
1✔
130
        """Test the process of encoding a version command."""
131
        # Create Specifications Command Packet
132
        sessionTime = int(round(time.time() * 1000))
1✔
133
        pinCode = 1111
1✔
134
        cmdPacket = VersionCommand(Packet.MESSAGE_MODE_COMMAND)
1✔
135
        # Encode the command to raw byte array
136
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
137
        # Decode the command back into a packet object
138
        packetFactory = PacketFactory()
1✔
139
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
140
        # decodedPacket.printDebug()
141
        postHeader = decodedPacket.header
1✔
142
        self.helper_verify_header(
1✔
143
            postHeader,
144
            Packet.MESSAGE_MODE_COMMAND,
145
            Packet.MESSAGE_TYPE_PRINTER_VERSION,
146
            len(encodedCommand),
147
            cmdPacket.encodedSessionTime,
148
            pinCode,
149
        )
150

151
    def test_encode_resp_version(self):
1✔
152
        """Test the process of encoding a version response."""
153
        sessionTime = int(round(time.time() * 1000))
1✔
154
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
155
        ejecting = 0
1✔
156
        battery = 2
1✔
157
        printCount = 7
1✔
158
        resPacket = VersionCommand(Packet.MESSAGE_MODE_RESPONSE, unknown1=254, firmware=275, hardware=0)
1✔
159
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
160
        packetFactory = PacketFactory()
1✔
161
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
162
        # decodedPacket.printDebug()
163
        postHeader = decodedPacket.header
1✔
164
        self.helper_verify_header(
1✔
165
            postHeader,
166
            Packet.MESSAGE_MODE_RESPONSE,
167
            Packet.MESSAGE_TYPE_PRINTER_VERSION,
168
            len(encodedResponse),
169
            resPacket.encodedSessionTime,
170
            returnCode=returnCode,
171
            ejecting=ejecting,
172
            battery=battery,
173
            printCount=printCount,
174
        )
175

176
        # Verify Payload
177
        self.assertEqual(decodedPacket.payload["unknown1"], 254)
1✔
178
        self.assertEqual(decodedPacket.payload["firmware"], "01.13")
1✔
179
        self.assertEqual(decodedPacket.payload["hardware"], "00.00")
1✔
180

181
    def test_encode_cmd_printCount(self):
1✔
182
        """Test the process of encoding a print count command."""
183
        # Create Print Count Command Packet
184
        sessionTime = int(round(time.time() * 1000))
1✔
185
        pinCode = 1111
1✔
186
        cmdPacket = PrintCountCommand(Packet.MESSAGE_MODE_COMMAND)
1✔
187
        # Encode the command to raw byte array
188
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
189
        # Decode the command back into a packet object
190
        packetFactory = PacketFactory()
1✔
191
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
192
        # decodedPacket.printDebug()
193
        postHeader = decodedPacket.header
1✔
194
        self.helper_verify_header(
1✔
195
            postHeader,
196
            Packet.MESSAGE_MODE_COMMAND,
197
            Packet.MESSAGE_TYPE_PRINT_COUNT,
198
            len(encodedCommand),
199
            cmdPacket.encodedSessionTime,
200
            pinCode,
201
        )
202

203
    def test_encode_resp_printCount(self):
1✔
204
        """Test the process of encoding a print count response."""
205
        sessionTime = int(round(time.time() * 1000))
1✔
206
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
207
        ejecting = 0
1✔
208
        battery = 2
1✔
209
        printCount = 7
1✔
210
        printHistory = 42
1✔
211
        resPacket = PrintCountCommand(Packet.MESSAGE_MODE_RESPONSE, printHistory=printHistory)
1✔
212
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
213
        packetFactory = PacketFactory()
1✔
214
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
215
        # decodedPacket.printDebug()
216
        postHeader = decodedPacket.header
1✔
217
        self.helper_verify_header(
1✔
218
            postHeader,
219
            Packet.MESSAGE_MODE_RESPONSE,
220
            Packet.MESSAGE_TYPE_PRINT_COUNT,
221
            len(encodedResponse),
222
            resPacket.encodedSessionTime,
223
            returnCode=returnCode,
224
            ejecting=ejecting,
225
            battery=battery,
226
            printCount=printCount,
227
        )
228

229
        # Verify Payload
230
        self.assertEqual(decodedPacket.payload["printHistory"], printHistory)
1✔
231

232
    def test_encode_cmd_modelName(self):
1✔
233
        """Test the process of encoding a model name command."""
234
        # Create Model Name Command Packet
235
        sessionTime = int(round(time.time() * 1000))
1✔
236
        pinCode = 1111
1✔
237
        cmdPacket = ModelNameCommand(Packet.MESSAGE_MODE_COMMAND)
1✔
238
        # Encodde the command to raw byte array
239
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
240
        # Decode the command back into a packet object
241
        packetFactory = PacketFactory()
1✔
242
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
243
        postHeader = decodedPacket.header
1✔
244
        self.helper_verify_header(
1✔
245
            postHeader,
246
            Packet.MESSAGE_MODE_COMMAND,
247
            Packet.MESSAGE_TYPE_MODEL_NAME,
248
            len(encodedCommand),
249
            cmdPacket.encodedSessionTime,
250
            pinCode,
251
        )
252

253
    def test_encode_resp_modelName(self):
1✔
254
        """Test the process of encoding a model name response."""
255
        sessionTime = int(round(time.time() * 1000))
1✔
256
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
257
        ejecting = 0
1✔
258
        battery = 2
1✔
259
        printCount = 7
1✔
260
        modelName = "SP-2"
1✔
261
        resPacket = ModelNameCommand(Packet.MESSAGE_MODE_RESPONSE, modelName=modelName)
1✔
262
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
263
        packetFactory = PacketFactory()
1✔
264
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
265
        # decodedPacket.printDebug()
266
        postHeader = decodedPacket.header
1✔
267
        self.helper_verify_header(
1✔
268
            postHeader,
269
            Packet.MESSAGE_MODE_RESPONSE,
270
            Packet.MESSAGE_TYPE_MODEL_NAME,
271
            len(encodedResponse),
272
            resPacket.encodedSessionTime,
273
            returnCode=returnCode,
274
            ejecting=ejecting,
275
            battery=battery,
276
            printCount=printCount,
277
        )
278

279
        # Verify Payload
280
        self.assertEqual(decodedPacket.payload["modelName"], modelName)
1✔
281

282
    def test_encode_cmd_prePrint(self):
1✔
283
        """Test the process of encoding a prePrint command."""
284
        # Create Model Name Command Packet
285
        sessionTime = int(round(time.time() * 1000))
1✔
286
        pinCode = 1111
1✔
287
        cmdNumber = 8
1✔
288
        cmdPacket = PrePrintCommand(Packet.MESSAGE_MODE_COMMAND, cmdNumber=cmdNumber)
1✔
289
        # Encodde the command to raw byte array
290
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
291
        # Decodee the command back into a packet object
292
        packetFactory = PacketFactory()
1✔
293
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
294
        postHeader = decodedPacket.header
1✔
295
        self.helper_verify_header(
1✔
296
            postHeader,
297
            Packet.MESSAGE_MODE_COMMAND,
298
            Packet.MESSAGE_TYPE_PRE_PRINT,
299
            len(encodedCommand),
300
            cmdPacket.encodedSessionTime,
301
            pinCode,
302
        )
303
        # Verify Payload
304
        self.assertEqual(decodedPacket.payload["cmdNumber"], cmdNumber)
1✔
305

306
    def test_encode_resp_prePrint(self):
1✔
307
        """Test the process of encoding a pre print response."""
308
        sessionTime = int(round(time.time() * 1000))
1✔
309
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
310
        ejecting = 0
1✔
311
        battery = 2
1✔
312
        printCount = 7
1✔
313
        cmdNumber = 8
1✔
314
        respNumber = 1
1✔
315
        resPacket = PrePrintCommand(Packet.MESSAGE_MODE_RESPONSE, cmdNumber=cmdNumber, respNumber=respNumber)
1✔
316
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
317
        packetFactory = PacketFactory()
1✔
318
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
319
        # decodedPacket.printDebug()
320
        postHeader = decodedPacket.header
1✔
321
        self.helper_verify_header(
1✔
322
            postHeader,
323
            Packet.MESSAGE_MODE_RESPONSE,
324
            Packet.MESSAGE_TYPE_PRE_PRINT,
325
            len(encodedResponse),
326
            resPacket.encodedSessionTime,
327
            returnCode=returnCode,
328
            ejecting=ejecting,
329
            battery=battery,
330
            printCount=printCount,
331
        )
332

333
        # Verify Payload
334
        self.assertEqual(decodedPacket.payload["cmdNumber"], cmdNumber)
1✔
335
        self.assertEqual(decodedPacket.payload["respNumber"], respNumber)
1✔
336

337
    def test_encode_cmd_lock(self):
1✔
338
        """Test encoding a Lock Printer Command."""
339
        sessionTime = int(round(time.time() * 1000))
1✔
340
        pinCode = 1111
1✔
341
        lockState = 1
1✔
342
        cmdPacket = PrinterLockCommand(Packet.MESSAGE_MODE_COMMAND, lockState=lockState)
1✔
343
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
344
        packetFactory = PacketFactory()
1✔
345
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
346
        postHeader = decodedPacket.header
1✔
347
        self.helper_verify_header(
1✔
348
            postHeader,
349
            Packet.MESSAGE_MODE_COMMAND,
350
            Packet.MESSAGE_TYPE_LOCK_DEVICE,
351
            len(encodedCommand),
352
            cmdPacket.encodedSessionTime,
353
            pinCode,
354
        )
355
        # Verify Payload
356
        self.assertEqual(decodedPacket.payload["lockState"], lockState)
1✔
357

358
    def test_encode_resp_lock(self):
1✔
359
        """Test encoding a Lock Printer Response."""
360
        sessionTime = int(round(time.time() * 1000))
1✔
361
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
362
        ejecting = 0
1✔
363
        battery = 2
1✔
364
        printCount = 7
1✔
365
        resPacket = PrinterLockCommand(Packet.MESSAGE_MODE_RESPONSE)
1✔
366
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
367
        packetFactory = PacketFactory()
1✔
368
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
369
        # decodedPacket.printDebug()
370
        postHeader = decodedPacket.header
1✔
371
        self.helper_verify_header(
1✔
372
            postHeader,
373
            Packet.MESSAGE_MODE_RESPONSE,
374
            Packet.MESSAGE_TYPE_LOCK_DEVICE,
375
            len(encodedResponse),
376
            resPacket.encodedSessionTime,
377
            returnCode=returnCode,
378
            ejecting=ejecting,
379
            battery=battery,
380
            printCount=printCount,
381
        )
382

383
    def test_encode_cmd_reset(self):
1✔
384
        """Test encoding a Reset Command."""
385
        sessionTime = int(round(time.time() * 1000))
1✔
386
        pinCode = 1111
1✔
387
        cmdPacket = ResetCommand(Packet.MESSAGE_MODE_COMMAND)
1✔
388
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
389
        packetFactory = PacketFactory()
1✔
390
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
391
        postHeader = decodedPacket.header
1✔
392
        self.helper_verify_header(
1✔
393
            postHeader,
394
            Packet.MESSAGE_MODE_COMMAND,
395
            Packet.MESSAGE_TYPE_RESET,
396
            len(encodedCommand),
397
            cmdPacket.encodedSessionTime,
398
            pinCode,
399
        )
400

401
    def test_encode_resp_reset(self):
1✔
402
        """Test encoding a Reset Response."""
403
        sessionTime = int(round(time.time() * 1000))
1✔
404
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
405
        ejecting = 0
1✔
406
        battery = 2
1✔
407
        printCount = 7
1✔
408
        resPacket = ResetCommand(Packet.MESSAGE_MODE_RESPONSE)
1✔
409
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
410
        packetFactory = PacketFactory()
1✔
411
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
412
        # decodedPacket.printDebug()
413
        postHeader = decodedPacket.header
1✔
414
        self.helper_verify_header(
1✔
415
            postHeader,
416
            Packet.MESSAGE_MODE_RESPONSE,
417
            Packet.MESSAGE_TYPE_RESET,
418
            len(encodedResponse),
419
            resPacket.encodedSessionTime,
420
            returnCode=returnCode,
421
            ejecting=ejecting,
422
            battery=battery,
423
            printCount=printCount,
424
        )
425

426
    def test_encode_cmd_prep(self):
1✔
427
        """Test encoding a Prep Image Command."""
428
        sessionTime = int(round(time.time() * 1000))
1✔
429
        pinCode = 1111
1✔
430
        format = 16
1✔
431
        options = 128
1✔
432
        imgLength = 1440000
1✔
433
        cmdPacket = PrepImageCommand(Packet.MESSAGE_MODE_COMMAND, format=format, options=options, imgLength=imgLength)
1✔
434
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
435
        packetFactory = PacketFactory()
1✔
436
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
437
        postHeader = decodedPacket.header
1✔
438
        self.helper_verify_header(
1✔
439
            postHeader,
440
            Packet.MESSAGE_MODE_COMMAND,
441
            Packet.MESSAGE_TYPE_PREP_IMAGE,
442
            len(encodedCommand),
443
            cmdPacket.encodedSessionTime,
444
            pinCode,
445
        )
446
        # Verify Payload
447
        self.assertEqual(decodedPacket.payload["format"], format)
1✔
448
        self.assertEqual(decodedPacket.payload["options"], options)
1✔
449
        self.assertEqual(decodedPacket.payload["imgLength"], imgLength)
1✔
450

451
    def test_encode_resp_prep(self):
1✔
452
        """Test encoding a Prep Image Response."""
453
        sessionTime = int(round(time.time() * 1000))
1✔
454
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
455
        ejecting = 0
1✔
456
        battery = 2
1✔
457
        printCount = 7
1✔
458
        maxLen = 60000
1✔
459
        resPacket = PrepImageCommand(Packet.MESSAGE_MODE_RESPONSE, maxLen=maxLen)
1✔
460
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
461
        packetFactory = PacketFactory()
1✔
462
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
463
        # decodedPacket.printDebug()
464
        postHeader = decodedPacket.header
1✔
465
        self.helper_verify_header(
1✔
466
            postHeader,
467
            Packet.MESSAGE_MODE_RESPONSE,
468
            Packet.MESSAGE_TYPE_PREP_IMAGE,
469
            len(encodedResponse),
470
            resPacket.encodedSessionTime,
471
            returnCode=returnCode,
472
            ejecting=ejecting,
473
            battery=battery,
474
            printCount=printCount,
475
        )
476

477
        # Verify Payload
478
        self.assertEqual(decodedPacket.payload["maxLen"], maxLen)
1✔
479

480
    def test_encode_cmd_send(self):
1✔
481
        """Test encoding a Send Image Command."""
482
        sessionTime = int(round(time.time() * 1000))
1✔
483
        pinCode = 1111
1✔
484
        sequenceNumber = 5
1✔
485
        payloadBytes = bytearray(10)
1✔
486
        cmdPacket = SendImageCommand(
1✔
487
            Packet.MESSAGE_MODE_COMMAND, sequenceNumber=sequenceNumber, payloadBytes=payloadBytes
488
        )
489
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
490
        packetFactory = PacketFactory()
1✔
491
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
492
        postHeader = decodedPacket.header
1✔
493
        self.helper_verify_header(
1✔
494
            postHeader,
495
            Packet.MESSAGE_MODE_COMMAND,
496
            Packet.MESSAGE_TYPE_SEND_IMAGE,
497
            len(encodedCommand),
498
            cmdPacket.encodedSessionTime,
499
            pinCode,
500
        )
501
        # Verify Payload
502
        self.assertEqual(decodedPacket.payload["sequenceNumber"], sequenceNumber)
1✔
503
        self.assertEqual(decodedPacket.payload["payloadBytes"], payloadBytes)
1✔
504

505
    def test_encode_resp_send(self):
1✔
506
        """Test encoding a Send Image Response."""
507
        sessionTime = int(round(time.time() * 1000))
1✔
508
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
509
        ejecting = 0
1✔
510
        battery = 2
1✔
511
        printCount = 7
1✔
512
        sequenceNumber = 5
1✔
513
        resPacket = SendImageCommand(Packet.MESSAGE_MODE_RESPONSE, sequenceNumber=sequenceNumber)
1✔
514
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
515
        packetFactory = PacketFactory()
1✔
516
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
517
        # decodedPacket.printDebug()
518
        postHeader = decodedPacket.header
1✔
519
        self.helper_verify_header(
1✔
520
            postHeader,
521
            Packet.MESSAGE_MODE_RESPONSE,
522
            Packet.MESSAGE_TYPE_SEND_IMAGE,
523
            len(encodedResponse),
524
            resPacket.encodedSessionTime,
525
            returnCode=returnCode,
526
            ejecting=ejecting,
527
            battery=battery,
528
            printCount=printCount,
529
        )
530

531
        # Verify Payload
532
        self.assertEqual(decodedPacket.payload["sequenceNumber"], sequenceNumber)
1✔
533

534
    def test_encode_cmd_83(self):
1✔
535
        """Test encoding a Type 83 Command."""
536
        sessionTime = int(round(time.time() * 1000))
1✔
537
        pinCode = 1111
1✔
538
        cmdPacket = Type83Command(Packet.MESSAGE_MODE_COMMAND)
1✔
539
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
540
        packetFactory = PacketFactory()
1✔
541
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
542
        postHeader = decodedPacket.header
1✔
543
        self.helper_verify_header(
1✔
544
            postHeader,
545
            Packet.MESSAGE_MODE_COMMAND,
546
            Packet.MESSAGE_TYPE_83,
547
            len(encodedCommand),
548
            cmdPacket.encodedSessionTime,
549
            pinCode,
550
        )
551

552
    def test_encode_resp_83(self):
1✔
553
        """Test encoding a Type 83 Response."""
554
        sessionTime = int(round(time.time() * 1000))
1✔
555
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
556
        ejecting = 0
1✔
557
        battery = 2
1✔
558
        printCount = 7
1✔
559
        resPacket = Type83Command(Packet.MESSAGE_MODE_RESPONSE)
1✔
560
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
561
        packetFactory = PacketFactory()
1✔
562
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
563
        # decodedPacket.printDebug()
564
        postHeader = decodedPacket.header
1✔
565
        self.helper_verify_header(
1✔
566
            postHeader,
567
            Packet.MESSAGE_MODE_RESPONSE,
568
            Packet.MESSAGE_TYPE_83,
569
            len(encodedResponse),
570
            resPacket.encodedSessionTime,
571
            returnCode=returnCode,
572
            ejecting=ejecting,
573
            battery=battery,
574
            printCount=printCount,
575
        )
576

577
    def test_encode_cmd_195(self):
1✔
578
        """Test encoding a Type 195 Command."""
579
        sessionTime = int(round(time.time() * 1000))
1✔
580
        pinCode = 1111
1✔
581
        cmdPacket = Type195Command(Packet.MESSAGE_MODE_COMMAND)
1✔
582
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
583
        packetFactory = PacketFactory()
1✔
584
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
585
        postHeader = decodedPacket.header
1✔
586
        self.helper_verify_header(
1✔
587
            postHeader,
588
            Packet.MESSAGE_MODE_COMMAND,
589
            Packet.MESSAGE_TYPE_195,
590
            len(encodedCommand),
591
            cmdPacket.encodedSessionTime,
592
            pinCode,
593
        )
594

595
    def test_encode_resp_195(self):
1✔
596
        """Test encoding a Type 195 Response."""
597
        sessionTime = int(round(time.time() * 1000))
1✔
598
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
599
        ejecting = 0
1✔
600
        battery = 2
1✔
601
        printCount = 7
1✔
602
        resPacket = Type195Command(Packet.MESSAGE_MODE_RESPONSE)
1✔
603
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
604
        packetFactory = PacketFactory()
1✔
605
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
606
        # decodedPacket.printDebug()
607
        postHeader = decodedPacket.header
1✔
608
        self.helper_verify_header(
1✔
609
            postHeader,
610
            Packet.MESSAGE_MODE_RESPONSE,
611
            Packet.MESSAGE_TYPE_195,
612
            len(encodedResponse),
613
            resPacket.encodedSessionTime,
614
            returnCode=returnCode,
615
            ejecting=ejecting,
616
            battery=battery,
617
            printCount=printCount,
618
        )
619

620
    def test_encode_cmd_lock_state(self):
1✔
621
        """Test encoding a lock state Command."""
622
        sessionTime = int(round(time.time() * 1000))
1✔
623
        pinCode = 1111
1✔
624
        cmdPacket = LockStateCommand(Packet.MESSAGE_MODE_COMMAND)
1✔
625
        encodedCommand = cmdPacket.encodeCommand(sessionTime, pinCode)
1✔
626
        packetFactory = PacketFactory()
1✔
627
        decodedPacket = packetFactory.decode(encodedCommand)
1✔
628
        postHeader = decodedPacket.header
1✔
629
        self.helper_verify_header(
1✔
630
            postHeader,
631
            Packet.MESSAGE_MODE_COMMAND,
632
            Packet.MESSAGE_TYPE_SET_LOCK_STATE,
633
            len(encodedCommand),
634
            cmdPacket.encodedSessionTime,
635
            pinCode,
636
        )
637

638
    def test_encode_resp_lock_state(self):
1✔
639
        """Test encoding a lock state Response."""
640
        sessionTime = int(round(time.time() * 1000))
1✔
641
        returnCode = Packet.RTN_E_RCV_FRAME
1✔
642
        ejecting = 0
1✔
643
        battery = 2
1✔
644
        printCount = 7
1✔
645
        unknownFourByteInt = 100
1✔
646
        resPacket = LockStateCommand(Packet.MESSAGE_MODE_RESPONSE, unknownFourByteInt=unknownFourByteInt)
1✔
647
        encodedResponse = resPacket.encodeResponse(sessionTime, returnCode, ejecting, battery, printCount)
1✔
648
        packetFactory = PacketFactory()
1✔
649
        decodedPacket = packetFactory.decode(encodedResponse)
1✔
650
        # decodedPacket.printDebug()
651
        postHeader = decodedPacket.header
1✔
652
        self.helper_verify_header(
1✔
653
            postHeader,
654
            Packet.MESSAGE_MODE_RESPONSE,
655
            Packet.MESSAGE_TYPE_SET_LOCK_STATE,
656
            len(encodedResponse),
657
            resPacket.encodedSessionTime,
658
            returnCode=returnCode,
659
            ejecting=ejecting,
660
            battery=battery,
661
            printCount=printCount,
662
        )
663
        # Verify Payload
664
        self.assertEqual(decodedPacket.payload["unknownFourByteInt"], unknownFourByteInt)
1✔
665

666

667
if __name__ == "__main__":
1✔
668

669
    unittest.main()
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc