2007-02-13 Andrew Haley <aph@redhat.com>
[gcc.git] / libjava / testsuite / libjava.jni / directbuffer.c
1 #include <stdlib.h>
2
3 #include "directbuffer.h"
4
5 #define BUFFER_SIZE 1024
6
7 static void *address;
8
9 JNIEXPORT jobject JNICALL
10 Java_directbuffer_createDirectByteBuffer (JNIEnv *env, jclass k)
11 {
12 address = malloc (BUFFER_SIZE);
13 return (*env)->NewDirectByteBuffer (env, address, 1024);
14 }
15
16 static void
17 test_buffer (JNIEnv *env, jobject buffer, const char *name, int len)
18 {
19 void *tmp = (*env)->GetDirectBufferAddress (env, buffer);
20
21 if (address == tmp)
22 printf ("PASS: address of %s\n", name);
23 else
24 printf ("FAIL: address of %s\n", name);
25
26 int tmplen = (*env)->GetDirectBufferCapacity (env, buffer);
27
28 if (len == tmplen)
29 printf ("PASS: length of %s\n", name);
30 else
31 printf ("FAIL: length of %s\n", name);
32 }
33
34 JNIEXPORT void JNICALL
35 Java_directbuffer_testDirectByteBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
36 {
37 test_buffer (env, buffer, "direct java.nio.ByteBuffer", len);
38 }
39
40 JNIEXPORT void JNICALL
41 Java_directbuffer_testCharBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
42 {
43 test_buffer (env, buffer, "java.nio.CharBuffer view", len);
44 }
45
46 JNIEXPORT void JNICALL
47 Java_directbuffer_testDoubleBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
48 {
49 test_buffer (env, buffer, "java.nio.DoubleBuffer view", len);
50 }
51
52 JNIEXPORT void JNICALL
53 Java_directbuffer_testFloatBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
54 {
55 test_buffer (env, buffer, "java.nio.FloatBuffer view", len);
56 }
57
58 JNIEXPORT void JNICALL
59 Java_directbuffer_testIntBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
60 {
61 test_buffer (env, buffer, "java.nio.IntBuffer view", len);
62 }
63
64 JNIEXPORT void JNICALL
65 Java_directbuffer_testLongBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
66 {
67 test_buffer (env, buffer, "java.nio.LongBuffer view", len);
68 }
69
70 JNIEXPORT void JNICALL
71 Java_directbuffer_testShortBuffer (JNIEnv *env, jclass k, jobject buffer, jint len)
72 {
73 test_buffer (env, buffer, "java.nio.ShortBuffer view", len);
74 }
75