Skip to content

Commit 8b8ef56

Browse files
feat: revamp Java tests
1 parent 678ca9a commit 8b8ef56

22 files changed

Lines changed: 396 additions & 151 deletions
Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,17 @@
11
package me.dexrn.jos.common.test;
22

33
import java.io.Serializable;
4+
import java.util.Arrays;
5+
import java.util.stream.IntStream;
6+
import java.util.stream.LongStream;
7+
import java.util.stream.Stream;
48

59
public class JOSArrayClass implements Serializable {
6-
public class Subclass implements Serializable {
7-
int i = 0;
8-
}
9-
1010
byte[] bytes = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
11-
int[] ints = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
12-
long[] longs = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
11+
int[] ints = IntStream.range(0, 9).toArray();
12+
long[] longs = LongStream.range(0, 9).toArray();
1313
float[] floats = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
1414
double[] doubles = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
15-
Subclass[] sc = { new Subclass(), new Subclass(), new Subclass() };
1615

17-
int[] manyInts = new int[0xFFFFFF];
18-
{
19-
for (int i = 0; i < manyInts.length; i++) {
20-
manyInts[i] = i;
21-
}
22-
}
16+
JOSDataClass[] classes = Stream.generate(JOSDataClass::new).limit(10).toArray(JOSDataClass[]::new);
2317
}

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

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,22 @@
1111
package me.dexrn.jos.common.test;
1212

1313
import java.io.Serializable;
14+
import java.util.ArrayList;
15+
import java.util.List;
1416

1517
public class JOSDataClass implements Serializable {
16-
boolean b = false;
17-
char c = 'c';
18-
byte bt = 13;
19-
short s = 14;
20-
int i = 15;
21-
long l = 16;
22-
float f = 17.0f;
23-
double d = 18.0;
18+
public boolean b = false;
19+
public char ch = 'a';
20+
public byte bt = 1;
21+
public short s = 2;
22+
public int i = 3;
23+
public long l = 4;
24+
public float f = 5.0f;
25+
public double d = 6.0;
26+
public String str = "Hello, world!";
27+
public List<Character> chars = List.of(
28+
'H','e','l','l','o',',', ' ',
29+
'J','a','v','a','.','l','a','n','g','.','C','h','a','r','a','c','t','e','r', ' ',
30+
'w','o','r','l','d','!'
31+
);
2432
}

tests/java/modules/Common/src/main/java/me/dexrn/jos/common/test/JOSEmptyClass.java renamed to tests/java/modules/Common/src/main/java/me/dexrn/jos/common/test/JOSHasCustomSvUIDClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.io.Serial;
44
import java.io.Serializable;
55

