• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)15 void SetUpTailCall(UnlockedTailCall *unlockedTailCall, int *result)
16 {
17     unlockedTailCall->add([result]() { ++*result; });
18 }
19 
20 // Test basic functionality
TEST(UnlockedTailCall,Basic)21 TEST(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