2022-09-21 06:27:51 +00:00
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//
|
|
|
|
// SCSI Target Emulator RaSCSI Reloaded
|
|
|
|
// for Raspberry Pi
|
|
|
|
//
|
|
|
|
// Copyright (C) 2022 Uwe Seimet
|
|
|
|
//
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
#include "testing.h"
|
|
|
|
#include "devices/scsi_command_util.h"
|
|
|
|
|
2022-09-25 21:49:24 +00:00
|
|
|
using namespace scsi_command_util;
|
|
|
|
|
2022-09-21 06:27:51 +00:00
|
|
|
TEST(ScsiCommandUtilTest, EnrichFormatPage)
|
|
|
|
{
|
|
|
|
const int SECTOR_SIZE = 512;
|
|
|
|
|
|
|
|
map<int, vector<byte>> pages;
|
|
|
|
vector<byte> format_page(24);
|
|
|
|
pages[3] = format_page;
|
|
|
|
|
2022-09-25 21:49:24 +00:00
|
|
|
EnrichFormatPage(pages, false, SECTOR_SIZE);
|
2022-09-21 06:27:51 +00:00
|
|
|
format_page = pages[3];
|
|
|
|
EXPECT_EQ(byte{0}, format_page[12]);
|
|
|
|
EXPECT_EQ(byte{0}, format_page[13]);
|
|
|
|
|
2022-09-25 21:49:24 +00:00
|
|
|
EnrichFormatPage(pages, true, SECTOR_SIZE);
|
2022-09-21 06:27:51 +00:00
|
|
|
format_page = pages[3];
|
|
|
|
EXPECT_EQ(byte{SECTOR_SIZE >> 8}, format_page[12]);
|
|
|
|
EXPECT_EQ(byte{0}, format_page[13]);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(ScsiCommandUtilTest, AddAppleVendorModePage)
|
|
|
|
{
|
|
|
|
map<int, vector<byte>> pages;
|
|
|
|
vector<byte> vendor_page(30);
|
|
|
|
pages[48] = vendor_page;
|
|
|
|
|
2022-09-25 21:49:24 +00:00
|
|
|
AddAppleVendorModePage(pages, true);
|
2022-09-21 06:27:51 +00:00
|
|
|
vendor_page = pages[48];
|
|
|
|
EXPECT_EQ(byte{0}, vendor_page[2]);
|
|
|
|
|
2022-09-25 21:49:24 +00:00
|
|
|
AddAppleVendorModePage(pages, false);
|
2022-09-21 06:27:51 +00:00
|
|
|
vendor_page = pages[48];
|
|
|
|
EXPECT_STREQ("APPLE COMPUTER, INC ", (const char *)&vendor_page[2]);
|
|
|
|
}
|
2022-09-25 21:49:24 +00:00
|
|
|
|
|
|
|
TEST(ScsiCommandUtilTest, GetInt16)
|
|
|
|
{
|
|
|
|
vector<int> v = { 0x12, 0x34 };
|
|
|
|
EXPECT_EQ(0x1234, GetInt16(v, 0));
|
|
|
|
}
|
|
|
|
|
2022-10-01 15:56:06 +00:00
|
|
|
TEST(ScsiCommandUtilTest, GetInt24)
|
|
|
|
{
|
|
|
|
vector<int> v = { 0x12, 0x34, 0x56 };
|
|
|
|
EXPECT_EQ(0x123456, GetInt24(v, 0));
|
|
|
|
}
|
|
|
|
|
2022-09-25 21:49:24 +00:00
|
|
|
TEST(ScsiCommandUtilTest, GetInt32)
|
|
|
|
{
|
|
|
|
vector<int> v = { 0x12, 0x34, 0x56, 0x78 };
|
|
|
|
EXPECT_EQ(0x12345678, GetInt32(v, 0));
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(ScsiCommandUtilTest, GetInt64)
|
|
|
|
{
|
|
|
|
vector<int> v = { 0x12, 0x34, 0x56, 0x78, 0x87, 0x65, 0x43, 0x21 };
|
|
|
|
EXPECT_EQ(0x1234567887654321, GetInt64(v, 0));
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(ScsiCommandUtilTest, SetInt16)
|
|
|
|
{
|
|
|
|
vector<byte> v(2);
|
|
|
|
SetInt16(v, 0, 0x1234);
|
|
|
|
EXPECT_EQ(byte{0x12}, v[0]);
|
|
|
|
EXPECT_EQ(byte{0x34}, v[1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(ScsiCommandUtilTest, SetInt32)
|
|
|
|
{
|
|
|
|
vector<BYTE> buf(4);
|
2022-10-01 15:56:06 +00:00
|
|
|
SetInt32(buf, 0, 0x12345678);
|
2022-09-25 21:49:24 +00:00
|
|
|
EXPECT_EQ(0x12, buf[0]);
|
|
|
|
EXPECT_EQ(0x34, buf[1]);
|
|
|
|
EXPECT_EQ(0x56, buf[2]);
|
|
|
|
EXPECT_EQ(0x78, buf[3]);
|
|
|
|
|
|
|
|
vector<byte> v(4);
|
|
|
|
SetInt32(v, 0, 0x12345678);
|
|
|
|
EXPECT_EQ(byte{0x12}, v[0]);
|
|
|
|
EXPECT_EQ(byte{0x34}, v[1]);
|
|
|
|
EXPECT_EQ(byte{0x56}, v[2]);
|
|
|
|
EXPECT_EQ(byte{0x78}, v[3]);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST(ScsiCommandUtilTest, SetInt64)
|
|
|
|
{
|
|
|
|
vector<BYTE> buf(8);
|
2022-10-01 15:56:06 +00:00
|
|
|
SetInt64(buf, 0, 0x1234567887654321);
|
2022-09-25 21:49:24 +00:00
|
|
|
EXPECT_EQ(0x12, buf[0]);
|
|
|
|
EXPECT_EQ(0x34, buf[1]);
|
|
|
|
EXPECT_EQ(0x56, buf[2]);
|
|
|
|
EXPECT_EQ(0x78, buf[3]);
|
|
|
|
EXPECT_EQ(0x87, buf[4]);
|
|
|
|
EXPECT_EQ(0x65, buf[5]);
|
|
|
|
EXPECT_EQ(0x43, buf[6]);
|
|
|
|
EXPECT_EQ(0x21, buf[7]);
|
|
|
|
}
|