Add a None type for the Iid class (when the iid is completely empty)
This commit is contained in:
+4
-1
@@ -34,9 +34,10 @@ Iid::Iid(const std::string& iid, const Bridge *bridge)
|
|||||||
|
|
||||||
void Iid::set_type(const std::set<char>& chantypes)
|
void Iid::set_type(const std::set<char>& chantypes)
|
||||||
{
|
{
|
||||||
|
if (this->local.empty() && this->server.empty())
|
||||||
|
this->type = Iid::Type::None;
|
||||||
if (this->local.empty())
|
if (this->local.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (chantypes.count(this->local[0]) == 1)
|
if (chantypes.count(this->local[0]) == 1)
|
||||||
this->type = Iid::Type::Channel;
|
this->type = Iid::Type::Channel;
|
||||||
else
|
else
|
||||||
@@ -105,6 +106,8 @@ namespace std {
|
|||||||
{
|
{
|
||||||
if (iid.type == Iid::Type::Server)
|
if (iid.type == Iid::Type::Server)
|
||||||
return iid.get_server();
|
return iid.get_server();
|
||||||
|
else if (iid.get_local().empty() && iid.get_server().empty())
|
||||||
|
return {};
|
||||||
else
|
else
|
||||||
return iid.get_encoded_local() + iid.separator + iid.get_server();
|
return iid.get_encoded_local() + iid.separator + iid.get_server();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public:
|
|||||||
Channel,
|
Channel,
|
||||||
User,
|
User,
|
||||||
Server,
|
Server,
|
||||||
|
None,
|
||||||
};
|
};
|
||||||
static constexpr char separator[]{"%"};
|
static constexpr char separator[]{"%"};
|
||||||
Iid(const std::string& iid, const std::set<char>& chantypes);
|
Iid(const std::string& iid, const std::set<char>& chantypes);
|
||||||
|
|||||||
@@ -83,6 +83,12 @@ TEST_CASE("Iid creation")
|
|||||||
CHECK(iid6.get_local() == "##channel");
|
CHECK(iid6.get_local() == "##channel");
|
||||||
CHECK(iid6.get_server() == "");
|
CHECK(iid6.get_server() == "");
|
||||||
CHECK(iid6.type == Iid::Type::Channel);
|
CHECK(iid6.type == Iid::Type::Channel);
|
||||||
|
|
||||||
|
Iid iid7("", chantypes);
|
||||||
|
CHECK(std::to_string(iid7) == "");
|
||||||
|
CHECK(iid7.get_local() == "");
|
||||||
|
CHECK(iid7.get_server() == "");
|
||||||
|
CHECK(iid7.type == Iid::Type::None);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Iid creation in fixed_server mode")
|
TEST_CASE("Iid creation in fixed_server mode")
|
||||||
|
|||||||
Reference in New Issue
Block a user