blob: bedcb32211376213397348c83132e20d8d9a55de [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#define ZXC_TYPE_TRAITS_INTERNAL_TEST
#include <lib/fitx/internal/type_traits.h>
static_assert(std::is_same<::fitx::internal::void_t<>, void>::value);
static_assert(std::is_same<::fitx::internal::void_t<int>, void>::value);
static_assert(std::is_same<::fitx::internal::void_t<int, int>, void>::value);
static_assert(::fitx::internal::conjunction_v<> == true);
static_assert(::fitx::internal::conjunction_v<std::false_type> == false);
static_assert(::fitx::internal::conjunction_v<std::true_type> == true);
static_assert(::fitx::internal::conjunction_v<std::false_type, std::false_type> == false);
static_assert(::fitx::internal::conjunction_v<std::false_type, std::true_type> == false);
static_assert(::fitx::internal::conjunction_v<std::true_type, std::false_type> == false);
static_assert(::fitx::internal::conjunction_v<std::true_type, std::true_type> == true);
static_assert(::fitx::internal::conjunction_v<std::false_type, std::false_type, std::false_type,
std::false_type, std::false_type, std::false_type> ==
false);
static_assert(::fitx::internal::conjunction_v<std::false_type, std::false_type, std::false_type,
std::false_type, std::false_type, std::true_type> ==
false);
static_assert(::fitx::internal::conjunction_v<std::true_type, std::true_type, std::true_type,
std::true_type, std::true_type, std::true_type> ==
true);
static_assert(::fitx::internal::conjunction_v<std::true_type, std::true_type, std::true_type,
std::true_type, std::true_type, std::false_type> ==
false);
static_assert(::fitx::internal::disjunction_v<> == false);
static_assert(::fitx::internal::disjunction_v<std::false_type> == false);
static_assert(::fitx::internal::disjunction_v<std::true_type> == true);
static_assert(::fitx::internal::disjunction_v<std::false_type, std::false_type> == false);
static_assert(::fitx::internal::disjunction_v<std::false_type, std::true_type> == true);
static_assert(::fitx::internal::disjunction_v<std::true_type, std::false_type> == true);
static_assert(::fitx::internal::disjunction_v<std::true_type, std::true_type> == true);
static_assert(::fitx::internal::disjunction_v<std::false_type, std::false_type, std::false_type,
std::false_type, std::false_type, std::false_type> ==
false);
static_assert(::fitx::internal::disjunction_v<std::false_type, std::false_type, std::false_type,
std::false_type, std::false_type, std::true_type> ==
true);
static_assert(::fitx::internal::disjunction_v<std::true_type, std::true_type, std::true_type,
std::true_type, std::true_type, std::true_type> ==
true);
static_assert(::fitx::internal::disjunction_v<std::true_type, std::true_type, std::true_type,
std::true_type, std::true_type, std::false_type> ==
true);
static_assert(::fitx::internal::negation_v<std::false_type> == true);
static_assert(::fitx::internal::negation_v<std::true_type> == false);