Skip to content
Snippets Groups Projects

First unit tests

Merged Leon Dietrich requested to merge first_unit_tests into master
Compare and Show latest version
4 files
+ 87
22
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 26
8
@@ -74,6 +74,14 @@ public:
len = sizeof(T);
}
explicit socketaddr(const sockaddr_storage *other) : addr{}, len{} {
*this = other;
}
explicit socketaddr(const sockaddr_storage &other) : addr{}, len{} {
*this = &other;
}
template <typename T, typename std::enable_if<has_field<T>::value, T>::type * = nullptr>
explicit socketaddr(const T& other) : addr{}, len{} {
if (other.*(family_map<T>::sa_family_field) != family_map<T>::sa_family) {
@@ -141,21 +149,27 @@ COMPILER_RESTORE("-Weffc++");
return len;
}
inline bool operator==(const socketaddr& _other) {
if (this->family() != _other.family()) {
inline bool operator==(const socketaddr& _other) const {
if (!(this->family() == _other.family())) {
return false;
}
switch (_other.family()) {
case AF_INET:
return (((sockaddr_in*) &this->addr)->sin_addr.s_addr == ((sockaddr_in*) &_other.addr)->sin_addr.s_addr)
&& (((sockaddr_in*) &this->addr)->sin_port == ((sockaddr_in*) &_other.addr)->sin_port);
case AF_INET6:
return memcmp(&((sockaddr_in6*) &this->addr)->sin6_addr, &((sockaddr_in6*) &_other.addr)->sin6_addr, sizeof(in6_addr))
case AF_INET6:
return 0 == memcmp(&((sockaddr_in6*) &this->addr)->sin6_addr, &((sockaddr_in6*) &_other.addr)->sin6_addr, sizeof(in6_addr))
&& (((sockaddr_in6*) &this->addr)->sin6_port == ((sockaddr_in6*) &_other.addr)->sin6_port);
default:
return this->len == _other.len && memcmp(&this->addr, &_other.addr, this->len);
}
return true;
default:
return
this->len == _other.len &&
0 == memcmp(&this->addr, &_other.addr, this->len);
}
return true;
}
inline bool operator!=(const socketaddr& _other) const {
return !(*this == _other);
}
std::string str() const {
@@ -189,4 +203,8 @@ COMPILER_RESTORE("-Weffc++");
};
static inline std::ostream& operator<<(std::ostream& os, const socketaddr& sockaddr) {
return os << sockaddr.str();
}
}
Loading