summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/src/common/Optional_unittest.cpp
blob: 2d3821b488e6e2b8e10622ac1a1ec9ea4724ff4b (plain)
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
//
// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Unit tests for ANGLE's Optional helper class.
//

#include "gmock/gmock.h"
#include "gtest/gtest.h"

#include "common/Optional.h"

namespace
{

TEST(OptionalTest, BasicInvalid)
{
    Optional<int> testInvalid;
    ASSERT_FALSE(testInvalid.valid());
    ASSERT_EQ(Optional<int>::None(), testInvalid);
}

TEST(OptionalTest, BasicValid)
{
    Optional<int> testValid(3);
    ASSERT_TRUE(testValid.valid());
    ASSERT_EQ(3, testValid.value());
    ASSERT_NE(Optional<int>::None(), testValid);
}

TEST(OptionalTest, Copies)
{
    Optional<int> testValid(3);
    Optional<int> testInvalid;

    Optional<int> testCopy = testInvalid;
    ASSERT_FALSE(testCopy.valid());
    ASSERT_EQ(testInvalid, testCopy);

    testCopy = testValid;
    ASSERT_TRUE(testCopy.valid());
    ASSERT_EQ(3, testCopy.value());
    ASSERT_EQ(testValid, testCopy);
}

} // namespace