Rename newtestsuite to testsuite
[dyninst.git] / testsuite / src / dyninst / test1_31_mutatee.c
1 #include "mutatee_util.h"
2
3 /* group_mutatee_boilerplate.c is prepended to this file by the make system */
4
5 /* Externally accessed function prototypes.  These must have globally unique
6  * names.  I suggest following the pattern <testname>_<function>
7  */
8
9 void test1_31_func2();
10 void test1_31_func3();
11 void test1_31_func4( int value );
12
13 /* Global variables accessed by the mutator.  These must have globally unique
14  * names.
15  */
16
17 /* Internally used function prototypes.  These should be declared with the
18  * keyword static so they don't interfere with other mutatees in the group.
19  */
20
21 /* Global variables used internally by the mutatee.  These should be declared
22  * with the keyword static so they don't interfere with other mutatees in the
23  * group.
24  */
25
26 static int globalVariable31_1 = 0;
27 static int globalVariable31_2 = 0;
28 static int globalVariable31_3 = 0;
29 static int globalVariable31_4 = 0;
30
31 /* Function definitions follow */
32
33 int test1_31_mutatee() {
34   int passed;
35
36   globalVariable31_1 = 0;
37   globalVariable31_2 = 0;
38   globalVariable31_3 = 0;
39   globalVariable31_4 = 0;
40   test1_31_func2();
41   passed = ( globalVariable31_3 == 1 );
42   if( ! passed )
43     {
44       logerror( "**Failed** test #31 (non-recursive base tramp guard)\n" );
45       logerror( "    globalVariable31_3 = %d, should be 1 (no instrumentation got executed?).\n",
46               globalVariable31_3 );
47       return -1; /* Test failed */
48     }
49
50   passed = ( globalVariable31_4 == 0 );
51   if( ! passed )
52     {
53       logerror( "**Failed** test #31 (non-recursive base tramp guard)\n" );
54       logerror( "    globalVariable31_4 = %d, should be 0.\n",
55               globalVariable31_4 );
56       switch( globalVariable31_4 )
57         {
58         case 0: logerror( "    Recursive guard works fine.\n" ); break;
59         case 1: logerror( "    Pre-instr recursive guard does not work.\n" ); break;
60         case 2: logerror( "    Post-instr recursive guard does not work.\n" ); break;
61         case 3: logerror( "    None of the recursive guards work.\n" ); break;
62         default: logerror( "    Something is really wrong.\n" ); break;
63         }
64       return -1; /* Test failed */
65     }
66
67   test_passes(testname);
68   logerror( "Passed test #31 (non-recursive base tramp guard)\n" );
69
70   return 0; /* Test passed */
71 }
72
73 void test1_31_func2() {
74   globalVariable31_2 = 1;
75 }
76
77 void test1_31_func3() {
78   globalVariable31_3 = 1;
79 }
80
81 void test1_31_func4( int value ) {
82   if( value == 0 )
83     {
84       logerror( "func_31_4 called with value = 0 !\n" );
85     }
86   globalVariable31_4 += value;
87 }