//===- STLForwardCompatTest.cpp - Unit tests for STLForwardCompat ---------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/ADT/STLForwardCompat.h" #include "gtest/gtest.h" namespace { TEST(STLForwardCompatTest, NegationTest) { EXPECT_TRUE((llvm::negation::value)); EXPECT_FALSE((llvm::negation::value)); } struct incomplete_type; TEST(STLForwardCompatTest, ConjunctionTest) { EXPECT_TRUE((llvm::conjunction<>::value)); EXPECT_FALSE((llvm::conjunction::value)); EXPECT_TRUE((llvm::conjunction::value)); EXPECT_FALSE((llvm::conjunction::value)); EXPECT_FALSE((llvm::conjunction::value)); EXPECT_FALSE((llvm::conjunction::value)); EXPECT_TRUE((llvm::conjunction::value)); EXPECT_TRUE((llvm::conjunction::value)); } TEST(STLForwardCompatTest, DisjunctionTest) { EXPECT_FALSE((llvm::disjunction<>::value)); EXPECT_FALSE((llvm::disjunction::value)); EXPECT_TRUE((llvm::disjunction::value)); EXPECT_TRUE((llvm::disjunction::value)); EXPECT_TRUE((llvm::disjunction::value)); EXPECT_TRUE((llvm::disjunction::value)); EXPECT_TRUE((llvm::disjunction::value)); EXPECT_TRUE((llvm::disjunction::value)); } template class STLForwardCompatRemoveCVRefTest : public ::testing::Test {}; using STLForwardCompatRemoveCVRefTestTypes = ::testing::Types< // clang-format off std::pair, std::pair, std::pair, std::pair, std::pair, std::pair, std::pair, std::pair, std::pair // clang-format on >; TYPED_TEST_SUITE(STLForwardCompatRemoveCVRefTest, STLForwardCompatRemoveCVRefTestTypes, ); TYPED_TEST(STLForwardCompatRemoveCVRefTest, RemoveCVRef) { using From = typename TypeParam::first_type; using To = typename TypeParam::second_type; EXPECT_TRUE( (std::is_same::type, To>::value)); } TYPED_TEST(STLForwardCompatRemoveCVRefTest, RemoveCVRefT) { using From = typename TypeParam::first_type; EXPECT_TRUE((std::is_same::type, llvm::remove_cvref_t>::value)); } } // namespace