mirror of
https://github.com/JHUAPL/kami.git
synced 2026-01-08 14:33:53 -05:00
Generalize coordinates to location
This commit is contained in:
@@ -18,11 +18,11 @@ namespace kami::error {
|
||||
explicit AgentNotFound(const std::string &s) : std::logic_error(s) {};
|
||||
};
|
||||
|
||||
class CoordinatesInvalid : public std::domain_error {
|
||||
class LocationInvalid : public std::domain_error {
|
||||
public:
|
||||
explicit CoordinatesInvalid(const char *s) : std::domain_error(s) {};
|
||||
explicit LocationInvalid(const char *s) : std::domain_error(s) {};
|
||||
|
||||
explicit CoordinatesInvalid(const std::string &s) : std::domain_error(s) {};
|
||||
explicit LocationInvalid(const std::string &s) : std::domain_error(s) {};
|
||||
};
|
||||
|
||||
class LocationUnavailable : public std::domain_error {
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace kami {
|
||||
|
||||
AgentID MultiGrid1D::add_agent(const AgentID agent_id, const GridCoord1D &coord) {
|
||||
if (!is_location_valid(coord))
|
||||
throw error::CoordinatesInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
throw error::LocationInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
|
||||
_agent_index->insert(std::pair<AgentID, GridCoord1D>(agent_id, coord));
|
||||
_agent_grid->insert(std::pair<GridCoord1D, AgentID>(coord, agent_id));
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace kami {
|
||||
|
||||
AgentID MultiGrid2D::add_agent(const AgentID agent_id, const GridCoord2D &coord) {
|
||||
if (!is_location_valid(coord))
|
||||
throw error::CoordinatesInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
throw error::LocationInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
|
||||
_agent_index->insert(std::pair<AgentID, GridCoord2D>(agent_id, coord));
|
||||
_agent_grid->insert(std::pair<GridCoord2D, AgentID>(coord, agent_id));
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace kami {
|
||||
|
||||
AgentID SoloGrid1D::add_agent(const AgentID agent_id, const GridCoord1D &coord) {
|
||||
if (!is_location_valid(coord))
|
||||
throw error::CoordinatesInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
throw error::LocationInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
if (!is_location_empty(coord))
|
||||
throw error::LocationUnavailable(fmt::format("Coordinates {} already occupied", coord.to_string()));
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace kami {
|
||||
|
||||
AgentID SoloGrid2D::add_agent(const AgentID agent_id, const GridCoord2D &coord) {
|
||||
if (!is_location_valid(coord))
|
||||
throw error::CoordinatesInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
throw error::LocationInvalid(fmt::format("Coordinates {} are invalid", coord.to_string()));
|
||||
if (!is_location_empty(coord))
|
||||
throw error::LocationUnavailable(fmt::format("Coordinates {} already occupied", coord.to_string()));
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ TEST(MultiGrid1D, move_agent) {
|
||||
MultiGrid1D multigrid1d_foo(10, true);
|
||||
|
||||
static_cast<void>(multigrid1d_foo.add_agent(agent_id_foo, coord2));
|
||||
EXPECT_THROW(auto agent_id_baz = multigrid1d_foo.move_agent(agent_id_foo, coord10), CoordinatesInvalid);
|
||||
EXPECT_THROW(auto agent_id_baz = multigrid1d_foo.move_agent(agent_id_foo, coord10), LocationInvalid);
|
||||
}
|
||||
{
|
||||
MultiGrid1D multigrid1d_foo(10, true);
|
||||
|
||||
@@ -198,7 +198,7 @@ TEST(MultiGrid2D, move_agent) {
|
||||
MultiGrid2D multigrid2d_foo(10, 10, true, true);
|
||||
|
||||
static_cast<void>(multigrid2d_foo.add_agent(agent_id_foo, coord2));
|
||||
EXPECT_THROW(auto agent_id_baz = multigrid2d_foo.move_agent(agent_id_foo, coord10), CoordinatesInvalid);
|
||||
EXPECT_THROW(auto agent_id_baz = multigrid2d_foo.move_agent(agent_id_foo, coord10), LocationInvalid);
|
||||
}
|
||||
{
|
||||
MultiGrid2D multigrid2d_foo(10, 10, true, true);
|
||||
|
||||
@@ -195,7 +195,7 @@ TEST(SoloGrid1D, move_agent) {
|
||||
SoloGrid1D sologrid1d_foo(10, true);
|
||||
|
||||
static_cast<void>(sologrid1d_foo.add_agent(agent_id_foo, coord2));
|
||||
EXPECT_THROW(auto agent_id_baz = sologrid1d_foo.move_agent(agent_id_foo, coord10), CoordinatesInvalid);
|
||||
EXPECT_THROW(auto agent_id_baz = sologrid1d_foo.move_agent(agent_id_foo, coord10), LocationInvalid);
|
||||
}
|
||||
{
|
||||
SoloGrid1D sologrid1d_foo(10, true);
|
||||
|
||||
@@ -193,7 +193,7 @@ TEST(SoloGrid2D, move_agent) {
|
||||
SoloGrid2D sologrid2d_foo(10, 10, true, true);
|
||||
|
||||
static_cast<void>(sologrid2d_foo.add_agent(agent_id_foo, coord2));
|
||||
EXPECT_THROW(auto agent_id_baz = sologrid2d_foo.move_agent(agent_id_foo, coord10), CoordinatesInvalid);
|
||||
EXPECT_THROW(auto agent_id_baz = sologrid2d_foo.move_agent(agent_id_foo, coord10), LocationInvalid);
|
||||
}
|
||||
{
|
||||
SoloGrid2D sologrid2d_foo(10, 10, true, true);
|
||||
|
||||
Reference in New Issue
Block a user