blob: 59e7e1d3e6c387d3c0d5a3e530f427bfe1535cff [file] [log] [blame]
Abseil Team9e1789f2023-09-13 07:57:51 -07001// Copyright 2023 The Abseil Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "absl/strings/has_absl_stringify.h"
16
17#include <string>
18
19#include "gtest/gtest.h"
Zie Weaver9687a8e2023-10-18 16:17:51 -070020#include "absl/types/optional.h"
Abseil Team9e1789f2023-09-13 07:57:51 -070021
22namespace {
23
24struct TypeWithoutAbslStringify {};
25
26struct TypeWithAbslStringify {
27 template <typename Sink>
28 friend void AbslStringify(Sink&, const TypeWithAbslStringify&) {}
29};
30
31TEST(HasAbslStringifyTest, Works) {
32 EXPECT_FALSE(absl::HasAbslStringify<int>::value);
33 EXPECT_FALSE(absl::HasAbslStringify<std::string>::value);
34 EXPECT_FALSE(absl::HasAbslStringify<TypeWithoutAbslStringify>::value);
35 EXPECT_TRUE(absl::HasAbslStringify<TypeWithAbslStringify>::value);
Zie Weaver9687a8e2023-10-18 16:17:51 -070036 EXPECT_FALSE(
37 absl::HasAbslStringify<absl::optional<TypeWithAbslStringify>>::value);
Abseil Team9e1789f2023-09-13 07:57:51 -070038}
39
40} // namespace