• 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](void *resultOut) {
18         (void)resultOut;
19         ++*result;
20     });
21 }
22 
23 // Test basic functionality
TEST(UnlockedTailCall,Basic)24 TEST(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