Skip to content

Commit cbe6154

Browse files
committed
Add tests #6
1 parent e395425 commit cbe6154

27 files changed

+646
-0
lines changed

processor/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,17 @@ dependencies {
1616
implementation("com.palantir.javapoet:javapoet:0.7.0")
1717

1818
compileOnly("org.projectlombok:lombok:1.18.38")
19+
testCompileOnly("org.projectlombok:lombok:1.18.38")
1920
annotationProcessor("org.projectlombok:lombok:1.18.38")
21+
testAnnotationProcessor("org.projectlombok:lombok:1.18.38")
2022

2123
implementation("com.google.auto.service:auto-service:1.1.1")
2224
annotationProcessor("com.google.auto.service:auto-service:1.1.1")
2325

26+
testCompileOnly("org.jetbrains:annotations:26.0.2")
27+
2428
implementation(projects.core)
29+
testAnnotationProcessor(projects.processor)
2530
}
2631

2732
tasks.test {

processor/src/main/java/de/bethibande/serial/processor/generator/deserializer/DeserializerGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import de.bethibande.serial.processor.generator.MethodType;
1111
import de.bethibande.serial.processor.serializer.FieldBasedObjectTransformer;
1212

13+
import javax.lang.model.element.Modifier;
1314
import java.util.List;
1415
import java.util.Map;
1516
import java.util.stream.Collectors;
@@ -33,6 +34,7 @@ public TypeSpec.Builder generateType(final SerializationContext context) {
3334
final TypeName superType = ParameterizedTypeName.get(ABSTRACT_DESERIALIZER, context.rawType());
3435

3536
final TypeSpec.Builder builder = TypeSpec.classBuilder(context.deserializerType())
37+
.addModifiers(Modifier.PUBLIC)
3638
.addInitializerBlock(CodeBlock.builder()
3739
.addStatement("super.allocator = () -> new $T()", context.type())
3840
.build())

processor/src/main/java/de/bethibande/serial/processor/generator/serializer/SerializerGenerator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import de.bethibande.serial.processor.generator.MethodType;
1414
import de.bethibande.serial.processor.serializer.FieldBasedObjectTransformer;
1515

16+
import javax.lang.model.element.Modifier;
1617
import java.util.List;
1718
import java.util.Map;
1819
import java.util.stream.Collectors;
@@ -36,6 +37,7 @@ public TypeSpec.Builder generateType(final SerializationContext context) {
3637
final TypeName superType = ParameterizedTypeName.get(ABSTRACT_SERIALIZER, context.rawType());
3738

3839
final TypeSpec.Builder builder = TypeSpec.classBuilder(context.serializerType())
40+
.addModifiers(Modifier.PUBLIC)
3941
.superclass(superType);
4042

4143
for (final FieldInfo field : context.fields()) {
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package de.bethibande.serial.processor;
2+
3+
import de.bethibande.serial.Deserializer;
4+
import de.bethibande.serial.Reader;
5+
import de.bethibande.serial.Serializer;
6+
import de.bethibande.serial.Writer;
7+
import de.bethibande.serial.buffer.ByteBufferReader;
8+
import de.bethibande.serial.buffer.ByteBufferWriter;
9+
import org.junit.jupiter.api.AfterEach;
10+
import org.junit.jupiter.api.BeforeEach;
11+
12+
import java.nio.ByteBuffer;
13+
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
16+
public class SerializationTestBase {
17+
18+
protected ByteBuffer buffer;
19+
protected Writer writer;
20+
protected Reader reader;
21+
22+
@BeforeEach
23+
public void setup() {
24+
this.buffer = ByteBuffer.allocate(1024);
25+
this.writer = new ByteBufferWriter(this.buffer);
26+
this.reader = new ByteBufferReader(this.buffer);
27+
}
28+
29+
@AfterEach
30+
public void teardown() {
31+
this.buffer = null;
32+
}
33+
34+
protected <T> void testSerializationAndDeserialization(final Serializer<T> serializer,
35+
final Deserializer<T> deserializer,
36+
final T value) {
37+
serializer.bind(this.writer).write(value);
38+
this.buffer.flip();
39+
40+
final T output = deserializer.bind(this.reader).read();
41+
assertEquals(value, output);
42+
}
43+
44+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package de.bethibande.serial.processor.serializer.types;
2+
3+
import de.bethibande.serial.processor.SerializationTestBase;
4+
import de.bethibande.serial.processor.test.dto.IntArrayType;
5+
import de.bethibande.serial.processor.test.dto.IntArrayTypeDeserializer;
6+
import de.bethibande.serial.processor.test.dto.IntArrayTypeSerializer;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class ArrayTypesTest extends SerializationTestBase {
10+
11+
@Test
12+
public void testEmptyIntArrayType() {
13+
final IntArrayTypeSerializer serializer = new IntArrayTypeSerializer();
14+
final IntArrayTypeDeserializer deserializer = new IntArrayTypeDeserializer();
15+
final IntArrayType value = new IntArrayType();
16+
value.setValue(new int[0]);
17+
18+
this.testSerializationAndDeserialization(serializer, deserializer, value);
19+
}
20+
21+
@Test
22+
public void testIntArrayType() {
23+
final IntArrayTypeSerializer serializer = new IntArrayTypeSerializer();
24+
final IntArrayTypeDeserializer deserializer = new IntArrayTypeDeserializer();
25+
final IntArrayType value = new IntArrayType();
26+
value.setValue(new int[]{1, 2, 3});
27+
28+
this.testSerializationAndDeserialization(serializer, deserializer, value);
29+
}
30+
31+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package de.bethibande.serial.processor.serializer.types;
2+
3+
import de.bethibande.serial.processor.SerializationTestBase;
4+
import de.bethibande.serial.processor.test.dto.BoxedIntegerType;
5+
import de.bethibande.serial.processor.test.dto.BoxedIntegerTypeDeserializer;
6+
import de.bethibande.serial.processor.test.dto.BoxedIntegerTypeSerializer;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class BoxedPrimitiveTypesTest extends SerializationTestBase {
10+
11+
@Test
12+
public void testBoxedIntegerType() {
13+
final BoxedIntegerTypeSerializer serializer = new BoxedIntegerTypeSerializer();
14+
final BoxedIntegerTypeDeserializer deserializer = new BoxedIntegerTypeDeserializer();
15+
final BoxedIntegerType value = new BoxedIntegerType();
16+
value.setValue(123);
17+
18+
this.testSerializationAndDeserialization(serializer, deserializer, value);
19+
}
20+
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package de.bethibande.serial.processor.serializer.types;
2+
3+
import de.bethibande.serial.processor.SerializationTestBase;
4+
import de.bethibande.serial.processor.test.dto.StringType;
5+
import de.bethibande.serial.processor.test.dto.StringTypeDeserializer;
6+
import de.bethibande.serial.processor.test.dto.StringTypeSerializer;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class CharSequenceTypesTest extends SerializationTestBase {
10+
11+
12+
@Test
13+
public void testStringType() {
14+
final StringTypeSerializer serializer = new StringTypeSerializer();
15+
final StringTypeDeserializer deserializer = new StringTypeDeserializer();
16+
final StringType value = new StringType();
17+
value.setValue("Hello World!");
18+
19+
this.testSerializationAndDeserialization(serializer, deserializer, value);
20+
}
21+
22+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package de.bethibande.serial.processor.serializer.types;
2+
3+
import de.bethibande.serial.processor.SerializationTestBase;
4+
import de.bethibande.serial.processor.test.dto.FloatListType;
5+
import de.bethibande.serial.processor.test.dto.FloatListTypeDeserializer;
6+
import de.bethibande.serial.processor.test.dto.FloatListTypeSerializer;
7+
import org.junit.jupiter.api.Test;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
public class CollectionTypesTest extends SerializationTestBase {
13+
14+
@Test
15+
public void testEmptyFloatListType() {
16+
final FloatListTypeSerializer serializer = new FloatListTypeSerializer();
17+
final FloatListTypeDeserializer deserializer = new FloatListTypeDeserializer();
18+
deserializer.valueAllocator(ArrayList::new);
19+
final FloatListType value = new FloatListType();
20+
value.setValue(List.of());
21+
22+
this.testSerializationAndDeserialization(serializer, deserializer, value);
23+
}
24+
25+
@Test
26+
public void testFloatListType() {
27+
final FloatListTypeSerializer serializer = new FloatListTypeSerializer();
28+
final FloatListTypeDeserializer deserializer = new FloatListTypeDeserializer();
29+
deserializer.valueAllocator(ArrayList::new);
30+
final FloatListType value = new FloatListType();
31+
value.setValue(List.of(1.23f, 4.56f));
32+
33+
this.testSerializationAndDeserialization(serializer, deserializer, value);
34+
}
35+
36+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package de.bethibande.serial.processor.serializer.types;
2+
3+
import de.bethibande.serial.processor.SerializationTestBase;
4+
import de.bethibande.serial.processor.test.dto.EnumType;
5+
import de.bethibande.serial.processor.test.dto.EnumTypeDeserializer;
6+
import de.bethibande.serial.processor.test.dto.EnumTypeSerializer;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class EnumTypesTest extends SerializationTestBase {
10+
11+
@Test
12+
public void testEnumType() {
13+
final EnumTypeSerializer serializer = new EnumTypeSerializer();
14+
final EnumTypeDeserializer deserializer = new EnumTypeDeserializer();
15+
final EnumType value = new EnumType();
16+
value.setValue(EnumType.TestEnum.VALUE_1);
17+
18+
this.testSerializationAndDeserialization(serializer, deserializer, value);
19+
}
20+
21+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package de.bethibande.serial.processor.serializer.types;
2+
3+
import de.bethibande.serial.processor.SerializationTestBase;
4+
import de.bethibande.serial.processor.test.dto.NullableStringType;
5+
import de.bethibande.serial.processor.test.dto.NullableStringTypeDeserializer;
6+
import de.bethibande.serial.processor.test.dto.NullableStringTypeSerializer;
7+
import org.junit.jupiter.api.Test;
8+
9+
public class NullableTypesTest extends SerializationTestBase {
10+
11+
@Test
12+
public void testNullValue() {
13+
final NullableStringTypeSerializer serializer = new NullableStringTypeSerializer();
14+
final NullableStringTypeDeserializer deserializer = new NullableStringTypeDeserializer();
15+
final NullableStringType value = new NullableStringType();
16+
value.setValue(null);
17+
18+
this.testSerializationAndDeserialization(serializer, deserializer, value);
19+
}
20+
21+
@Test
22+
public void testNonNullValue() {
23+
final NullableStringTypeSerializer serializer = new NullableStringTypeSerializer();
24+
final NullableStringTypeDeserializer deserializer = new NullableStringTypeDeserializer();
25+
final NullableStringType value = new NullableStringType();
26+
value.setValue("Hello World!");
27+
28+
this.testSerializationAndDeserialization(serializer, deserializer, value);
29+
}
30+
31+
}

0 commit comments

Comments
 (0)