Skip to content

Commit 797f02d

Browse files
tests: add Proxy object output and tests
1 parent 1beb537 commit 797f02d

File tree

8 files changed

+65
-40
lines changed

8 files changed

+65
-40
lines changed

tests/cpp/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ target_compile_definitions(JavaObjectStreams.Tests.CPP PRIVATE
3535
READ_OBJECT_FILE=true
3636
READ_NULL_OBJECT_FILE=true
3737
READ_ARRAY_OBJECT_FILE=true
38+
READ_PROXY_OBJECT_FILE=true
3839
READ_ARRAY_OBJECT_FILE_WITH_EXTRA_DATA=true
3940
READ_NESTED_ARRAY_OBJECT_FILE=true
4041
READ_POLYMORPHIC_OBJECT_FILE=true

tests/cpp/src/JavaObjectStreamsTests.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ int main(const int argv, char *argc[]) {
5050
t.addTest(READ_OBJECT_FILE, "Read data class object", readObjectTest, "input/JOSDataClass.obj");
5151
t.addTest(READ_SUBCLASSED_CLASS_OBJECT_FILE, "Read class object with subclass fields", readObjectTest, "input/JOSSubclassedClass.obj");
5252
t.addTest(READ_NULL_OBJECT_FILE, "Read null object", readObjectTestRequireInstanceOf<javaobject::type::object::NullObject>, "input/JOSNullObject.obj");
53+
t.addTest(READ_PROXY_OBJECT_FILE, "Read proxy class object", readObjectTest, "input/JOSProxyClass.obj");
5354

5455
t.addTest(READ_EXTERNALIZABLE_CLASS_OBJECT_FILE, "Read externalizable class object", readObjectTest, "input/JOSExternalizableClass.obj");
5556
t.addTest(READ_EXTERNALIZABLE_EXTRA_DATA_CLASS_OBJECT_FILE, "Read externalizable class object with extra data", readObjectTest, "input/JOSExternalizableWithExtraDataClass.obj");

tests/java/modules/Common/src/main/java/me/dexrn/jos/common/test/JOSProxyClass.java

Lines changed: 0 additions & 40 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package me.dexrn.jos.common.test.proxy;
2+
3+
import java.io.Serializable;
4+
import java.lang.reflect.InvocationHandler;
5+
import java.lang.reflect.Method;
6+
7+
public class JOSProxyClass implements Serializable, InvocationHandler {
8+
private final Object obj;
9+
10+
public JOSProxyClass(Object obj) {
11+
this.obj = obj;
12+
}
13+
14+
@Override
15+
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
16+
return null;
17+
}
18+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package me.dexrn.jos.common.test.proxy;
2+
3+
public class JOSServiceImplementation implements JOSServiceInterface {
4+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package me.dexrn.jos.common.test.proxy;
2+
3+
import java.io.Serializable;
4+
5+
public interface JOSServiceInterface extends Serializable {
6+
}

tests/java/modules/Output/src/main/java/me/dexrn/jos/output/OutputTestFile.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ private OutputTestFile(String parentDir) {
3939
outputs.add(new DataClassOutput());
4040
outputs.add(new SubclassedClassOutput());
4141
outputs.add(new NullObjectOutput());
42+
outputs.add(new ProxyClassOutput());
4243

4344
outputs.add(new ExternalizableClassOutput());
4445
outputs.add(new ExternalizableWithExtraDataObjectOutput());
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package me.dexrn.jos.output.outputs;
2+
3+
import me.dexrn.jos.common.test.JOSDataClass;
4+
import me.dexrn.jos.common.test.proxy.JOSProxyClass;
5+
import me.dexrn.jos.common.test.proxy.JOSServiceImplementation;
6+
import me.dexrn.jos.common.test.proxy.JOSServiceInterface;
7+
import me.dexrn.jos.output.AbstractObjectOutput;
8+
9+
import java.lang.reflect.Proxy;
10+
11+
public class ProxyClassOutput extends AbstractObjectOutput<JOSServiceInterface> {
12+
public ProxyClassOutput() {
13+
super(JOSServiceInterface.class);
14+
}
15+
16+
@Override
17+
public String getFilename() {
18+
return "JOSProxyClass.obj";
19+
}
20+
21+
/**
22+
* Constructs the object to be outputted into the stream
23+
*/
24+
@Override
25+
public JOSServiceInterface construct() {
26+
JOSServiceImplementation impl = new JOSServiceImplementation();
27+
28+
return (JOSServiceInterface) Proxy.newProxyInstance(
29+
JOSServiceInterface.class.getClassLoader(),
30+
new Class[] { JOSServiceInterface.class },
31+
new JOSProxyClass(impl)
32+
);
33+
}
34+
}

0 commit comments

Comments
 (0)