Skip to content

Commit 4f1328b

Browse files
committed
Baseline for gametests
1 parent a34a6d4 commit 4f1328b

File tree

8 files changed

+111
-138
lines changed

8 files changed

+111
-138
lines changed

build.gradle

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ buildscript {
22
repositories {
33
maven { url = 'https://maven.minecraftforge.net' }
44
mavenCentral()
5+
mavenLocal()
56
}
67

78
dependencies {
@@ -52,6 +53,14 @@ sourceSets {
5253
compileClasspath += sourceSets.api.output
5354
runtimeClasspath += sourceSets.api.output
5455
}
56+
57+
test {
58+
java { srcDir "src/test/java" }
59+
resources { srcDir "src/test/resources" }
60+
61+
compileClasspath += sourceSets.api.output
62+
runtimeClasspath += sourceSets.api.output
63+
}
5564
}
5665

5766
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
@@ -132,10 +141,42 @@ minecraft {
132141
}
133142
}
134143
}
144+
145+
gametestserver {
146+
workingDirectory project.file('run/gametest')
147+
148+
// Recommended logging data for a userdev environment
149+
// The markers can be added/remove as needed separated by commas.
150+
// "SCAN": For mods scan.
151+
// "REGISTRIES": For firing of registry events.
152+
// "REGISTRYDUMP": For getting the contents of all registries.
153+
property 'forge.logging.markers', 'REGISTRIES'
154+
155+
// Recommended logging level for the console
156+
// You can set various levels here.
157+
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
158+
property 'forge.logging.console.level', 'debug'
159+
160+
property 'mixin.env.remapRefMap', 'true'
161+
property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg"
162+
163+
// Only runs gametests which use "examplemod" as the namespace
164+
args '--enableNamespace', mod_id
165+
166+
mods {
167+
compactmachines {
168+
source sourceSets.api
169+
source sourceSets.main
170+
source sourceSets.test
171+
}
172+
}
173+
}
135174
}
136175
}
137176

