Update copyright to LGPL on all files
[dyninst.git] / testsuite / src / dyninst / test_write_param_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 #include <stdlib.h>
33
34 /* Externally accessed function prototypes.  These must have globally unique
35  * names.  I suggest following the pattern <testname>_<function>
36  */
37
38 void test_write_param_call1(long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8);
39 void test_write_param_call2(long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8);
40 int test_write_param_call3();
41
42 void test_write_param_func1();
43
44 /* Global variables accessed by the mutator.  These must have globally unique
45  * names.
46  */
47
48 /* Internally used function prototypes.  These should be declared with the
49  * keyword static so they don't interfere with other mutatees in the group.
50  */
51
52 /* Global variables used internally by the mutatee.  These should be declared
53  * with the keyword static so they don't interfere with other mutatees in the
54  * group.
55  */
56 static int test_passed = 1;
57
58 /* Function definitions follow */
59
60 void test_write_param_call1(long p1, long p2, long p3, long p4, long p5, 
61                             long p6, long p7, long p8)
62 {
63    if (p1 != 1) {
64       logerror("parameter p1 is incorrect in call1\n");
65       test_passed = 0;
66    }
67    if (p2 != 2) {
68       logerror("parameter p2 is incorrect in call1\n");
69       test_passed = 0;
70    }
71    if (p3 != 3) {
72       logerror("parameter p3 is incorrect in call1\n");
73       test_passed = 0;
74    }
75    if (p4 != 4) {
76       logerror("parameter p4 is incorrect in call1\n");
77       test_passed = 0;
78    }
79    if (p5 != 5) {
80       logerror("parameter p5 is incorrect in call1\n");
81       test_passed = 0;
82    }
83    if (p6 != 6) {
84       logerror("parameter p6 is incorrect in call1\n");
85       test_passed = 0;
86    }
87    if (p7 != 7) {
88       logerror("parameter p7 is incorrect in call1\n");
89       test_passed = 0;
90    }      
91    if (p8 != 8) {
92       logerror("parameter p8 is incorrect in call1\n");
93       test_passed = 0;
94    }      
95 }
96
97 void test_write_param_call2(long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8)
98 {
99    if (p1 != 11) {
100       logerror("parameter p1 is incorrect in call2\n");
101       test_passed = 0;
102    }
103    if (p2 != 12) {
104       logerror("parameter p2 is incorrect in call2\n");
105       test_passed = 0;
106    }
107    if (p3 != 13) {
108       logerror("parameter p3 is incorrect in call2\n");
109       test_passed = 0;
110    }
111    if (p4 != 14) {
112       logerror("parameter p4 is incorrect in call2\n");
113       test_passed = 0;
114    }
115    if (p5 != 15) {
116       logerror("parameter p5 is incorrect in call2\n");
117       test_passed = 0;
118    }
119    if (p6 != 16) {
120       logerror("parameter p6 is incorrect in call2\n");
121       test_passed = 0;
122    }
123    if (p7 != 17) {
124       logerror("parameter p7 is incorrect in call2\n");
125       test_passed = 0;
126    }      
127    if (p8 != 18) {
128       logerror("parameter p8 is incorrect in call2\n");
129       test_passed = 0;
130    }
131 }
132
133 int test_write_param_call3()
134 {
135    return 0;
136 }
137
138 int test_write_param_call4()
139 {
140    return 0;
141 }
142
143 int test_write_param_func() {
144    test_write_param_call1(0, 0, 0, 0, 0, 0, 0, 0);
145    test_write_param_call2(0, 0, 0, 0, 0, 0, 0, 0);
146
147    if (test_write_param_call3() != 20) {
148       test_passed = 0;
149       logerror("Return value for call3 was incorrect\n");
150    }
151
152    if (test_write_param_call4() != 30) {
153       test_passed = 0;
154       logerror("Return value for call4 was incorrect\n");
155    }
156
157    if (!test_passed) {
158       logerror("test_write_param failed");
159       return -1;
160    }
161    return 0;
162 }
163
164 int test_write_param_mutatee() {
165   int result;
166   result = test_write_param_func();
167   if (result != -1) {
168     test_passes(testname);
169     return 0; /* Test passed */
170   } else {
171     return -1; /* Test failed */
172   }
173 }