Building / Fixed some tests

This commit is contained in:
Anuken
2020-02-15 14:51:31 -05:00
parent 03d0f54083
commit 8b4fcf99a6
21 changed files with 221 additions and 188 deletions

View File

@@ -8,9 +8,9 @@ import mindustry.content.*;
import mindustry.core.*;
import mindustry.core.GameState.*;
import mindustry.ctype.*;
import mindustry.entities.type.base.*;
import mindustry.entities.units.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.io.*;
import mindustry.maps.*;
import mindustry.net.Net;
@@ -103,8 +103,8 @@ public class ApplicationTests{
Time.update();
Time.update();
Time.setDeltaProvider(() -> 1f);
unitGroup.update();
assertFalse(unitGroup.isEmpty(), "No enemies spawned.");
Groups.unit.update();
assertFalse(Groups.unit.isEmpty(), "No enemies spawned.");
}
@Test
@@ -335,18 +335,18 @@ public class ApplicationTests{
void buildingOverlap(){
initBuilding();
BuilderDrone d1 = (BuilderDrone)UnitTypes.phantom.create(Team.sharded);
BuilderDrone d2 = (BuilderDrone)UnitTypes.phantom.create(Team.sharded);
Builderc d1 = (Builderc)UnitTypes.phantom.create(Team.sharded);
Builderc d2 = (Builderc)UnitTypes.phantom.create(Team.sharded);
d1.set(10f, 20f);
d2.set(10f, 20f);
d1.addBuildRequest(new BuildRequest(0, 0, 0, Blocks.copperWallLarge));
d2.addBuildRequest(new BuildRequest(1, 1, 0, Blocks.copperWallLarge));
d1.addBuild(new BuildRequest(0, 0, 0, Blocks.copperWallLarge));
d2.addBuild(new BuildRequest(1, 1, 0, Blocks.copperWallLarge));
Time.setDeltaProvider(() -> 9999999f);
d1.updateBuilding();
d2.updateBuilding();
d1.update();
d2.update();
assertEquals(Blocks.copperWallLarge, world.tile(0, 0).block());
assertEquals(Blocks.air, world.tile(2, 2).block());
@@ -357,26 +357,26 @@ public class ApplicationTests{
void buildingDestruction(){
initBuilding();
BuilderDrone d1 = (BuilderDrone)UnitTypes.phantom.create(Team.sharded);
BuilderDrone d2 = (BuilderDrone)UnitTypes.phantom.create(Team.sharded);
Builderc d1 = (Builderc)UnitTypes.phantom.create(Team.sharded);
Builderc d2 = (Builderc)UnitTypes.phantom.create(Team.sharded);
d1.set(10f, 20f);
d2.set(10f, 20f);
d1.addBuildRequest(new BuildRequest(0, 0, 0, Blocks.copperWallLarge));
d2.addBuildRequest(new BuildRequest(1, 1));
d1.addBuild(new BuildRequest(0, 0, 0, Blocks.copperWallLarge));
d2.addBuild(new BuildRequest(1, 1));
Time.setDeltaProvider(() -> 3f);
d1.updateBuilding();
d1.update();
Time.setDeltaProvider(() -> 1f);
d2.updateBuilding();
d2.update();
assertEquals(content.getByName(ContentType.block, "build2"), world.tile(0, 0).block());
Time.setDeltaProvider(() -> 9999f);
d1.updateBuilding();
d2.updateBuilding();
d1.update();
d2.update();
assertEquals(Blocks.air, world.tile(0, 0).block());
assertEquals(Blocks.air, world.tile(2, 2).block());
@@ -414,8 +414,8 @@ public class ApplicationTests{
}catch(Throwable t){
fail("Failed to update block '" + tile.block() + "'.", t);
}
assertEquals(tile.block(), tile.entity.block);
assertEquals(tile.block().health, tile.entity.health);
assertEquals(tile.block(), tile.entity.block());
assertEquals(tile.block().health, tile.entity.health());
}
}
}

View File

@@ -1,12 +1,9 @@
import arc.util.*;
import arc.util.io.*;
import mindustry.content.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.io.*;
import org.junit.jupiter.api.*;
import java.io.*;
import java.nio.*;
import static org.junit.jupiter.api.Assertions.*;
@@ -50,9 +47,9 @@ public class IOTests{
rules.attackMode = true;
rules.buildSpeedMultiplier = 99f;
TypeIO.writeRules(buffer, rules);
TypeIO.writeRules(new Writes(new ByteBufferOutput(buffer)), rules);
buffer.position(0);
Rules res = TypeIO.readRules(buffer);
Rules res = TypeIO.readRules(new Reads(new ByteBufferInput(buffer)));
assertEquals(rules.buildSpeedMultiplier, res.buildSpeedMultiplier);
assertEquals(rules.attackMode, res.attackMode);

View File

@@ -37,8 +37,8 @@ public class DirectConsumerTests extends PowerTestFixture{
consumes.power(requestedPower);
consumes.items(new ItemStack(Items.silicon, 30), new ItemStack(Items.lead, 30));
}});
consumertile.entity.items().add(Items.silicon, siliconAmount);
consumertile.entity.items().add(Items.lead, leadAmount);
consumerTile.entity.items().add(Items.silicon, siliconAmount);
consumerTile.entity.items().add(Items.lead, leadAmount);
Tile producerTile = createFakeTile(2, 0, createFakeProducerBlock(producedPower));
producerTile.<PowerGenerator.GeneratorEntity>ent().productionEfficiency = 1f;
@@ -50,6 +50,6 @@ public class DirectConsumerTests extends PowerTestFixture{
consumerTile.entity.update();
graph.update();
assertEquals(expectedSatisfaction, consumertile.entity.power().status);
assertEquals(expectedSatisfaction, consumerTile.entity.power().status);
}
}

