2
0
mirror of https://github.com/boostorg/mysql.git synced 2026-02-16 13:32:15 +00:00
Files
mysql/test/unit/detail/protocol/capabilities.cpp
2020-04-20 11:36:31 +01:00

77 lines
2.0 KiB
C++

//
// Copyright (c) 2019-2020 Ruben Perez Hidalgo (rubenperez038 at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include "boost/mysql/detail/protocol/capabilities.hpp"
#include <gtest/gtest.h>
using namespace boost::mysql::detail;
using namespace testing;
TEST(Capabilities, Has_BitSet_ReturnsTrue)
{
capabilities caps (CLIENT_COMPRESS);
EXPECT_TRUE(caps.has(CLIENT_COMPRESS));
}
TEST(Capabilities, Has_BitNotSet_ReturnsFalse)
{
capabilities caps (CLIENT_COMPRESS);
EXPECT_FALSE(caps.has(CLIENT_SSL));
}
TEST(Capabilities, Has_MultipleBitsSet_ReturnsTrueForSetBits)
{
capabilities caps (
CLIENT_CONNECT_WITH_DB |
CLIENT_SSL |
CLIENT_COMPRESS);
for (int i = 0; i < 32; ++i)
{
std::uint32_t cap_bit = 1 << i;
bool is_set =
cap_bit == CLIENT_CONNECT_WITH_DB ||
cap_bit == CLIENT_SSL ||
cap_bit == CLIENT_COMPRESS;
EXPECT_EQ(caps.has(cap_bit), is_set);
}
}
struct CapabilitiesHasAllTest : public Test
{
capabilities rhs {CLIENT_CONNECT_WITH_DB | CLIENT_SSL | CLIENT_COMPRESS};
};
TEST_F(CapabilitiesHasAllTest, HasAll_HasNone_ReturnsFalse)
{
capabilities lhs (0);
EXPECT_FALSE(lhs.has_all(rhs));
}
TEST_F(CapabilitiesHasAllTest, HasAll_HasSomeButNotAll_ReturnsFalse)
{
capabilities lhs (CLIENT_CONNECT_WITH_DB | CLIENT_COMPRESS);
EXPECT_FALSE(lhs.has_all(rhs));
}
TEST_F(CapabilitiesHasAllTest, HasAll_HasSomeButNotAllPlusUnrelated_ReturnsFalse)
{
capabilities lhs (CLIENT_CONNECT_WITH_DB | CLIENT_COMPRESS | CLIENT_TRANSACTIONS);
EXPECT_FALSE(lhs.has_all(rhs));
}
TEST_F(CapabilitiesHasAllTest, HasAll_HasOnlyTheRequestedOnes_ReturnsTrue)
{
capabilities lhs (rhs);
EXPECT_TRUE(lhs.has_all(rhs));
}
TEST_F(CapabilitiesHasAllTest, HasAll_HasTheRequestedOnesAndOthers_ReturnsTrue)
{
capabilities lhs = rhs | capabilities(CLIENT_TRANSACTIONS);
EXPECT_TRUE(lhs.has_all(rhs));
}