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