Update copyright to LGPL on all files
[dyninst.git] / testsuite / src / dyninst / test1_7_mutatee.c
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31 #include "mutatee_util.h"
32
33 /* Externally accessed function prototypes.  These must have globally unique
34  * names.  I suggest following the pattern <testname>_<function>
35  */
36
37 void test1_7_func1();
38 void test1_7_func2();
39
40 /* Global variables accessed by the mutator.  These must have globally unique
41  * names.
42  */
43
44 int test1_7_globalVariable1 = 71, test1_7_globalVariable2 = 71,
45     test1_7_globalVariable3 = 71, test1_7_globalVariable4 = 71,
46     test1_7_globalVariable5 = 71, test1_7_globalVariable6 = 71,
47     test1_7_globalVariable7 = 71, test1_7_globalVariable8 = 71,
48     test1_7_globalVariable9 = 71, test1_7_globalVariable10 = 71,
49     test1_7_globalVariable11 = 71, test1_7_globalVariable12 = 71,
50     test1_7_globalVariable13 = 71, test1_7_globalVariable14 = 71,
51     test1_7_globalVariable15 = 71, test1_7_globalVariable16 = 71;
52
53 int test1_7_globalVariable1a = 73, test1_7_globalVariable2a = 73,
54     test1_7_globalVariable3a = 73, test1_7_globalVariable4a = 73,
55     test1_7_globalVariable5a = 73, test1_7_globalVariable6a = 73,
56     test1_7_globalVariable7a = 73, test1_7_globalVariable8a = 73,
57     test1_7_globalVariable9a = 73, test1_7_globalVariable10a = 73,
58     test1_7_globalVariable11a = 73, test1_7_globalVariable12a = 73,
59     test1_7_globalVariable13a = 73, test1_7_globalVariable14a = 73,
60     test1_7_globalVariable15a = 73, test1_7_globalVariable16a = 73;
61
62 int test1_7_constVar0 = 0;
63 int test1_7_constVar1 = 1;
64 int test1_7_constVar2 = 2;
65 int test1_7_constVar3 = 3;
66 int test1_7_constVar4 = 4;
67 int test1_7_constVar5 = 5;
68 int test1_7_constVar6 = 6;
69 int test1_7_constVar7 = 7;
70 int test1_7_constVar9 = 9;
71
72 /* Internally used function prototypes.  These should be declared with the
73  * keyword static so they don't interfere with other mutatees in the group.
74  */
75
76 static void fail7Print(int tCase, int fCase, const char *op);
77 static void fail7aPrint(int tCase, int fCase, const char *op);
78
79 /* Global variables used internally by the mutatee.  These should be declared
80  * with the keyword static so they don't interfere with other mutatees in the
81  * group.
82  */
83
84 static int passed = 0;
85
86 /* Function definitions follow */
87
88 /*
89  * Start Test Case #7 - relational operators
90  *      Generate all relational operators (eq, gt, le, ne, ge, and, or)
91  *      in both the true and false forms.
92  */
93
94 int test1_7_mutatee() {
95   test1_7_func1();
96   if (passed) {
97     test_passes(testname);
98     return 0;
99   } else {
100     return -1;
101   }
102 }
103
104 void test1_7_func1() {
105   test1_7_func2();
106   if ((test1_7_globalVariable1 == 72) && (test1_7_globalVariable2 == 71) &&
107       (test1_7_globalVariable3 == 72) && (test1_7_globalVariable4 == 71) &&
108       (test1_7_globalVariable5 == 72) && (test1_7_globalVariable6 == 71) &&
109       (test1_7_globalVariable7 == 72) && (test1_7_globalVariable8 == 71) &&
110       (test1_7_globalVariable9 == 72) && (test1_7_globalVariable10 == 71) &&
111       (test1_7_globalVariable11 == 72) && (test1_7_globalVariable12 == 71) &&
112       (test1_7_globalVariable13 == 72) && (test1_7_globalVariable14 == 71) &&
113       (test1_7_globalVariable15 == 72) && (test1_7_globalVariable16 == 71) &&
114       (test1_7_globalVariable1a == 74) && (test1_7_globalVariable2a == 73) &&
115       (test1_7_globalVariable3a == 74) && (test1_7_globalVariable4a == 73) &&
116       (test1_7_globalVariable5a == 74) && (test1_7_globalVariable6a == 73) &&
117       (test1_7_globalVariable7a == 74) && (test1_7_globalVariable8a == 73) &&
118       (test1_7_globalVariable9a == 74) && (test1_7_globalVariable10a == 73) &&
119       (test1_7_globalVariable11a == 74) && (test1_7_globalVariable12a == 73) &&
120       (test1_7_globalVariable13a == 74) && (test1_7_globalVariable14a == 73) &&
121       (test1_7_globalVariable15a == 74) && (test1_7_globalVariable16a == 73)) {
122     logerror("Passed test #7 (relational operators)\n");
123     passed = 1;
124   } else {
125     logerror("**Failed** test #7 (relational operators)\n");
126     fail7Print(test1_7_globalVariable1, test1_7_globalVariable2, "BPatch_lt");
127     fail7Print(test1_7_globalVariable3, test1_7_globalVariable4, "BPatch_eq");
128     fail7Print(test1_7_globalVariable5, test1_7_globalVariable6, "BPatch_gt");
129     fail7Print(test1_7_globalVariable7, test1_7_globalVariable8, "BPatch_le");
130     fail7Print(test1_7_globalVariable9, test1_7_globalVariable10, "BPatch_ne");
131     fail7Print(test1_7_globalVariable11, test1_7_globalVariable12, "BPatch_ge");
132     fail7Print(test1_7_globalVariable13, test1_7_globalVariable14, "BPatch_and");
133     fail7Print(test1_7_globalVariable15, test1_7_globalVariable16, "BPatch_or");
134
135     fail7aPrint(test1_7_globalVariable1a, test1_7_globalVariable2a, "BPatch_lt");
136     fail7aPrint(test1_7_globalVariable3a, test1_7_globalVariable4a, "BPatch_eq");
137     fail7aPrint(test1_7_globalVariable5a, test1_7_globalVariable6a, "BPatch_gt");
138     fail7aPrint(test1_7_globalVariable7a, test1_7_globalVariable8a, "BPatch_le");
139     fail7aPrint(test1_7_globalVariable9a, test1_7_globalVariable10a, "BPatch_ne");
140     fail7aPrint(test1_7_globalVariable11a, test1_7_globalVariable12a, "BPatch_ge");
141     fail7aPrint(test1_7_globalVariable13a, test1_7_globalVariable14a, "BPatch_and");
142     fail7aPrint(test1_7_globalVariable15a, test1_7_globalVariable16a, "BPatch_or");
143     passed = 0;
144   }
145 }
146
147 void fail7Print(int tCase, int fCase, const char *op)
148 {
149     if (tCase != 72)
150         logerror(" operator %s was not true when it should be - const expr\n",
151             op);
152     if (fCase != 71)
153        logerror(" operator %s was not false when it should be - const expr\n",
154             op);
155 }
156
157 void fail7aPrint(int tCase, int fCase, const char *op)
158 {
159     if (tCase != 74)
160         logerror(" operator %s was not true when it should be - var expr\n", op);
161     if (fCase != 73)
162         logerror(" operator %s was not false when it should be - var expr\n",op);
163 }
164
165 void test1_7_func2() {
166   dprintf("test1_7_func2 () called\n");
167 }