mirror of
https://gitlab.com/arnekeller/kit-programmieren-ws1920-final1.git
synced 2024-11-09 02:10:40 +00:00
Increase test coverage
This commit is contained in:
parent
61b6739ab4
commit
802c5deef5
@ -118,6 +118,11 @@ class MainTest {
|
|||||||
cmpInOut("long_train_input.txt", "long_train_output.txt");
|
cmpInOut("long_train_input.txt", "long_train_output.txt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testCoverage2() throws IOException {
|
||||||
|
cmpInOut("testcoverage2_input.txt", "testcoverage2_output.txt");
|
||||||
|
}
|
||||||
|
|
||||||
private void cmpInOut(String in, String out) throws IOException {
|
private void cmpInOut(String in, String out) throws IOException {
|
||||||
System.setIn(new ByteArrayInputStream(readFile(in)));
|
System.setIn(new ByteArrayInputStream(readFile(in)));
|
||||||
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
||||||
|
@ -96,9 +96,6 @@ public final class Switch extends Rail {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Vector2D getDirectionFrom(Vector2D position) {
|
public Vector2D getDirectionFrom(Vector2D position) {
|
||||||
if (selection == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return selection.getDirectionFrom(position);
|
return selection.getDirectionFrom(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,13 +122,17 @@ public final class Switch extends Rail {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether two switches are equal, ignoring the current configuration.
|
||||||
|
*
|
||||||
|
* @return whether this switch is equal to the other
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
if (obj != null && getClass().equals(obj.getClass())) {
|
if (obj != null && getClass().equals(obj.getClass())) {
|
||||||
final Switch otherSwitch = (Switch) obj;
|
final Switch otherSwitch = (Switch) obj;
|
||||||
|
|
||||||
return positionOne.equals(otherSwitch.positionOne) && positionTwo.equals(otherSwitch.positionTwo)
|
return positionOne.equals(otherSwitch.positionOne) && positionTwo.equals(otherSwitch.positionTwo);
|
||||||
&& Objects.equals(selection, otherSwitch.selection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -49,7 +49,7 @@ public final class Track extends Rail {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnectToRail(Rail rail) {
|
public boolean canConnectToRail(Rail rail) {
|
||||||
return rail != null && (rail.canConnectTo(start) || rail.canConnectTo(end));
|
return rail.canConnectTo(start) || rail.canConnectTo(end);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -51,7 +51,7 @@ public final class TrainManager {
|
|||||||
* @return whether a train is on that rail
|
* @return whether a train is on that rail
|
||||||
*/
|
*/
|
||||||
public boolean anyTrainOnRail(Rail rail) {
|
public boolean anyTrainOnRail(Rail rail) {
|
||||||
return rail != null && trains.values().stream().anyMatch(train -> train.isOnRail(rail));
|
return trains.values().stream().anyMatch(train -> train.isOnRail(rail));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -55,11 +55,12 @@ public class Vector2D {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the distance between this vector (interpreted as position) and another position.
|
* Calculate the distance between this vector (interpreted as position) and another position.
|
||||||
|
*
|
||||||
* @param other the point to measure distance to
|
* @param other the point to measure distance to
|
||||||
* @return the manhattan distance
|
* @return the manhattan distance
|
||||||
*/
|
*/
|
||||||
public long distanceTo(Vector2D other) {
|
public long distanceTo(Vector2D other) {
|
||||||
return other != null ? Math.abs(this.x - other.x) + Math.abs(this.y - other.y) : 0;
|
return Math.abs(this.x - other.x) + Math.abs(this.y - other.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -70,13 +71,12 @@ public class Vector2D {
|
|||||||
* @return the manhattan distance
|
* @return the manhattan distance
|
||||||
*/
|
*/
|
||||||
public boolean isParallelTo(Vector2D other) {
|
public boolean isParallelTo(Vector2D other) {
|
||||||
if (other == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return x == 0 && other.x == 0 || y == 0 && other.y == 0;
|
return x == 0 && other.x == 0 || y == 0 && other.y == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Normalize this vector. Will essentially return a new vector with (x/|x|, y/|y|).
|
||||||
|
*
|
||||||
* @return a vector with separately (!) normalized components
|
* @return a vector with separately (!) normalized components
|
||||||
*/
|
*/
|
||||||
public Vector2D normalized() {
|
public Vector2D normalized() {
|
||||||
|
@ -2,11 +2,10 @@ package edu.kit.informatik.ui;
|
|||||||
|
|
||||||
import edu.kit.informatik.model.ModelRailwaySimulation;
|
import edu.kit.informatik.model.ModelRailwaySimulation;
|
||||||
import edu.kit.informatik.Terminal;
|
import edu.kit.informatik.Terminal;
|
||||||
import edu.kit.informatik.ui.command.Command;
|
|
||||||
import edu.kit.informatik.ui.command.CommandFactory;
|
import edu.kit.informatik.ui.command.CommandFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interactive simulation runner, gets user inputs and processes commands specified.
|
* Interactive simulation runner: gets user inputs and processes specified commands.
|
||||||
*
|
*
|
||||||
* @author Arne Keller
|
* @author Arne Keller
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@ -28,11 +27,10 @@ public final class CommandLine {
|
|||||||
* Start a new interactive user session. Returns when standard in is fully processed or user exits.
|
* Start a new interactive user session. Returns when standard in is fully processed or user exits.
|
||||||
*/
|
*/
|
||||||
public static void startInteractive() {
|
public static void startInteractive() {
|
||||||
// create a new simulation
|
final ModelRailwaySimulation simulation = new ModelRailwaySimulation();
|
||||||
ModelRailwaySimulation simulation = new ModelRailwaySimulation();
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
String input = Terminal.readLine();
|
final String input = Terminal.readLine();
|
||||||
if (input == null) {
|
if (input == null) {
|
||||||
break; // TODO remove
|
break; // TODO remove
|
||||||
}
|
}
|
||||||
@ -50,9 +48,8 @@ public final class CommandLine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Command command = CommandFactory.getCommand(input);
|
CommandFactory.getCommand(input).apply(simulation);
|
||||||
command.apply(simulation);
|
} catch (final NumberFormatException | InvalidInputException e) {
|
||||||
} catch (NumberFormatException | InvalidInputException e) {
|
|
||||||
Terminal.printError(e.getMessage());
|
Terminal.printError(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
30
testcoverage2_input.txt
Normal file
30
testcoverage2_input.txt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
add track (0,0) -> (10,0)
|
||||||
|
add switch (-5,0) -> (0,0),(-5,5)
|
||||||
|
set switch 2 position (-5,5)
|
||||||
|
create engine diesel T1 Alpha 1 true true
|
||||||
|
add train 1 T1-Alpha
|
||||||
|
put train 1 at (5,0) in direction 1,0
|
||||||
|
step -5
|
||||||
|
create train-set ICE 1 2 true true
|
||||||
|
add train 2 ICE-1
|
||||||
|
create train-set ICE 2 2 true true
|
||||||
|
add train 3 ICE-2
|
||||||
|
create train-set ICE 2E 2 true true
|
||||||
|
add train 4 ICE-2E
|
||||||
|
create train-set ICE 3 2 true true
|
||||||
|
add train 5 ICE-3
|
||||||
|
add track (10,0) -> (20,0)
|
||||||
|
add track (20,0) -> (30,0)
|
||||||
|
add track (30,0) -> (40,0)
|
||||||
|
add track (40,0) -> (50,0)
|
||||||
|
put train 1 at (9,0) in direction 1,0
|
||||||
|
put train 2 at (41,0) in direction -1,0
|
||||||
|
put train 3 at (25,0) in direction 1,0
|
||||||
|
put train 4 at (19,0) in direction 1,0
|
||||||
|
put train 5 at (31,0) in direction -1,0
|
||||||
|
step 2
|
||||||
|
add switch (50,0) -> (55,0),(50,5)
|
||||||
|
put train 1 at (51,0) in direction 1,0
|
||||||
|
delete track 7
|
||||||
|
put train 1 at (0,0) in direction 0,-1
|
||||||
|
exit
|
29
testcoverage2_output.txt
Normal file
29
testcoverage2_output.txt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
1
|
||||||
|
2
|
||||||
|
OK
|
||||||
|
T1-Alpha
|
||||||
|
diesel engine T1-Alpha added to train 1
|
||||||
|
OK
|
||||||
|
Crash of train 1
|
||||||
|
ICE-1
|
||||||
|
train-set ICE-1 added to train 2
|
||||||
|
ICE-2
|
||||||
|
train-set ICE-2 added to train 3
|
||||||
|
ICE-2E
|
||||||
|
train-set ICE-2E added to train 4
|
||||||
|
ICE-3
|
||||||
|
train-set ICE-3 added to train 5
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
OK
|
||||||
|
OK
|
||||||
|
OK
|
||||||
|
OK
|
||||||
|
OK
|
||||||
|
Crash of train 1,2,3,4,5
|
||||||
|
7
|
||||||
|
Error, switches not set up
|
||||||
|
OK
|
||||||
|
Error, could not place train
|
Loading…
Reference in New Issue
Block a user