Skip to content

Commit

Permalink
test: port to ModuleTestingEnvironment from HeadlessEnvironment (#64)
Browse files Browse the repository at this point in the history
* Test dependency on ModuleTestingEnvironment 0.3.1
* Use Context instead of global CoreRegistry, in line with general Terasology project goals.
  • Loading branch information
keturn authored Aug 1, 2021
1 parent 4224055 commit 0216b20
Show file tree
Hide file tree
Showing 11 changed files with 208 additions and 216 deletions.
3 changes: 2 additions & 1 deletion module.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"dependencies": [
{ "id": "BiomesAPI", "minVersion": "4.0.0" },
{ "id": "CoreAssets", "minVersion": "2.0.1" },
{ "id": "CoreWorlds", "minVersion": "1.1.0", "maxVersion": "3.0.0" }
{ "id": "CoreWorlds", "minVersion": "1.1.0", "maxVersion": "3.0.0" },
{ "id": "ModuleTestingEnvironment", "minVersion": "0.3.1", "optional": "true" }
],
"isServerSideOnly": true,
"isLibrary": true
Expand Down
17 changes: 8 additions & 9 deletions src/test/java/org/terasology/TextWorldBuilder.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
// Copyright 2020 The Terasology Foundation
// Copyright 2021 The Terasology Foundation
// SPDX-License-Identifier: Apache-2.0
package org.terasology;

import org.joml.Vector3i;
import org.terasology.gestalt.assets.ResourceUrn;
import org.terasology.gestalt.assets.management.AssetManager;
import org.terasology.engine.WorldProvidingHeadlessEnvironment;
import org.terasology.engine.registry.CoreRegistry;
import org.terasology.engine.context.Context;
import org.terasology.engine.world.WorldProvider;
import org.terasology.engine.world.block.Block;
import org.terasology.engine.world.block.BlockManager;
import org.terasology.engine.world.block.family.SymmetricFamily;
import org.terasology.engine.world.block.loader.BlockFamilyDefinition;
import org.terasology.engine.world.block.loader.BlockFamilyDefinitionData;
import org.terasology.gestalt.assets.ResourceUrn;
import org.terasology.gestalt.assets.management.AssetManager;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -28,10 +27,10 @@ public class TextWorldBuilder {
private Block ground;
private Block air;

public TextWorldBuilder(WorldProvidingHeadlessEnvironment environment) {
world = CoreRegistry.get(WorldProvider.class);
BlockManager blockManager = CoreRegistry.get(BlockManager.class);
AssetManager assetManager = CoreRegistry.get(AssetManager.class);
public TextWorldBuilder(Context context) {
world = context.get(WorldProvider.class);
BlockManager blockManager = context.get(BlockManager.class);
AssetManager assetManager = context.get(AssetManager.class);

BlockFamilyDefinitionData data = new BlockFamilyDefinitionData();
data.setBlockFamily(SymmetricFamily.class);
Expand Down
39 changes: 19 additions & 20 deletions src/test/java/org/terasology/navgraph/ConnectNavGraphChunkTest.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
// Copyright 2020 The Terasology Foundation
// Copyright 2021 The Terasology Foundation
// SPDX-License-Identifier: Apache-2.0
package org.terasology.navgraph;

import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.terasology.TextWorldBuilder;
import org.terasology.core.world.generator.AbstractBaseWorldGenerator;
import org.terasology.engine.WorldProvidingHeadlessEnvironment;
import org.terasology.engine.core.SimpleUri;
import org.terasology.engine.registry.CoreRegistry;
import org.terasology.engine.context.Context;
import org.terasology.engine.world.WorldProvider;
import org.terasology.gestalt.naming.Name;
import org.terasology.pathfinding.PathfinderTestGenerator;
import org.terasology.moduletestingenvironment.MTEExtension;
import org.terasology.moduletestingenvironment.ModuleTestingHelper;
import org.terasology.moduletestingenvironment.extension.Dependencies;

import java.util.HashSet;
import java.util.Set;
Expand All @@ -24,7 +25,14 @@
/**
* @author synopia
*/
@Tag("MteTest")
@ExtendWith(MTEExtension.class)
@Dependencies("Pathfinding")
public class ConnectNavGraphChunkTest {
TextWorldBuilder builder;
WorldProvider world;
Vector3ic chunkLocation = new Vector3i(0, 0, 0);

private static final String[] CONTOUR_EXPECTED = new String[]{
" C ",
" ",
Expand Down Expand Up @@ -60,9 +68,6 @@ public class ConnectNavGraphChunkTest {
" C ",
};

private WorldProvider world;
private TextWorldBuilder builder;

@Test
public void test1() {
NavGraphChunk center = new NavGraphChunk(world, new Vector3i(1, 0, 1));
Expand Down Expand Up @@ -126,16 +131,10 @@ public void test2() {
}

@BeforeEach
public void setup() {
WorldProvidingHeadlessEnvironment env = new WorldProvidingHeadlessEnvironment(new Name("Pathfinding"));
env.setupWorldProvider(new AbstractBaseWorldGenerator(new SimpleUri("")) {
@Override
public void initialize() {
register(new PathfinderTestGenerator());
}
});
builder = new TextWorldBuilder(env);
world = CoreRegistry.get(WorldProvider.class);
public void setup(Context context, WorldProvider worldProvider, ModuleTestingHelper mteHelp) {
builder = new TextWorldBuilder(context);
world = worldProvider;
mteHelp.forceAndWaitForGeneration(chunkLocation);
}

private void assertCenter(final NavGraphChunk center, NavGraphChunk left, NavGraphChunk up, NavGraphChunk right, NavGraphChunk down, String[] contours) {
Expand Down
39 changes: 24 additions & 15 deletions src/test/java/org/terasology/navgraph/ContourFinderTest.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
// Copyright 2020 The Terasology Foundation
// Copyright 2021 The Terasology Foundation
// SPDX-License-Identifier: Apache-2.0
package org.terasology.navgraph;

import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.terasology.TextWorldBuilder;
import org.terasology.core.world.generator.AbstractBaseWorldGenerator;
import org.terasology.engine.WorldProvidingHeadlessEnvironment;
import org.terasology.engine.core.SimpleUri;
import org.terasology.engine.registry.CoreRegistry;
import org.terasology.engine.context.Context;
import org.terasology.engine.world.WorldProvider;
import org.terasology.gestalt.naming.Name;
import org.terasology.moduletestingenvironment.MTEExtension;
import org.terasology.moduletestingenvironment.ModuleTestingHelper;
import org.terasology.moduletestingenvironment.extension.Dependencies;

/**
* @author synopia
*/
@Tag("MteTest")
@ExtendWith(MTEExtension.class)
@Dependencies("Pathfinding")
public class ContourFinderTest {
TextWorldBuilder builder;
WorldProvider worldProvider;
Vector3ic chunkLocation = new Vector3i(0, 0, 0);

@Test
public void testStairs() {
assertContour(new String[]{
Expand Down Expand Up @@ -404,17 +414,16 @@ public void testRectangle() {
});
}

private void assertContour(String[] ground, String[] contour) {
WorldProvidingHeadlessEnvironment env = new WorldProvidingHeadlessEnvironment(new Name("Pathfinding"));
env.setupWorldProvider(new AbstractBaseWorldGenerator(new SimpleUri("")) {
@Override
public void initialize() {
@BeforeEach
public void setup(Context context, WorldProvider worldProvider, ModuleTestingHelper mteHelp) {
builder = new TextWorldBuilder(context);
this.worldProvider = worldProvider;
mteHelp.forceAndWaitForGeneration(chunkLocation);
}

}
});
TextWorldBuilder builder = new TextWorldBuilder(env);
private void assertContour(String[] ground, String[] contour) {
builder.setGround(ground);
final NavGraphChunk chunk = new NavGraphChunk(CoreRegistry.get(WorldProvider.class), new Vector3i());
final NavGraphChunk chunk = new NavGraphChunk(worldProvider, chunkLocation);
chunk.update();

builder.parse(new TextWorldBuilder.Runner() {
Expand Down
42 changes: 25 additions & 17 deletions src/test/java/org/terasology/navgraph/FloorFinderTest.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
// Copyright 2020 The Terasology Foundation
// Copyright 2021 The Terasology Foundation
// SPDX-License-Identifier: Apache-2.0
package org.terasology.navgraph;

import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.terasology.TextWorldBuilder;
import org.terasology.core.world.generator.AbstractBaseWorldGenerator;
import org.terasology.engine.WorldProvidingHeadlessEnvironment;
import org.terasology.engine.core.SimpleUri;
import org.terasology.engine.registry.CoreRegistry;
import org.terasology.engine.context.Context;
import org.terasology.engine.world.WorldProvider;
import org.terasology.gestalt.naming.Name;
import org.terasology.moduletestingenvironment.MTEExtension;
import org.terasology.moduletestingenvironment.ModuleTestingHelper;
import org.terasology.moduletestingenvironment.extension.Dependencies;

import java.util.HashSet;
import java.util.Set;

/**
* @author synopia
*/

@Tag("MteTest")
@ExtendWith(MTEExtension.class)
@Dependencies("Pathfinding")
public class FloorFinderTest {
TextWorldBuilder builder;
WorldProvider worldProvider;
Vector3ic chunkLocation = new Vector3i(0, 0, 0);

@Test
public void stairs3() {
assertFloors(new String[]{
Expand Down Expand Up @@ -292,6 +301,13 @@ public void testSingleFloor() {
});
}

@BeforeEach
public void setup(Context context, WorldProvider worldProvider, ModuleTestingHelper mteHelp) {
builder = new TextWorldBuilder(context);
this.worldProvider = worldProvider;
mteHelp.forceAndWaitForGeneration(chunkLocation);
}

private void assertFloors(String[] data, String[] floors) {
assertFloors(data, floors, null);
}
Expand All @@ -301,18 +317,10 @@ private void assertFloors(String[] data, String[] floors, String[] contour) {
}

private void assertFloors(String[] data, String[] floors, String[] contour, int[][] connections) {
WorldProvidingHeadlessEnvironment env = new WorldProvidingHeadlessEnvironment(new Name("Pathfinding"));
env.setupWorldProvider(new AbstractBaseWorldGenerator(new SimpleUri("")) {
@Override
public void initialize() {

}
});
TextWorldBuilder builder = new TextWorldBuilder(env);
builder.setGround(data);
final NavGraphChunk chunk = new NavGraphChunk(CoreRegistry.get(WorldProvider.class), new Vector3i());
final NavGraphChunk chunk = new NavGraphChunk(worldProvider, chunkLocation);

new WalkableBlockFinder(CoreRegistry.get(WorldProvider.class)).findWalkableBlocks(chunk);
new WalkableBlockFinder(worldProvider).findWalkableBlocks(chunk);
final FloorFinder finder = new FloorFinder();
finder.findFloors(chunk);
chunk.findContour();
Expand Down
41 changes: 25 additions & 16 deletions src/test/java/org/terasology/navgraph/RegionFinderTest.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
// Copyright 2020 The Terasology Foundation
// Copyright 2021 The Terasology Foundation
// SPDX-License-Identifier: Apache-2.0
package org.terasology.navgraph;

import org.joml.Vector3i;
import org.joml.Vector3ic;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.terasology.TextWorldBuilder;
import org.terasology.core.world.generator.AbstractBaseWorldGenerator;
import org.terasology.engine.WorldProvidingHeadlessEnvironment;
import org.terasology.engine.core.SimpleUri;
import org.terasology.engine.registry.CoreRegistry;
import org.terasology.engine.context.Context;
import org.terasology.engine.world.WorldProvider;
import org.terasology.gestalt.naming.Name;
import org.terasology.moduletestingenvironment.MTEExtension;
import org.terasology.moduletestingenvironment.ModuleTestingHelper;
import org.terasology.moduletestingenvironment.extension.Dependencies;

import java.util.HashSet;
import java.util.Set;

/**
* @author synopia
*/
@Tag("MteTest")
@ExtendWith(MTEExtension.class)
@Dependencies("Pathfinding")
public class RegionFinderTest {
TextWorldBuilder builder;
WorldProvider worldProvider;
Vector3ic chunkLocation = new Vector3i(0, 0, 0);

@Test
public void testFindRegion() {
assertRegions(new String[]{"X"}, new String[]{"0"});
Expand Down Expand Up @@ -138,22 +148,21 @@ public void bigTest() {
});
}

@BeforeEach
public void setup(Context context, WorldProvider worldProvider, ModuleTestingHelper mteHelp) {
builder = new TextWorldBuilder(context);
this.worldProvider = worldProvider;
mteHelp.forceAndWaitForGeneration(chunkLocation);
}

private void assertRegions(String[] data, String[] regions) {
assertRegions(data, regions, null);
}

private void assertRegions(String[] data, String[] regions, int[][] connections) {
WorldProvidingHeadlessEnvironment env = new WorldProvidingHeadlessEnvironment(new Name("Pathfinding"));
env.setupWorldProvider(new AbstractBaseWorldGenerator(new SimpleUri("")) {
@Override
public void initialize() {

}
});
TextWorldBuilder builder = new TextWorldBuilder(env);
builder.setGround(data);
final NavGraphChunk chunk = new NavGraphChunk(CoreRegistry.get(WorldProvider.class), new Vector3i());
new WalkableBlockFinder(CoreRegistry.get(WorldProvider.class)).findWalkableBlocks(chunk);
final NavGraphChunk chunk = new NavGraphChunk(worldProvider, chunkLocation);
new WalkableBlockFinder(worldProvider).findWalkableBlocks(chunk);
final FloorFinder finder = new FloorFinder();
finder.findRegions(chunk);
String[] actual = builder.evaluate(new TextWorldBuilder.Runner() {
Expand Down
Loading

0 comments on commit 0216b20

Please sign in to comment.