xref: /aosp_15_r20/external/angle/src/common/Optional_unittest.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1  //
2  // Copyright 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