6-
public class JOSEmptyClass implements Serializable {
6+
public class JOSHasCustomSvUIDClass implements Serializable {
77
@Serial
88
private static final long serialVersionUID = 0x1234567890123456L;
99
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
package me.dexrn.jos.common.test;
22

33
import java.io.Serializable;
4+
import java.util.stream.Stream;
45

56
public class JOSNestedArrayClass implements Serializable {
67
byte[][][] bytes = new byte[9][9][9];
78
int[][][] ints = new int[9][9][9];
89
long[][][] longs = new long[9][9][9];
910
float[][][] floats = new float[9][9][9];
1011
double[][][] doubles = new double[9][9][9];
12+
13+
JOSDataClass[][][] classes = Stream.generate(() ->
14+
Stream.generate(
15+
() -> Stream.generate(JOSDataClass::new).limit(9).toArray(JOSDataClass[]::new)
16+
).limit(9).toArray(JOSDataClass[][]::new)
17+
).limit(9).toArray(JOSDataClass[][][]::new);
1118
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package me.dexrn.jos.common.test;
2+
3+
import java.io.Serializable;
4+
5+
public class JOSSubclassedClass implements Serializable {
6+
@SuppressWarnings("InnerClassMayBeStatic")
7+
public class Subclass implements Serializable {
8+
String info = "I am a subclass of " + JOSSubclassedClass.class.getName();
9+
}
10+
11+
public static class StaticSubclass implements Serializable {
12+
String info = "I am a static subclass of " + JOSSubclassedClass.class.getName();
13+
}
14+
15+
Subclass subclass = new Subclass();
16+
StaticSubclass staticSubclass = new StaticSubclass();
17+
}

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

Lines changed: 0 additions & 82 deletions
This file was deleted.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package me.dexrn.jos.common.test.externalizable;
2+
3+
import me.dexrn.jos.common.test.JOSDataClass;
4+
5+
import java.io.Externalizable;
6+
import java.io.IOException;
7+
import java.io.ObjectInput;
8+
import java.io.ObjectOutput;
9+
import java.util.List;
10+
11+
public class JOSExternalizableDataClass implements Externalizable {
12+
JOSDataClass dataClass = new JOSDataClass();
13+
String chars = "Hello, externalizable world!";
14+
15+
@Override
16+
public void writeExternal(ObjectOutput objectOutput) throws IOException {
17+
objectOutput.writeChars(chars);
18+
19+
objectOutput.writeBoolean(dataClass.b);
20+
objectOutput.writeChar(dataClass.ch);
21+
objectOutput.writeByte(dataClass.bt);
22+
objectOutput.writeShort(dataClass.s);
23+
objectOutput.writeInt(dataClass.i);
24+
objectOutput.writeLong(dataClass.l);
25+
objectOutput.writeFloat(dataClass.f);
26+
objectOutput.writeDouble(dataClass.d);
27+
objectOutput.writeUTF(dataClass.str);
28+
objectOutput.writeObject(dataClass.chars);
29+
}
30+
31+
@Override
32+
public void readExternal(ObjectInput objectInput) throws IOException, ClassNotFoundException {
33+
StringBuilder ch = new StringBuilder();
34+
for (int i = 0; i < chars.length(); i++) {
35+
ch.append(objectInput.readChar());
36+
}
37+
38+
this.chars = ch.toString();
39+
40+
dataClass.b = objectInput.readBoolean();
41+
dataClass.ch = objectInput.readChar();
42+
dataClass.bt = objectInput.readByte();
43+
dataClass.s = objectInput.readShort();
44+
dataClass.i = objectInput.readInt();
45+
dataClass.l = objectInput.readLong();
46+
dataClass.f = objectInput.readFloat();
47+
dataClass.d = objectInput.readDouble();
48+
dataClass.str = objectInput.readUTF();
49+
dataClass.chars = (List<Character>)objectInput.readObject();
50+
}
51+
}

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

Lines changed: 7 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package me.dexrn.jos.common.test.extra;
2+
3+
import me.dexrn.jos.common.test.polymorphism.JOSPolymorphicClass;
4+
5+
import java.io.Serializable;
6+
import java.util.List;
7+
import java.util.Map;
8+
9+
/** Contains fields designed to stress out the parser */
10+
public class JOSTortureClass implements Serializable {
11+
Map<List<JOSPolymorphicClass>, Map<String, Map<List<String>, String[]>>> shitfuck = Map.of(
12+
List.of(
13+
new JOSPolymorphicClass(),
14+
new JOSPolymorphicClass(),
15+
new JOSPolymorphicClass()
16+
),
17+
Map.of(
18+
"fraud tomorrow",
19+
Map.of(
20+
List.of(
21+
"Ahh...",
22+
"Free at last",
23+
"O Gabriel",
24+
"Now dawns thy reckoning",
25+
"And thy gore shall glisten before the temples of man",
26+
"Creature of steel...",
27+
"My gratitude upon thee for my freedom",
28+
"but the crimes thy kind have committed against humanity",
29+
"are NOT forgotten",
30+
"and thy punishment...",
31+
"is DEATH"
32+
),
33+
new String[]{
34+
"Prepare thyself!",
35+
"Crush!",
36+
"Die!"
37+
}
38+
)
39+
)
40+
); // the shitfuck I
41+
}

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

Lines changed: 1 addition & 5 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)