Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/alarm #4

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
plugins{
id "org.sonarqube" version "2.6.2" apply false
}

subprojects {
apply plugin: 'java'
apply plugin: 'org.sonarqube'
apply plugin: 'jacoco'

repositories {
jcenter()
Expand Down
4 changes: 3 additions & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ include ':train-interfaces'
include ':train-sensor'
include ':train-system'
include ':train-user'
include ':train-tachograph'
include ':train-tachograph'
include ':train-runner'

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package hu.bme.mit.train.interfaces;

import java.util.TimerTask;

public abstract class TrainRunner extends TimerTask {

abstract public void schedule(long period);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ public interface TrainUser {

boolean getAlarmFlag();

void setAlarmFlag(boolean alarmState);

void overrideJoystickPosition(int joystickPosition);

}
1 change: 1 addition & 0 deletions train-runner/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build/
19 changes: 19 additions & 0 deletions train-runner/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
plugins {
id 'java'
}

version 'unspecified'

repositories {
mavenCentral()
}

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
compile project(':train-interfaces')
}

test {
useJUnitPlatform()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package hu.bme.mit.train.runner;

import hu.bme.mit.train.interfaces.TrainController;
import hu.bme.mit.train.interfaces.TrainRunner;

import java.util.Date;
import java.util.Timer;

public class TrainRunnerImpl extends TrainRunner {


private final TrainController controller;

private final Timer timer;

public TrainRunnerImpl(TrainController controller){
this.controller = controller;
this.timer = new Timer();
}

@Override
public void run(){
controller.followSpeed();
}

public void schedule(long period){
this.timer.schedule(this, new Date(), period);
}
}
2 changes: 1 addition & 1 deletion train-sensor/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ dependencies {
compile project(':train-user')

compile group: 'junit', name: 'junit', version: '4.12'
compile 'org.mockito:mockito-core:2.7.16'
compile 'org.mockito:mockito-core:2.+'
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import hu.bme.mit.train.interfaces.TrainController;
import hu.bme.mit.train.interfaces.TrainSensor;
import hu.bme.mit.train.interfaces.TrainUser;
import jdk.jshell.spi.ExecutionControl;

public class TrainSensorImpl implements TrainSensor {

Expand All @@ -22,8 +23,24 @@ public int getSpeedLimit() {

@Override
public void overrideSpeedLimit(int speedLimit) {
if(isOverAbsoluteMargin(speedLimit) || isOverRelativeMargin(speedLimit))
{
user.setAlarmFlag(true);
}
else {
user.setAlarmFlag(false);

}
this.speedLimit = speedLimit;
controller.setSpeedLimit(speedLimit);
}

private boolean isOverAbsoluteMargin(int newSpeedLimit){
return newSpeedLimit < 0 || newSpeedLimit > 500;
}

private boolean isOverRelativeMargin(int newSpeedLimit){
int refSpeed = controller.getReferenceSpeed();
return newSpeedLimit < refSpeed / 2;
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,65 @@
package hu.bme.mit.train.sensor;

import hu.bme.mit.train.interfaces.*;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.mockito.Mockito.*;

public class TrainSensorTest {

@Mock
private TrainController controller;
@Mock
private TrainUser user;

private TrainSensor sensor;
@Before
public void before() {
// TODO Add initializations
MockitoAnnotations.initMocks(this);
sensor = new TrainSensorImpl(controller, user);
}
@Test
public void AlarmState_OverAbsoluteMarginWithNegative() {
verify(user,times(0)).setAlarmFlag(true);
sensor.overrideSpeedLimit(-100);
verify(user).setAlarmFlag(true);
sensor.overrideSpeedLimit(-1);
verify(user,times(2)).setAlarmFlag(true);
}

@Test
public void AlarmState_OverAbsoluteMarginWithOverFiveHundred() {
verify(user,times(0)).setAlarmFlag(true);
sensor.overrideSpeedLimit(501);
verify(user).setAlarmFlag(true);
sensor.overrideSpeedLimit(1500);
verify(user,times(2)).setAlarmFlag(true);
}

@Test
public void AlarmState_OverRelativeMargin() {
verify(user,times(0)).setAlarmFlag(true);
when(controller.getReferenceSpeed()).thenReturn(150);
sensor.overrideSpeedLimit(50);
verify(user).setAlarmFlag(true);
}
@Test
public void AlarmState_OverAbsoluteAndRelativeMargin() {
verify(user,times(0)).setAlarmFlag(true);
when(controller.getReferenceSpeed()).thenReturn(1500);
sensor.overrideSpeedLimit(650);
verify(user).setAlarmFlag(true);
}

@Test
public void ThisIsAnExampleTestStub() {
// TODO Delete this and add test cases based on the issues
public void AlarmState_UnderAbsoluteAndRelativeMargin() {
verify(user,times(0)).setAlarmFlag(true);
when(controller.getReferenceSpeed()).thenReturn(150);
sensor.overrideSpeedLimit(100);
verify(user).setAlarmFlag(false);
}
}
1 change: 1 addition & 0 deletions train-system/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ dependencies {
compile project(':train-sensor')
compile project(':train-user')
compile project(':train-tachograph')
compile project(':train-runner')

compile group: 'junit', name: 'junit', version: '4.12'
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package hu.bme.mit.train.system;

import hu.bme.mit.train.controller.TrainControllerImpl;
import hu.bme.mit.train.interfaces.TrainController;
import hu.bme.mit.train.interfaces.TrainSensor;
import hu.bme.mit.train.interfaces.TrainTachograph;
import hu.bme.mit.train.interfaces.TrainUser;
import hu.bme.mit.train.interfaces.*;
import hu.bme.mit.train.sensor.TrainSensorImpl;
import hu.bme.mit.train.user.TrainUserImpl;
import hu.bme.mit.train.tachograph.TrainTachographImpl;
import hu.bme.mit.train.runner.TrainRunnerImpl;

public class TrainSystem {

Expand All @@ -16,6 +14,8 @@ public class TrainSystem {
private TrainSensor sensor = new TrainSensorImpl(controller, user);
private TrainTachograph tachograph = new TrainTachographImpl(controller, user);

private TrainRunner runner = new TrainRunnerImpl(controller);

public TrainController getController() {
return controller;
}
Expand All @@ -30,4 +30,6 @@ public TrainUser getUser() {

public TrainTachograph getTachograph() { return tachograph; }

public TrainRunner getRunner(){ return runner; }

}
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package hu.bme.mit.train.system;

import hu.bme.mit.train.interfaces.TrainTachograph;
import hu.bme.mit.train.interfaces.*;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import hu.bme.mit.train.interfaces.TrainController;
import hu.bme.mit.train.interfaces.TrainSensor;
import hu.bme.mit.train.interfaces.TrainUser;
import hu.bme.mit.train.system.TrainSystem;

import java.util.Date;
import java.util.Timer;

public class TrainSystemTest {

TrainController controller;
TrainSensor sensor;
TrainUser user;
TrainTachograph tachograph;
TrainRunner runner;

@Before
public void before() {
Expand All @@ -24,6 +25,7 @@ public void before() {
sensor = system.getSensor();
user = system.getUser();
tachograph = system.getTachograph();
runner = system.getRunner();

sensor.overrideSpeedLimit(50);
}
Expand Down Expand Up @@ -72,7 +74,7 @@ public void LogDataToTachograph(){
Assert.assertTrue(tachograph.isEmpty());
tachograph.recordData();
Assert.assertFalse(tachograph.isEmpty());
Assert.assertEquals(tachograph.getData(), 1);
Assert.assertEquals( 1, tachograph.getData());
user.overrideJoystickPosition(5);
sensor.overrideSpeedLimit(10);
tachograph.recordData();
Expand All @@ -81,8 +83,7 @@ public void LogDataToTachograph(){
sensor.overrideSpeedLimit(5);
tachograph.recordData();

Assert.assertEquals(tachograph.getData(), 3);
Assert.assertEquals(3, tachograph.getData());
}


}
1 change: 1 addition & 0 deletions train-tachograph/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build/
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ public class TrainUserImpl implements TrainUser {
private TrainController controller;
private int joystickPosition;

private boolean alarm;

public TrainUserImpl(TrainController controller) {
this.controller = controller;
}
Expand All @@ -17,6 +19,11 @@ public boolean getAlarmFlag() {
return false;
}

@Override
public void setAlarmFlag(boolean alarmState) {
this.alarm = alarmState;
}

@Override
public int getJoystickPosition() {
return joystickPosition;
Expand Down