def main():
    with MockSCSI(MockDevice(spc)) as s:
        # cdb for standard page request
        i = s.inquiry(alloclen=128)
        cdb = i.cdb
        assert cdb[0] == s.device.opcodes.INQUIRY.value
        assert cdb[1:3] == bytearray(2)
        assert scsi_ba_to_int(cdb[3:5]) == 128
        assert cdb[5] == 0
        cdb = i.unmarshall_cdb(cdb)
        assert cdb['opcode'] == s.device.opcodes.INQUIRY.value
        assert cdb['evpd'] == 0
        assert cdb['page_code'] == 0
        assert cdb['alloc_len'] == 128

        d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
        assert d == cdb

        # supported vpd pages
        i = s.inquiry(evpd=1, page_code=0x88, alloclen=300)
        cdb = i.cdb
        assert cdb[0] == s.device.opcodes.INQUIRY.value
        assert cdb[1] == 0x01
        assert cdb[2] == 0x88
        assert scsi_ba_to_int(cdb[3:5]) == 300
        assert cdb[5] == 0
        cdb = i.unmarshall_cdb(cdb)
        assert cdb['opcode'] == s.device.opcodes.INQUIRY.value
        assert cdb['evpd'] == 1
        assert cdb['page_code'] == 0x88
        assert cdb['alloc_len'] == 300

        d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
        assert d == cdb
def main():
    with MockSCSI(MockDevice(spc)) as s:
        # cdb for standard page request
        i = s.inquiry(alloclen=128)
        cdb = i.cdb
        assert cdb[0] == s.device.opcodes.INQUIRY.value
        assert cdb[1:3] == bytearray(2)
        assert scsi_ba_to_int(cdb[3:5]) == 128
        assert cdb[5] == 0
        cdb = i.unmarshall_cdb(cdb)
        assert cdb['opcode'] == s.device.opcodes.INQUIRY.value
        assert cdb['evpd'] == 0
        assert cdb['page_code'] == 0
        assert cdb['alloc_len'] == 128

        d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
        assert d == cdb

        # supported vpd pages
        i = s.inquiry(evpd=1, page_code=0x88, alloclen=300)
        cdb = i.cdb
        assert cdb[0] == s.device.opcodes.INQUIRY.value
        assert cdb[1] == 0x01
        assert cdb[2] == 0x88
        assert scsi_ba_to_int(cdb[3:5]) == 300
        assert cdb[5] == 0
        cdb = i.unmarshall_cdb(cdb)
        assert cdb['opcode'] == s.device.opcodes.INQUIRY.value
        assert cdb['evpd'] == 1
        assert cdb['page_code'] == 0x88
        assert cdb['alloc_len'] == 300

        d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
        assert d == cdb
    def test_main(self):
        with MockSCSI(MockDevice(spc)) as s:
            # cdb for standard page request
            i = s.inquiry(alloclen=128)
            cdb = i.cdb
            self.assertEqual(cdb[0], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb[1:3], bytearray(2))
            self.assertEqual(scsi_ba_to_int(cdb[3:5]), 128)
            self.assertEqual(cdb[5], 0)
            cdb = i.unmarshall_cdb(cdb)
            self.assertEqual(cdb['opcode'], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb['evpd'], 0)
            self.assertEqual(cdb['page_code'], 0)
            self.assertEqual(cdb['alloc_len'], 128)

            d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
            self.assertEqual(d, cdb)

            # supported vpd pages
            i = s.inquiry(evpd=1, page_code=0x88, alloclen=300)
            cdb = i.cdb
            self.assertEqual(cdb[0], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb[1], 0x01)
            self.assertEqual(cdb[2], 0x88)
            self.assertEqual(scsi_ba_to_int(cdb[3:5]), 300)
            self.assertEqual(cdb[5], 0)
            cdb = i.unmarshall_cdb(cdb)
            self.assertEqual(cdb['opcode'], s.device.opcodes.INQUIRY.value)
            self.assertEqual(cdb['evpd'], 1)
            self.assertEqual(cdb['page_code'], 0x88)
            self.assertEqual(cdb['alloc_len'], 300)

            d = Inquiry.unmarshall_cdb(Inquiry.marshall_cdb(cdb))
            self.assertEqual(d, cdb)