blob: 1c1a3079f8a78333587838567735ab0c2ce954c7 [file] [log] [blame]
mistergc2e75482017-09-19 16:54:40 -04001// Copyright 2017 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//
nik727338b70432019-03-08 10:27:53 -05007// https://www.apache.org/licenses/LICENSE-2.0
mistergc2e75482017-09-19 16:54:40 -04008//
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/algorithm/algorithm.h"
16
Abseil Team00478de2024-08-05 22:54:56 -070017#include <array>
mistergc2e75482017-09-19 16:54:40 -040018#include <vector>
19
mistergc2e75482017-09-19 16:54:40 -040020#include "gtest/gtest.h"
Derek Mauro10ec11d2022-06-14 13:10:59 -070021#include "absl/base/config.h"
mistergc2e75482017-09-19 16:54:40 -040022
23namespace {
24
mistergc2e75482017-09-19 16:54:40 -040025class LinearSearchTest : public testing::Test {
26 protected:
27 LinearSearchTest() : container_{1, 2, 3} {}
28
29 static bool Is3(int n) { return n == 3; }
30 static bool Is4(int n) { return n == 4; }
31
32 std::vector<int> container_;
33};
34
35TEST_F(LinearSearchTest, linear_search) {
36 EXPECT_TRUE(absl::linear_search(container_.begin(), container_.end(), 3));
37 EXPECT_FALSE(absl::linear_search(container_.begin(), container_.end(), 4));
38}
39
40TEST_F(LinearSearchTest, linear_searchConst) {
41 const std::vector<int> *const const_container = &container_;
42 EXPECT_TRUE(
43 absl::linear_search(const_container->begin(), const_container->end(), 3));
44 EXPECT_FALSE(
45 absl::linear_search(const_container->begin(), const_container->end(), 4));
46}
47
Abseil Team00478de2024-08-05 22:54:56 -070048#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
49 ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L
50
51TEST_F(LinearSearchTest, Constexpr) {
52 static constexpr std::array<int, 3> kArray = {1, 2, 3};
53 static_assert(absl::linear_search(kArray.begin(), kArray.end(), 3));
54 static_assert(!absl::linear_search(kArray.begin(), kArray.end(), 4));
55}
56
57#endif // defined(ABSL_INTERNAL_CPLUSPLUS_LANG) &&
58 // ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L
59
mistergc2e75482017-09-19 16:54:40 -040060} // namespace