1 // 2 // Copyright 2023 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 7 // UnlockedTailCall_unittest.cpp: Unit tests of the UnlockedTailCall class. 8 9 #include <gtest/gtest.h> 10 11 #include "libANGLE/angletypes.h" 12 13 namespace angle 14 { SetUpTailCall(UnlockedTailCall * unlockedTailCall,int * result)15void SetUpTailCall(UnlockedTailCall *unlockedTailCall, int *result) 16 { 17 unlockedTailCall->add([result](void *resultOut) { 18 (void)resultOut; 19 ++*result; 20 }); 21 } 22 23 // Test basic functionality TEST(UnlockedTailCall,Basic)24TEST(UnlockedTailCall, Basic) 25 { 26 int a = 10; 27 int b = 500; 28 29 UnlockedTailCall unlockedTailCall; 30 ASSERT_FALSE(unlockedTailCall.any()); 31 32 SetUpTailCall(&unlockedTailCall, &a); 33 ASSERT_TRUE(unlockedTailCall.any()); 34 35 SetUpTailCall(&unlockedTailCall, &b); 36 ASSERT_TRUE(unlockedTailCall.any()); 37 38 unlockedTailCall.run(nullptr); 39 ASSERT_EQ(a, 11); 40 ASSERT_EQ(b, 501); 41 } 42 } // namespace angle 43