View File

@@ -1,6 +1,7 @@
package power;
import arc.*;
import arc.mock.*;
import arc.util.*;
import mindustry.*;
import mindustry.content.*;
@@ -14,7 +15,7 @@ import org.junit.jupiter.api.*;
import java.lang.reflect.*;
import static mindustry.Vars.content;
import static mindustry.Vars.*;
/**
* This class provides objects commonly used by power related unit tests.
@@ -26,8 +27,11 @@ public class PowerTestFixture{
@BeforeAll
static void initializeDependencies(){
headless = true;
Core.graphics = new FakeGraphics();
Core.files = new MockFiles();
Vars.state = new GameState();
Vars.tree = new FileTree();
Vars.content = new ContentLoader(){
@Override
public void handleMappableContent(MappableContent content){
@@ -87,11 +91,11 @@ public class PowerTestFixture{
// Simulate the "changed" method. Calling it through reflections would require half the game to be initialized.
tile.entity = block.newEntity().init(tile, false);
tile.entity.cons() = new ConsumeModule(tile.entity);
if(block.hasItems) tile.entity.items() = new ItemModule();
if(block.hasLiquids) tile.entity.liquids() = new LiquidModule();
tile.entity.cons(new ConsumeModule(tile.entity));
if(block.hasItems) tile.entity.items(new ItemModule());
if(block.hasLiquids) tile.entity.liquids(new LiquidModule());
if(block.hasPower){
tile.entity.power() = new PowerModule();
tile.entity.power(new PowerModule());
tile.entity.power().graph = new PowerGraph(){
//assume there's always something consuming power
@Override
@@ -104,7 +108,7 @@ public class PowerTestFixture{
// Assign incredibly high health so the block does not get destroyed on e.g. burning Blast Compound
block.health = 100000;
tile.entity.health = 100000.0f;
tile.entity.health(100000.0f);
return tile;
}catch(Exception ex){

View File

@@ -66,7 +66,7 @@ public class PowerTests extends PowerTestFixture{
// Update and check for the expected power status of the consumer
powerGraph.update();
assertEquals(expectedSatisfaction, directConsumertile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR, parameterDescription + ": Satisfaction of direct consumer did not match");
assertEquals(expectedSatisfaction, directConsumerTile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR, parameterDescription + ": Satisfaction of direct consumer did not match");
}
/**
@@ -104,14 +104,14 @@ public class PowerTests extends PowerTestFixture{
}
float maxCapacity = 100f;
Tile batteryTile = createFakeTile(0, 2, createFakeBattery(maxCapacity));
batterytile.entity.power().status = initialBatteryCapacity / maxCapacity;
batteryTile.entity.power().status = initialBatteryCapacity / maxCapacity;
powerGraph.add(batteryTile);
powerGraph.update();
assertEquals(expectedBatteryCapacity / maxCapacity, batterytile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR, parameterDescription + ": Expected battery status did not match");
assertEquals(expectedBatteryCapacity / maxCapacity, batteryTile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR, parameterDescription + ": Expected battery status did not match");
if(directConsumerTile != null){
assertEquals(expectedSatisfaction, directConsumertile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR, parameterDescription + ": Satisfaction of direct consumer did not match");
assertEquals(expectedSatisfaction, directConsumerTile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR, parameterDescription + ": Satisfaction of direct consumer did not match");
}
}
@@ -127,13 +127,13 @@ public class PowerTests extends PowerTestFixture{
powerGraph.add(consumerTile);
powerGraph.update();
assertEquals(1.0f, consumertile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR);
assertEquals(1.0f, consumerTile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR);
powerGraph.remove(producerTile);
powerGraph.add(consumerTile);
powerGraph.update();
assertEquals(0.0f, consumertile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR);
assertEquals(0.0f, consumerTile.entity.power().status, Mathf.FLOAT_ROUNDING_ERROR);
if(consumerTile.block().consumes.hasPower()){
ConsumePower consumePower = consumerTile.block().consumes.getPower();
assertFalse(consumePower.valid(consumerTile.ent()));