summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/common/Optional_unittest.cpp
blob: 810046184621d31831507662489a48e83d029da1 (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>::Invalid(), testInvalid);
}

TEST(OptionalTest, BasicValid)
{
    Optional<int> testValid(3);
    ASSERT_TRUE(testValid.valid());
    ASSERT_EQ(3, testValid.value());
    ASSERT_NE(Optional<int>::Invalid(), 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