Changes imported from Abseil "staging" branch:
- 0320844dcd8219965647f86db7c6c7296e40e41e Introduce internal macros for inline variable emulation s... by Matt Calabrese <calabrese@google.com> - 85197d0105805e6aab3a0a648351cb1582a61be0 Internal change. by Alex Strelnikov <strel@google.com> GitOrigin-RevId: 0320844dcd8219965647f86db7c6c7296e40e41e Change-Id: I7dce37f6839ff099462951059a9047c5c9377638
This commit is contained in:
parent
dcf112f074
commit
cf1db73d2a
10 changed files with 285 additions and 11 deletions
62
absl/base/inline_variable_test.cc
Normal file
62
absl/base/inline_variable_test.cc
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
// Copyright 2017 The Abseil Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include "absl/base/internal/inline_variable.h"
|
||||
#include "absl/base/internal/inline_variable_testing.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
namespace absl {
|
||||
namespace inline_variable_testing_internal {
|
||||
namespace {
|
||||
|
||||
TEST(InlineVariableTest, Constexpr) {
|
||||
static_assert(inline_variable_foo.value == 5, "");
|
||||
static_assert(other_inline_variable_foo.value == 5, "");
|
||||
static_assert(inline_variable_int == 5, "");
|
||||
static_assert(other_inline_variable_int == 5, "");
|
||||
}
|
||||
|
||||
TEST(InlineVariableTest, DefaultConstructedIdentityEquality) {
|
||||
EXPECT_EQ(get_foo_a().value, 5);
|
||||
EXPECT_EQ(get_foo_b().value, 5);
|
||||
EXPECT_EQ(&get_foo_a(), &get_foo_b());
|
||||
}
|
||||
|
||||
TEST(InlineVariableTest, DefaultConstructedIdentityInequality) {
|
||||
EXPECT_NE(&inline_variable_foo, &other_inline_variable_foo);
|
||||
}
|
||||
|
||||
TEST(InlineVariableTest, InitializedIdentityEquality) {
|
||||
EXPECT_EQ(get_int_a(), 5);
|
||||
EXPECT_EQ(get_int_b(), 5);
|
||||
EXPECT_EQ(&get_int_a(), &get_int_b());
|
||||
}
|
||||
|
||||
TEST(InlineVariableTest, InitializedIdentityInequality) {
|
||||
EXPECT_NE(&inline_variable_int, &other_inline_variable_int);
|
||||
}
|
||||
|
||||
TEST(InlineVariableTest, FunPtrType) {
|
||||
static_assert(
|
||||
std::is_same<void(*)(),
|
||||
std::decay<decltype(inline_variable_fun_ptr)>::type>::value,
|
||||
"");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace inline_variable_testing_internal
|
||||
} // namespace absl
|
||||
Loading…
Add table
Add a link
Reference in a new issue