138177
repositories {
178+
mavenLocal()
179+
139180
maven {
140181
url "https://www.cursemaven.com"
141182
content {
@@ -188,7 +229,7 @@ dependencies {
188229
runtimeOnly(fg.deobf("curse.maven:create-328085:3556823"))
189230
runtimeOnly(fg.deobf("curse.maven:refinedpipes-370696:3570151"))
190231
runtimeOnly(fg.deobf("curse.maven:prettypipes-376737:3573145"))
191-
runtimeOnly(fg.deobf("curse.maven:refinedstorage-243076:3569563"))
232+
runtimeOnly(fg.deobf("curse.maven:refinedstorage-243076:3623324"))
192233

193234
// Mekanism + Mek Generators - Tunnel testing
194235
// runtimeOnly(fg.deobf("curse.maven:mekanism-268560:3206392"))
@@ -199,6 +240,10 @@ processResources {
199240
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
200241
}
201242

243+
processTestResources {
244+
duplicatesStrategy(DuplicatesStrategy.EXCLUDE)
245+
}
246+
202247
jar {
203248
from sourceSets.main.output
204249
from sourceSets.api.output

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ org.gradle.jvmargs=-Xmx3G
44
org.gradle.daemon=false
55

66
minecraft_version=1.18.1
7-
forge_version=39.0.75
7+
forge_version=39.0.97-gametest-1.18.x
88

99
mod_id=compactmachines
10-
mod_version=4.0.0-beta.6
10+
mod_version=4.0.0-beta.7
1111

1212
# Dependencies and Libs
1313
jei_mc_version=1.18.1
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package dev.compactmods.machines.test;
2+
3+
import dev.compactmods.machines.CompactMachines;
4+
import dev.compactmods.machines.test.data.CodecTests;
5+
import net.minecraftforge.event.RegisterGameTestsEvent;
6+
import net.minecraftforge.eventbus.api.SubscribeEvent;
7+
import net.minecraftforge.fml.common.Mod;
8+
9+
@Mod.EventBusSubscriber(modid = CompactMachines.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
10+
public class GameTestsMain {
11+
12+
@SubscribeEvent
13+
public static void registerTests(final RegisterGameTestsEvent game) {
14+
game.register(CodecTests.class);
15+
}
16+
}

1.16.5-test/java/dev/compactmods/machines/tests/GraphTests.java renamed to src/test/java/dev/compactmods/machines/test/GraphTests.java

Lines changed: 17 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
package dev.compactmods.machines.tests;
1+
package dev.compactmods.machines.test;
22

3+
import java.util.Collection;
4+
import java.util.Optional;
35
import com.google.common.graph.Graph;
46
import com.mojang.serialization.DataResult;
57
import dev.compactmods.machines.data.codec.CodecExtensions;
@@ -8,17 +10,17 @@
810
import dev.compactmods.machines.data.graph.CompactMachineRoomNode;
911
import dev.compactmods.machines.data.graph.IMachineGraphNode;
1012
import dev.compactmods.machines.util.MathUtil;
11-
import net.minecraft.nbt.*;
12-
import net.minecraft.util.math.ChunkPos;
13-
import net.minecraftforge.common.util.Constants;
13+
import net.minecraft.nbt.CompoundTag;
14+
import net.minecraft.nbt.ListTag;
15+
import net.minecraft.nbt.NbtOps;
16+
import net.minecraft.nbt.Tag;
17+
import net.minecraft.world.level.ChunkPos;
1418
import org.junit.jupiter.api.Assertions;
1519
import org.junit.jupiter.api.DisplayName;
1620
import org.junit.jupiter.api.Test;
1721

18-
import java.util.Collection;
19-
import java.util.Optional;
20-
2122
@DisplayName("Machine Graph Tests")
23+
@org.junit.jupiter.api.Tag("minecraft")
2224
public class GraphTests {
2325

2426
private CompactMachineConnectionGraph generateGraphWithSingleRoom() {
@@ -135,42 +137,34 @@ void canCreateRoomWithMultipleLinkedMachines() {
135137
void canSerialize() {
136138
CompactMachineConnectionGraph graph = generateGraphWithSingleRoom();
137139

138-
DataResult<INBT> nbtResult = CompactMachineConnectionGraph.CODEC.encodeStart(NBTDynamicOps.INSTANCE, graph);
140+
DataResult<Tag> nbtResult = CompactMachineConnectionGraph.CODEC.encodeStart(NbtOps.INSTANCE, graph);
139141

140142
nbtResult.resultOrPartial(Assertions::fail)
141143
.ifPresent(nbt -> {
142-
Assertions.assertTrue(nbt instanceof CompoundNBT);
143-
144-
// try {
145-
// File file = FileHelper.RESOURCES_DIR.resolve("graph.dat").toFile();
146-
// file.delete();
147-
// CompressedStreamTools.writeCompressed((CompoundNBT) nbt, file);
148-
// } catch (IOException e) {
149-
// e.printStackTrace();
150-
// }
144+
Assertions.assertTrue(nbt instanceof CompoundTag);
151145

152-
CompoundNBT c = (CompoundNBT) nbt;
146+
CompoundTag c = (CompoundTag) nbt;
153147
Assertions.assertFalse(c.isEmpty());
154148

155149
Assertions.assertTrue(c.contains("connections"));
156150

157-
ListNBT connections = c.getList("connections", Constants.NBT.TAG_COMPOUND);
151+
ListTag connections = c.getList("connections", Tag.TAG_COMPOUND);
158152
Assertions.assertEquals(1, connections.size(), "Expected one connection from a machine to a single room.");
159153

160-
CompoundNBT conn1 = connections.getCompound(0);
154+
CompoundTag conn1 = connections.getCompound(0);
161155
Assertions.assertNotNull(conn1);
162156

163157
Assertions.assertTrue(conn1.contains("machine"));
164158
Assertions.assertTrue(conn1.contains("connections"));
165159

166-
INBT machineChunk = conn1.get("machine");
167-
DataResult<ChunkPos> chunkRes = CodecExtensions.CHUNKPOS.parse(NBTDynamicOps.INSTANCE, machineChunk);
160+
Tag machineChunk = conn1.get("machine");
161+
DataResult<ChunkPos> chunkRes = CodecExtensions.CHUNKPOS.parse(NbtOps.INSTANCE, machineChunk);
168162
chunkRes.resultOrPartial(Assertions::fail)
169163
.ifPresent(chunk -> {
170164
Assertions.assertEquals(new ChunkPos(0, 0), chunk);
171165
});
172166

173-
ListNBT connList = conn1.getList("connections", Constants.NBT.TAG_INT);
167+
ListTag connList = conn1.getList("connections", Tag.TAG_COMPOUND);
174168
Assertions.assertNotNull(connList);
175169
Assertions.assertEquals(1, connList.size());
176170
Assertions.assertEquals(0, connList.getInt(0));
@@ -199,88 +193,6 @@ void simpleNestedMachines() {
199193
graph.connectMachineToRoom(1, room1);
200194

201195
}
202-
// private void generateData(MutableGraph<IGraphNode> g, HashMap<String, IGraphNode> lookup) {
203-
// Random r = new Random();
204-
// MachineExternalLocation[] values = MachineExternalLocation.values();
205-
// int numInsides = 0;
206-
// int numOutsides = 0;
207-
//
208-
// Set<IMachineGraphNode> disconnected = new HashSet<>();
209-
// List<CompactMachineExternalNode> externals = new ArrayList<>();
210-
// List<CompactMachineInsideNode> internals = new ArrayList<>();
211-
//
212-
// // Seed a couple of machines and insides so they're always there
213-
// for(int i = 0; i < 10; i++) {
214-
// ChunkPos machineChunk = getMachineChunkPos(numInsides + 1);
215-
// CompactMachineExternalNode extern = createMachineExternalNode(g, lookup, i);
216-
// CompactMachineInsideNode intern = createMachineInternalNode(g, lookup, machineChunk);
217-
//
218-
// externals.add(extern);
219-
// internals.add(intern);
220-
//
221-
// extern.connectTo(intern);
222-
// numOutsides++;
223-
// numInsides++;
224-
// }
225-
//
226-
// for(int i = 0; i < 50; i++) {
227-
//
228-
// if(r.nextBoolean()) {
229-
// // Creating the outside of a machine
230-
// MachineExternalLocation loc = values[r.nextInt(values.length)];
231-
//
232-
// CompactMachineExternalNode machine = createMachineExternalNode(g, lookup, numOutsides + 1);
233-
// externals.add(machine);
234-
//
235-
// switch (loc) {
236-
// case EXTERNAL_DIMENSION:
237-
// int randomMachineInsideE = r.nextInt(internals.size());
238-
// CompactMachineInsideNode miE = internals.get(randomMachineInsideE);
239-
// machine.connectTo(miE);
240-
//
241-
// // try to remove from disconnected if it exists there
242-
// disconnected.remove(miE);
243-
// break;
244-
//
245-
// case INSIDE_MACHINE:
246-
// int randomMachineInsideI = r.nextInt(internals.size());
247-
// CompactMachineInsideNode miI = internals.get(randomMachineInsideI);
248-
//
249-
// // Put the machine inside a randomly chosen existing machine
250-
// g.putEdge(miI, machine);
251-
//
252-
// boolean connectToAnother = r.nextBoolean();
253-
// if(connectToAnother) {
254-
// System.out.println("connect");
255-
// int randomMachine = r.nextInt(internals.size());
256-
// CompactMachineInsideNode in = internals.get(randomMachine);
257-
// machine.connectTo(in);
258-
//
259-
// g.successors(machine); // All the connections internally
260-
// }
261-
// break;
262-
// }
263-
//
264-
// numOutsides++;
265-
// } else {
266-
// // Creating the inside of a machine
267-
// ChunkPos machineChunk= getMachineChunkPos(numInsides + 1);
268-
// CompactMachineInsideNode mi = createMachineInternalNode(g, lookup, machineChunk);
269-
// disconnected.add(mi);
270-
// numInsides++;
271-
// }
272-
// }
273-
//
274-
// if(!disconnected.isEmpty()) {
275-
// for (IMachineGraphNode di : disconnected) {
276-
// CompactMachineExternalNode machine = createMachineExternalNode(g, lookup, numOutsides + 1);
277-
// machine.connectTo(di);
278-
// numOutsides++;
279-
// }
280-
// }
281-
//
282-
// disconnected.clear();
283-
// }
284196

285197
public static String write(final CompactMachineConnectionGraph graph) {
286198
StringBuilder sb = new StringBuilder();
@@ -290,20 +202,6 @@ public static String write(final CompactMachineConnectionGraph graph) {
290202
.append("\tlayout = fdp;").append(System.lineSeparator())
291203
.append("\tnode [shape=square,style=filled,color=lightgray];").append(System.lineSeparator());
292204

293-
// Set<CompactMachineNode> topLevelMachines = graph.getMachines()
294-
// .filter(n -> graph.getConnectedRoom(n.getMachineId()).isPresent())
295-
// .collect(Collectors.toSet());
296-
//
297-
// for (CompactMachineNode n : topLevelMachines)
298-
// outputExternalNode(sb, n);
299-
//
300-
// graph.nodes().stream()
301-
// .filter(n -> n instanceof CompactMachineRoomNode)
302-
// .map(n -> (CompactMachineRoomNode) n)
303-
// .forEach(n -> {
304-
// outputMachineInside(graph, sb, n);
305-
// });
306-
307205
sb.append("}");
308206
return sb.toString();
309207
}

1.16.5-test/java/dev/compactmods/machines/tests/MathTests.java renamed to src/test/java/dev/compactmods/machines/test/MathTests.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
package dev.compactmods.machines.tests;
2-
3-
import dev.compactmods.machines.util.MathUtil;
4-
import net.minecraft.util.math.BlockPos;
5-
import net.minecraft.util.math.ChunkPos;
6-
import net.minecraft.util.math.vector.Vector3i;
7-
import org.junit.jupiter.api.*;
1+
package dev.compactmods.machines.test;
82

93
import java.util.HashMap;
4+
import dev.compactmods.machines.util.MathUtil;
5+
import net.minecraft.core.BlockPos;
6+
import net.minecraft.core.Vec3i;
7+
import net.minecraft.world.level.ChunkPos;
8+
import org.junit.jupiter.api.Assertions;
9+
import org.junit.jupiter.api.DisplayName;
10+
import org.junit.jupiter.api.Test;
1011

1112
@DisplayName("Math")
1213
public class MathTests {
@@ -33,7 +34,7 @@ void positionGeneratorWorksCorrectly() {
3334
tests.put(8, new ChunkPos(-64, -64));
3435

3536
tests.forEach((id, expectedChunk) -> {
36-
Vector3i byIndex = MathUtil.getRegionPositionByIndex(id);
37+
Vec3i byIndex = MathUtil.getRegionPositionByIndex(id);
3738
BlockPos finalPos = MathUtil.getCenterWithY(byIndex, 0);
3839

3940
ChunkPos calculatedChunk = new ChunkPos(finalPos);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dev.compactmods.machines.test.data;
2+
3+
import dev.compactmods.machines.CompactMachines;
4+
import net.minecraft.gametest.framework.GameTest;
5+
import net.minecraft.gametest.framework.GameTestHelper;
6+
7+
// @GameTestHolder / @ModGameTests here?
8+
public class CodecTests {
9+
10+
@GameTest(templateNamespace = CompactMachines.MOD_ID, prefixTemplateWithClassname = false, template = "empty_5x")
11+
public static void testCodec(GameTestHelper test) {
12+
test.succeed();
13+
}
14+
}

1.16.5-test/java/dev/compactmods/machines/tests/util/FileHelper.java renamed to src/test/java/dev/compactmods/machines/test/util/FileHelper.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
package dev.compactmods.machines.tests.util;
2-
3-
import com.google.gson.Gson;
4-
import com.google.gson.JsonElement;
5-
import net.minecraft.nbt.CompoundNBT;
6-
import net.minecraft.nbt.CompressedStreamTools;
1+
package dev.compactmods.machines.test.util;
72

83
import java.io.IOException;
94
import java.io.InputStream;
105
import java.io.InputStreamReader;
116
import java.net.URL;
127
import java.nio.file.Path;
138
import java.nio.file.Paths;
9+
import com.google.gson.Gson;
10+
import com.google.gson.JsonElement;
11+
import net.minecraft.nbt.CompoundTag;
12+
import net.minecraft.nbt.NbtIo;
1413

1514
public class FileHelper {
1615
public static final FileHelper INSTANCE = new FileHelper();
@@ -41,8 +40,8 @@ public JsonElement getJsonFromFile(String filename) {
4140
return g.fromJson(isr, JsonElement.class);
4241
}
4342

44-
public CompoundNBT getNbtFromFile(String filename) throws IOException {
43+
public CompoundTag getNbtFromFile(String filename) throws IOException {
4544
InputStream isr = getFileStream(filename);
46-
return CompressedStreamTools.readCompressed(isr);
45+
return NbtIo.readCompressed(isr);
4746
}
4847
}
457 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)