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]() { ++*result; }); 18 } 19 20 // Test basic functionality TEST(UnlockedTailCall,Basic)21TEST(UnlockedTailCall, Basic) 22 { 23 int a = 10; 24 int b = 500; 25 26 UnlockedTailCall unlockedTailCall; 27 ASSERT_FALSE(unlockedTailCall.any()); 28 29 SetUpTailCall(&unlockedTailCall, &a); 30 ASSERT_TRUE(unlockedTailCall.any()); 31 32 SetUpTailCall(&unlockedTailCall, &b); 33 ASSERT_TRUE(unlockedTailCall.any()); 34 35 unlockedTailCall.run(); 36 ASSERT_EQ(a, 11); 37 ASSERT_EQ(b, 501); 38 } 39 } // namespace angle 40