1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef HELPER_H
18 #define HELPER_H
19 
20 #include <jni.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 /** A JNI test function */
27 typedef char *JniTestFunction(JNIEnv *env);
28 
29 /**
30  * Used as arguments to runTest(), it takes a simple name and expands
31  * it to both a string name and function pointer.
32  */
33 #define RUN_TEST(name) #name, test_##name
34 
35 /**
36  * Standard function delcaration for a test of the JNI function with
37  * the given name. The function is static, returns a (char *), and
38  * takes a (JNIEnv *) named "env".
39  */
40 #define TEST_DECLARATION(name) static char *test_##name(JNIEnv *env) /* NOLINT */
41 
42 /**
43  * Logs and returns an error message, passed and formatted in printf()
44  * style. The returned string should be freed by calling free().
45  *
46  * @param format printf format string
47  * @param ... printf-style arguments
48  * @return an allocated (char *) containing the formatted result
49  */
50 char *failure(const char *format, ...) __attribute__((format(printf, 1, 2)));
51 
52 /**
53  * Runs a list of tests. It will run all the tests, collecting as output
54  * information about all the failures. If non-null, the return value should
55  * be freed by calling free().
56  *
57  * @param env the JNI environment to pass to tests
58  * @param ... the tests to run as name-function pairs, ending with a NULL
59  * @return a string containing information about all the failures
60  */
61 char *runJniTests(JNIEnv *env, ...);
62 
63 #ifdef __cplusplus
64 }
65 #endif
66 
67 #endif // HELPER_H
68