mirror of
https://github.com/akuker/RASCSI.git
synced 2026-04-24 07:16:46 +00:00
Move C++ code into cpp/ dir (#941)
- Moved C++ code to cpp/ from src/raspberrypi - Related updates to Makefile, easyinstall.sh, and the github build rules - Removed the native X68k C code in src/x68k from the repo
This commit is contained in:
@@ -0,0 +1,279 @@
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// SCSI Target Emulator RaSCSI Reloaded
|
||||
// for Raspberry Pi
|
||||
//
|
||||
// Copyright (C) 2022 Uwe Seimet
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#include "mocks.h"
|
||||
#include "rascsi_exceptions.h"
|
||||
#include "devices/device.h"
|
||||
|
||||
TEST(DeviceTest, Properties)
|
||||
{
|
||||
const int LUN = 5;
|
||||
|
||||
MockDevice device(LUN);
|
||||
|
||||
EXPECT_FALSE(device.IsReady()) << "Wrong default value";
|
||||
device.SetReady(true);
|
||||
EXPECT_TRUE(device.IsReady());
|
||||
device.SetReady(false);
|
||||
EXPECT_FALSE(device.IsReady());
|
||||
|
||||
EXPECT_FALSE(device.IsReset()) << "Wrong default value";
|
||||
device.SetReset(true);
|
||||
EXPECT_TRUE(device.IsReset());
|
||||
device.SetReset(false);
|
||||
EXPECT_FALSE(device.IsReset());
|
||||
|
||||
EXPECT_FALSE(device.IsAttn()) << "Wrong default value";
|
||||
device.SetAttn(true);
|
||||
EXPECT_TRUE(device.IsAttn());
|
||||
device.SetAttn(false);
|
||||
EXPECT_FALSE(device.IsAttn());
|
||||
|
||||
EXPECT_FALSE(device.IsReadOnly()) << "Wrong default value";
|
||||
device.SetReadOnly(true);
|
||||
EXPECT_TRUE(device.IsReadOnly());
|
||||
device.SetReadOnly(false);
|
||||
EXPECT_FALSE(device.IsReadOnly());
|
||||
|
||||
EXPECT_FALSE(device.IsProtectable()) << "Wrong default value";
|
||||
device.SetProtectable(true);
|
||||
EXPECT_TRUE(device.IsProtectable());
|
||||
device.SetProtectable(false);
|
||||
EXPECT_FALSE(device.IsProtectable());
|
||||
|
||||
EXPECT_FALSE(device.IsProtected()) << "Wrong default value";
|
||||
device.SetProtected(true);
|
||||
EXPECT_FALSE(device.IsProtected());
|
||||
device.SetProtectable(true);
|
||||
device.SetProtected(true);
|
||||
EXPECT_TRUE(device.IsProtected());
|
||||
device.SetProtected(false);
|
||||
EXPECT_FALSE(device.IsProtected());
|
||||
|
||||
device.SetProtectable(false);
|
||||
device.SetReadOnly(true);
|
||||
device.SetProtected(true);
|
||||
EXPECT_FALSE(device.IsProtected()) << "Read-only or not protectable devices cannot be protected";
|
||||
device.SetReadOnly(false);
|
||||
device.SetProtected(true);
|
||||
EXPECT_FALSE(device.IsProtected()) << "Read-only or not protectable devices cannot be protected";
|
||||
|
||||
EXPECT_FALSE(device.IsStoppable()) << "Wrong default value";
|
||||
device.SetStoppable(true);
|
||||
EXPECT_TRUE(device.IsStoppable());
|
||||
device.SetStoppable(false);
|
||||
EXPECT_FALSE(device.IsStoppable());
|
||||
|
||||
EXPECT_FALSE(device.IsStopped()) << "Wrong default value";
|
||||
device.SetStopped(true);
|
||||
EXPECT_TRUE(device.IsStopped());
|
||||
device.SetStopped(false);
|
||||
EXPECT_FALSE(device.IsStopped());
|
||||
|
||||
EXPECT_FALSE(device.IsRemovable()) << "Wrong default value";
|
||||
device.SetRemovable(true);
|
||||
EXPECT_TRUE(device.IsRemovable());
|
||||
device.SetRemovable(false);
|
||||
EXPECT_FALSE(device.IsRemovable());
|
||||
|
||||
EXPECT_FALSE(device.IsRemoved()) << "Wrong default value";
|
||||
device.SetRemoved(true);
|
||||
EXPECT_TRUE(device.IsRemoved());
|
||||
device.SetRemoved(false);
|
||||
EXPECT_FALSE(device.IsRemoved());
|
||||
|
||||
EXPECT_FALSE(device.IsLockable()) << "Wrong default value";
|
||||
device.SetLockable(true);
|
||||
EXPECT_TRUE(device.IsLockable());
|
||||
device.SetLockable(false);
|
||||
EXPECT_FALSE(device.IsLockable());
|
||||
|
||||
EXPECT_FALSE(device.IsLocked()) << "Wrong default value";
|
||||
device.SetLocked(true);
|
||||
EXPECT_TRUE(device.IsLocked());
|
||||
device.SetLocked(false);
|
||||
EXPECT_FALSE(device.IsLocked());
|
||||
|
||||
EXPECT_FALSE(device.SupportsParams()) << "Wrong default value";
|
||||
device.SupportsParams(true);
|
||||
EXPECT_TRUE(device.SupportsParams());
|
||||
device.SupportsParams(false);
|
||||
EXPECT_FALSE(device.SupportsParams());
|
||||
|
||||
EXPECT_FALSE(device.SupportsFile()) << "Wrong default value";
|
||||
device.SupportsFile(true);
|
||||
EXPECT_TRUE(device.SupportsFile());
|
||||
device.SupportsFile(false);
|
||||
EXPECT_FALSE(device.SupportsFile());
|
||||
|
||||
EXPECT_EQ(LUN, device.GetLun());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, GetTypeString)
|
||||
{
|
||||
MockDevice schd(SCHD);
|
||||
EXPECT_STREQ("SCHD", schd.GetTypeString());
|
||||
|
||||
MockDevice scrm(SCRM);
|
||||
EXPECT_STREQ("SCRM", scrm.GetTypeString());
|
||||
|
||||
MockDevice scmo(SCMO);
|
||||
EXPECT_STREQ("SCMO", scmo.GetTypeString());
|
||||
|
||||
MockDevice sccd(SCCD);
|
||||
EXPECT_STREQ("SCCD", sccd.GetTypeString());
|
||||
|
||||
MockDevice schs(SCHS);
|
||||
EXPECT_STREQ("SCHS", schs.GetTypeString());
|
||||
|
||||
MockDevice scbr(SCBR);
|
||||
EXPECT_STREQ("SCBR", scbr.GetTypeString());
|
||||
|
||||
MockDevice scdp(SCDP);
|
||||
EXPECT_STREQ("SCDP", scdp.GetTypeString());
|
||||
|
||||
MockDevice sclp(SCLP);
|
||||
EXPECT_STREQ("SCLP", sclp.GetTypeString());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Vendor)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
EXPECT_THROW(device.SetVendor(""), invalid_argument);
|
||||
EXPECT_THROW(device.SetVendor("123456789"), invalid_argument);
|
||||
device.SetVendor("12345678");
|
||||
EXPECT_EQ("12345678", device.GetVendor());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Product)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
EXPECT_THROW(device.SetProduct(""), invalid_argument);
|
||||
EXPECT_THROW(device.SetProduct("12345678901234567"), invalid_argument);
|
||||
device.SetProduct("1234567890123456");
|
||||
EXPECT_EQ("1234567890123456", device.GetProduct());
|
||||
device.SetProduct("xyz", false);
|
||||
EXPECT_EQ("1234567890123456", device.GetProduct()) << "Changing vital product data is not SCSI compliant";
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Revision)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
EXPECT_THROW(device.SetRevision(""), invalid_argument);
|
||||
EXPECT_THROW(device.SetRevision("12345"), invalid_argument);
|
||||
device.SetRevision("1234");
|
||||
EXPECT_EQ("1234", device.GetRevision());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, GetPaddedName)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
device.SetVendor("V");
|
||||
device.SetProduct("P");
|
||||
device.SetRevision("R");
|
||||
|
||||
EXPECT_EQ("V P R ", device.GetPaddedName());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Params)
|
||||
{
|
||||
MockDevice device(0);
|
||||
unordered_map<string, string> params;
|
||||
params["key"] = "value";
|
||||
|
||||
EXPECT_EQ("", device.GetParam("key"));
|
||||
|
||||
device.SetParams(params);
|
||||
EXPECT_EQ("", device.GetParam("key"));
|
||||
|
||||
unordered_map<string, string> default_params;
|
||||
default_params["key"] = "value";
|
||||
device.SetDefaultParams(default_params);
|
||||
EXPECT_EQ("", device.GetParam("key"));
|
||||
|
||||
device.SetParams(params);
|
||||
EXPECT_EQ("value", device.GetParam("key"));
|
||||
}
|
||||
|
||||
TEST(DeviceTest, StatusCode)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
device.SetStatusCode(123);
|
||||
EXPECT_EQ(123, device.GetStatusCode());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Reset)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
device.SetLocked(true);
|
||||
device.SetAttn(true);
|
||||
device.SetReset(true);
|
||||
device.Reset();
|
||||
EXPECT_FALSE(device.IsLocked());
|
||||
EXPECT_FALSE(device.IsAttn());
|
||||
EXPECT_FALSE(device.IsReset());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Start)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
device.SetStopped(true);
|
||||
device.SetReady(false);
|
||||
EXPECT_FALSE(device.Start());
|
||||
EXPECT_TRUE(device.IsStopped());
|
||||
device.SetReady(true);
|
||||
EXPECT_TRUE(device.Start());
|
||||
EXPECT_FALSE(device.IsStopped());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Stop)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
device.SetReady(true);
|
||||
device.SetAttn(true);
|
||||
device.SetStopped(false);
|
||||
device.Stop();
|
||||
EXPECT_FALSE(device.IsReady());
|
||||
EXPECT_FALSE(device.IsAttn());
|
||||
EXPECT_TRUE(device.IsStopped());
|
||||
}
|
||||
|
||||
TEST(DeviceTest, Eject)
|
||||
{
|
||||
MockDevice device(0);
|
||||
|
||||
device.SetReady(false);
|
||||
device.SetRemovable(false);
|
||||
EXPECT_FALSE(device.Eject(false));
|
||||
|
||||
device.SetReady(true);
|
||||
EXPECT_FALSE(device.Eject(false));
|
||||
|
||||
device.SetRemovable(true);
|
||||
device.SetLocked(true);
|
||||
EXPECT_FALSE(device.Eject(false));
|
||||
EXPECT_TRUE(device.Eject(true));
|
||||
|
||||
device.SetReady(true);
|
||||
device.SetLocked(false);
|
||||
EXPECT_TRUE(device.Eject(false));
|
||||
EXPECT_FALSE(device.IsReady());
|
||||
EXPECT_FALSE(device.IsAttn());
|
||||
EXPECT_TRUE(device.IsRemoved());
|
||||
EXPECT_FALSE(device.IsLocked());
|
||||
EXPECT_TRUE(device.IsStopped());
|
||||
}
|
||||
Reference in New Issue
Block a user