File: optional.cpp

package info (click to toggle)
mapbox-variant 1.2.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,648 kB
  • sloc: cpp: 31,068; ansic: 959; python: 424; makefile: 145; objc: 59; sh: 36
file content (103 lines) | stat: -rw-r--r-- 1,914 bytes parent folder | download | duplicates (4)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "catch.hpp"

#include <mapbox/optional.hpp>

struct dummy
{
    dummy(int _m_1, int _m_2) : m_1(_m_1), m_2(_m_2) {}
    int m_1;
    int m_2;
};

TEST_CASE("optional can be instantiated with a POD type", "[optional]")
{
    mapbox::util::optional<int> dbl_opt;

    REQUIRE(!dbl_opt);
    dbl_opt = 3;
    REQUIRE(dbl_opt);

    REQUIRE(dbl_opt.get() == 3);
    REQUIRE(*dbl_opt == 3);
}

TEST_CASE("copy c'tor", "[optional]")
{
    mapbox::util::optional<int> dbl_opt;

    REQUIRE(!dbl_opt);
    dbl_opt = 3;
    REQUIRE(dbl_opt);

    mapbox::util::optional<int> other = dbl_opt;

    REQUIRE(other.get() == 3);
    REQUIRE(*other == 3);
}

TEST_CASE("const operator*, const get()", "[optional]")
{
    const mapbox::util::optional<int> dbl_opt = 3;

    REQUIRE(dbl_opt);

    auto pi1 = dbl_opt.get();
    auto pi2 = *dbl_opt;

    REQUIRE(pi1 == 3);
    REQUIRE(pi2 == 3);
}

TEST_CASE("non-const operator*, non-const get()", "[optional]")
{
    mapbox::util::optional<int> dbl_opt = 3;

    REQUIRE(dbl_opt);

    auto pi1 = dbl_opt.get();
    auto pi2 = *dbl_opt;

    REQUIRE(pi1 == 3);
    REQUIRE(pi2 == 3);
}

TEST_CASE("emplace initialization, reset", "[optional]")
{
    mapbox::util::optional<dummy> dummy_opt;
    REQUIRE(!dummy_opt);

    // rvalues, baby!
    dummy_opt.emplace(1, 2);
    REQUIRE(dummy_opt);
    REQUIRE(dummy_opt.get().m_1 == 1);
    REQUIRE((*dummy_opt).m_2 == 2);

    dummy_opt.reset();
    REQUIRE(!dummy_opt);
}

TEST_CASE("assignment", "[optional]")
{
    mapbox::util::optional<int> a;
    mapbox::util::optional<int> b;

    a = 1;
    b = 3;
    REQUIRE(a.get() == 1);
    REQUIRE(b.get() == 3);
    b = a;
    REQUIRE(a.get() == b.get());
    REQUIRE(b.get() == 1);
}

TEST_CASE("self assignment", "[optional]")
{
    mapbox::util::optional<int> a;

    a = 1;
    REQUIRE(a.get() == 1);
#if !defined(__clang__)
    a = a;
    REQUIRE(a.get() == 1);
#endif
}