File: test_pair.cpp

package info (click to toggle)
gridtools 2.3.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 29,480 kB
  • sloc: cpp: 228,792; python: 17,561; javascript: 9,164; ansic: 4,101; sh: 850; makefile: 231; f90: 201
file content (78 lines) | stat: -rw-r--r-- 2,162 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
 * GridTools
 *
 * Copyright (c) 2014-2023, ETH Zurich
 * All rights reserved.
 *
 * Please, refer to the LICENSE file in the root directory.
 * SPDX-License-Identifier: BSD-3-Clause
 */
#include <gridtools/common/pair.hpp>

#include <type_traits>

#include <gtest/gtest.h>

TEST(pair, non_uniform_ctor) {
    int int_val = 1;
    size_t size_t_val = 2;

    gridtools::pair<size_t, size_t> my_pair(int_val, size_t_val);

    EXPECT_EQ((size_t)int_val, my_pair.first);
    EXPECT_EQ(size_t_val, my_pair.second);
}

TEST(pair, get_rval_ref) {
    size_t val0 = 1;
    size_t val1 = 2;

    EXPECT_TRUE(
        std::is_rvalue_reference<decltype(gridtools::get<0>(gridtools::pair<size_t, size_t>{val0, val1}))>::value);
    EXPECT_EQ(val0, gridtools::get<0>(gridtools::pair<size_t, size_t>{val0, val1}));
    EXPECT_EQ(val1, gridtools::get<1>(gridtools::pair<size_t, size_t>{val0, val1}));
}

TEST(pair, eq) {
    gridtools::pair<size_t, size_t> pair1{1, 2};
    gridtools::pair<size_t, size_t> pair2{pair1};

    EXPECT_TRUE(pair1 == pair2);
    EXPECT_FALSE(pair1 != pair2);
    EXPECT_FALSE(pair1 < pair2);
    EXPECT_TRUE(pair1 <= pair2);
    EXPECT_FALSE(pair1 > pair2);
    EXPECT_TRUE(pair1 >= pair2);
}
TEST(pair, compare_first_differ) {
    gridtools::pair<size_t, size_t> smaller{1, 2};
    gridtools::pair<size_t, size_t> bigger{2, 2};

    EXPECT_FALSE(smaller == bigger);
    EXPECT_TRUE(smaller != bigger);
    EXPECT_TRUE(smaller < bigger);
    EXPECT_TRUE(smaller <= bigger);
    EXPECT_FALSE(smaller > bigger);
    EXPECT_FALSE(smaller >= bigger);
}

TEST(pair, lt_gt_second_differ) {
    gridtools::pair<size_t, size_t> smaller{1, 1};
    gridtools::pair<size_t, size_t> bigger{1, 2};

    EXPECT_FALSE(smaller == bigger);
    EXPECT_TRUE(smaller != bigger);
    EXPECT_TRUE(smaller < bigger);
    EXPECT_TRUE(smaller <= bigger);
    EXPECT_FALSE(smaller > bigger);
    EXPECT_FALSE(smaller >= bigger);
}

TEST(pair, construct_from_std_pair) {
    std::pair<size_t, size_t> std_pair{1, 2};

    gridtools::pair<size_t, size_t> gt_pair(std_pair);

    ASSERT_EQ(std_pair.first, gt_pair.first);
    ASSERT_EQ(std_pair.second, gt_pair.second);
}