Skip to content

Commit

Permalink
Testing Rework - WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
ModProg committed Aug 14, 2020
1 parent 14a8466 commit 0881b89
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 70 deletions.
8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ dependencies {
include "me.shedaniel.cloth:config-2:${Versions['clothconfig_version']}"
include "me.sargunvohra.mcmods:autoconfig1u:${Versions['autoconfig_version']}"

testImplementation("org.assertj:assertj-core:3.16.1")
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.2")
testImplementation("org.junit.jupiter:junit-jupiter-params:5.6.2")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.2")
// Testing
testImplementation "org.junit.jupiter:junit-jupiter:5.+"
testImplementation "org.assertj:assertj-core:3.+"
testImplementation "org.mockito:mockito-inline:3.+"
}

// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,23 @@
import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.provider.CsvSource;

import de.modprog.blockmeter.measurebox.util.CsvToMBD;
import de.modprog.blockmeter.measurebox.util.MeasureBoxData;
import io.netty.buffer.Unpooled;
import net.minecraft.network.PacketByteBuf;
import win.baruna.blockmeter.measurebox.ClientMeasureBox;

public class ClientMeasureBoxTest {

@ParameterizedTest
@ArgumentsSource(MeasureBoxData.class)
void testPacketByteBuf(MeasureBoxData data) {
@CsvSource({ "1|2|0, 0|0|0, overworld, red, finished" })
void testPacketByteBuf(@CsvToMBD final MeasureBoxData data) {
final PacketByteBuf expectedBuf = new PacketByteBuf(Unpooled.buffer());
expectedBuf.writeBlockPos(data.bp1);
expectedBuf.writeBlockPos(data.bp2);
expectedBuf.writeIdentifier(data.identifier);
expectedBuf.writeIdentifier(data.dimension);
expectedBuf.writeInt(data.color.getId());
expectedBuf.writeBoolean(data.finished);
expectedBuf.writeInt(data.mode);
Expand All @@ -26,9 +28,19 @@ void testPacketByteBuf(MeasureBoxData data) {
final ClientMeasureBox mb = ClientMeasureBox.fromPacketByteBuf(expectedBuf);
final PacketByteBuf actualBuf = new PacketByteBuf(Unpooled.buffer());
mb.writePacketBuf(actualBuf);

expectedBuf.resetReaderIndex();
assertThat(expectedBuf).usingRecursiveComparison().isEqualTo(actualBuf);
assertThat(expectedBuf).isEqualTo(actualBuf);
}

@ParameterizedTest
@CsvSource({ "1|2|0, 0|0|0, overworld, red, finished," + "1|2|0, 0|0|0, overworld, red, finished" })
void testConstructor(@CsvToMBD final MeasureBoxData data1, @CsvToMBD final MeasureBoxData data2) {
// final ClientMeasureBox cmb1 = new ClientMeasureBox(data1.bp1,
// data1.dimension);
// final ClientMeasureBox cmb2 = new ClientMeasureBox(data1.bp1,
// data1.dimension);

}

}
67 changes: 7 additions & 60 deletions src/test/java/de/modprog/blockmeter/measurebox/MeasureBoxTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,25 @@

import static org.assertj.core.api.Assertions.assertThat;

import java.util.stream.Stream;

import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;
import org.junit.jupiter.params.provider.ArgumentsSource;
import org.junit.jupiter.params.provider.CsvSource;

import de.modprog.blockmeter.measurebox.util.CsvToMBD;
import de.modprog.blockmeter.measurebox.util.MeasureBoxData;
import io.netty.buffer.Unpooled;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.DyeColor;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import win.baruna.blockmeter.measurebox.MeasureBox;

public class MeasureBoxTest {

@ParameterizedTest
@ArgumentsSource(MeasureBoxData.class)
void testPacketByteBuf(MeasureBoxData data) {
@CsvSource({ "1|2|0, 0|0|0, overworld, red, finished" })
public void testPacketByteBuf(@CsvToMBD MeasureBoxData data) {

final PacketByteBuf expectedBuf = new PacketByteBuf(Unpooled.buffer());
expectedBuf.writeBlockPos(data.bp1);
expectedBuf.writeBlockPos(data.bp2);
expectedBuf.writeIdentifier(data.identifier);
expectedBuf.writeIdentifier(data.dimension);
expectedBuf.writeInt(data.color.getId());
expectedBuf.writeBoolean(data.finished);
expectedBuf.writeInt(data.mode);
Expand All @@ -40,51 +35,3 @@ void testPacketByteBuf(MeasureBoxData data) {
}

}

class MeasureBoxData implements ArgumentsProvider, Arguments {
BlockPos bp1;
BlockPos bp2;
Identifier identifier;
DyeColor color;
boolean finished;
int mode;
int orientation;

MeasureBoxData() {};

private MeasureBoxData(BlockPos bp1, BlockPos bp2, Identifier identifier,
DyeColor color, boolean finished, int mode, int orientation) {
this.bp1 = bp1;
this.bp2 = bp2;
this.identifier = identifier;
this.color = color;
this.finished = finished;
this.mode = mode;
this.orientation = orientation;
}

@Override
public Stream<? extends Arguments> provideArguments(
ExtensionContext context) throws Exception {
return Stream.of(
new MeasureBoxData(new BlockPos(0, 1, 2),
new BlockPos(10, 5, 2),
new Identifier("minecraft:overworld"), DyeColor.BLACK,
true, 0, 0),
new MeasureBoxData(new BlockPos(-30,200, -1012),
new BlockPos(10,3, -100),
new Identifier("minecraft:overworld"), DyeColor.ORANGE,
false, 5, 3),
new MeasureBoxData(new BlockPos(10300, 1, 2),
new BlockPos(10000, 5, 2),
new Identifier("minecraft:overworld"), DyeColor.WHITE,
true, 20, 4));
}

@Override
public Object[] get() {

return new Object[]{this};
}

}
15 changes: 15 additions & 0 deletions src/test/java/de/modprog/blockmeter/measurebox/util/CsvToMBD.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package de.modprog.blockmeter.measurebox.util;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.junit.jupiter.params.aggregator.AggregateWith;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
@AggregateWith(MBDAggregator.class)
public @interface CsvToMBD {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package de.modprog.blockmeter.measurebox.util;

import java.util.Arrays;

import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.params.aggregator.ArgumentsAccessor;
import org.junit.jupiter.params.aggregator.ArgumentsAggregationException;
import org.junit.jupiter.params.aggregator.ArgumentsAggregator;

import net.minecraft.util.DyeColor;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;

public class MBDAggregator implements ArgumentsAggregator {

@Override
public Object aggregateArguments(ArgumentsAccessor arguments, ParameterContext context)
throws ArgumentsAggregationException {
return new MeasureBoxData(bp(arguments.getString(0)), bp(arguments.getString(1)),
arguments.get(2, Identifier.class), dc(arguments.getString(3)),
arguments.getString(4).equals("finished"), 0, 0);
}

private BlockPos bp(String s) {
final int[] array = Arrays.stream(s.split("[/|-]")).mapToInt(Integer::parseInt).toArray();
if (array.length > 0)
return new BlockPos(array[0], array[1], array[2]);
throw new ArgumentsAggregationException("not enough numbers in BlockPos");
}

private DyeColor dc(String s) {
return DyeColor.valueOf(s.toUpperCase());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package de.modprog.blockmeter.measurebox.util;

import java.util.stream.Stream;

import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.ArgumentsProvider;

import net.minecraft.util.DyeColor;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;

public class MeasureBoxData implements ArgumentsProvider {
public final BlockPos bp1;
public final BlockPos bp2;
public final Identifier dimension;
public final DyeColor color;
public final boolean finished;
public final int mode;
public final int orientation;

MeasureBoxData(BlockPos bp1, BlockPos bp2, Identifier identifier, DyeColor color, boolean finished,
int mode, int orientation) {
this.bp1 = bp1;
this.bp2 = bp2;
this.dimension = identifier;
this.color = color;
this.finished = finished;
this.mode = mode;
this.orientation = orientation;
}

@Override
public String toString() {
return bp1.toShortString();
}

@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext context) throws Exception {
return Stream.of(new Object[] {
new MeasureBoxData(new BlockPos(0, 1, 2), new BlockPos(10, 5, 2), new Identifier("minecraft:overworld"),
DyeColor.BLACK, true, 0, 0),
new MeasureBoxData(new BlockPos(-30, 200, -1012), new BlockPos(10, 3, -100),
new Identifier("minecraft:overworld"), DyeColor.ORANGE, false, 5, 3),
new MeasureBoxData(new BlockPos(10300, 1, 2), new BlockPos(10000, 5, 2),
new Identifier("minecraft:overworld"), DyeColor.WHITE, true, 20, 4) })
.map(Arguments::of);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
powermock.global-ignore=javax.xml.parsers.*,org.apache.xerces.jaxp.*,com.sun.org.apache.xerces.*,org.xml.*

0 comments on commit 0881b89

Please sign in to comment.