From ac4a6845de80765f80725d28659738b2ea67ceed Mon Sep 17 00:00:00 2001 From: Daniel Markstedt Date: Wed, 20 Mar 2024 22:29:11 +0900 Subject: [PATCH] Add test for sequential repeated MODE SELECT(6) sector size change --- cpp/test/scsicd_test.cpp | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/cpp/test/scsicd_test.cpp b/cpp/test/scsicd_test.cpp index cbef92bd..de5c2382 100644 --- a/cpp/test/scsicd_test.cpp +++ b/cpp/test/scsicd_test.cpp @@ -186,3 +186,53 @@ TEST(ScsiCdTest, ModeSelect) buf[10] = 0x02; EXPECT_NO_THROW(cd1.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6), emtpy drive, with sector size 512 is supported"; } + +TEST(ScsiCdTest, ModeSelectSequence) +{ + MockSCSICD cd(0); + vector cmd(6); + vector buf(255); + + // dummy file for DiskCache resize after sector size change + path filename = CreateTempFile(2* 2048); + cd.SetFilename(string(filename)); + cd.Open(); + EXPECT_EQ(2, cd.GetBlockCount()); + + cd.SetSectorSizeInBytes(2048); + + // PF + cmd[1] = 0x10; + // Length + buf[3] = 0x08; + // 2048 bytes per sector + buf[10] = 0x08; + // Page 3 (Device Format Page) + buf[12] = 0x01; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 2048 is supported"; + + // 512 bytes per sector - ModeSelect6 + buf[10] = 0x02; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 512 is supported"; + + // 2048 bytes per sector - ModeSelect6 + buf[10] = 0x08; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 2048 is supported"; + + // 512 bytes per sector - ModeSelect6 + buf[10] = 0x02; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 512 is supported"; + + // 2048 bytes per sector - ModeSelect6 + buf[10] = 0x08; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 2048 is supported"; + + // 512 bytes per sector - ModeSelect6 + buf[10] = 0x02; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 512 is supported"; + + // 2048 bytes per sector - ModeSelect6 + buf[10] = 0x08; + EXPECT_NO_THROW(cd.ModeSelect(scsi_command::eCmdModeSelect6, cmd, buf, 255)) << "MODE SELECT(6) with sector size 2048 is supported"; + +}