1 //
2 // Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // Unit tests for ANGLE's Optional helper class.
7 //
8 
9 #include "gmock/gmock.h"
10 #include "gtest/gtest.h"
11 
12 #include "common/Optional.h"
13 
14 namespace
15 {
16 
TEST(OptionalTest,BasicInvalid)17 TEST(OptionalTest, BasicInvalid)
18 {
19     Optional<int> testInvalid;
20     ASSERT_FALSE(testInvalid.valid());
21     ASSERT_EQ(Optional<int>::Invalid(), testInvalid);
22 }
23 
TEST(OptionalTest,BasicValid)24 TEST(OptionalTest, BasicValid)
25 {
26     Optional<int> testValid(3);
27     ASSERT_TRUE(testValid.valid());
28     ASSERT_EQ(3, testValid.value());
29     ASSERT_NE(Optional<int>::Invalid(), testValid);
30 }
31 
TEST(OptionalTest,Copies)32 TEST(OptionalTest, Copies)
33 {
34     Optional<int> testValid(3);
35     Optional<int> testInvalid;
36 
37     Optional<int> testCopy = testInvalid;
38     ASSERT_FALSE(testCopy.valid());
39     ASSERT_EQ(testInvalid, testCopy);
40 
41     testCopy = testValid;
42     ASSERT_TRUE(testCopy.valid());
43     ASSERT_EQ(3, testCopy.value());
44     ASSERT_EQ(testValid, testCopy);
45 }
46 
47 } // namespace
48