Skip to content

Commit

Permalink
Merge pull request #402 from rollerderby/min-time
Browse files Browse the repository at this point in the history
Remove minimum time, hardcode to 0.
  • Loading branch information
frank-weinberg authored Dec 8, 2019
2 parents b345155 + 11ca3ae commit 7a42704
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 123 deletions.
3 changes: 1 addition & 2 deletions html/components/team-time-tab.js
Original file line number Diff line number Diff line change
Expand Up @@ -1229,11 +1229,10 @@ function createTimeDialog(clock) {
var table = $("<table>").appendTo(dialog).addClass("TimeDialog");
var row = $("<tr><td/></tr>");
row.clone().appendTo(table).addClass("Time");
row.clone().appendTo(table).addClass("MinimumTime");
row.clone().appendTo(table).addClass("MaximumTime");
row.clone().appendTo(table).addClass("Direction");

$.each( [ "Time", "MinimumTime", "MaximumTime" ], function(_, e) {
$.each( [ "Time", "MaximumTime" ], function(_, e) {
var rowTable = _crgUtils.createRowTable(3).appendTo(table.find("tr."+this+">td"));
rowTable.find("tr:eq(0)").before("<tr><td colspan='3'/></tr>");

Expand Down
4 changes: 0 additions & 4 deletions src/com/carolinarollergirls/scoreboard/core/Clock.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,6 @@ public interface Clock extends ScoreBoardEventProvider {
* @return The time until the clock reaches its maximum or zero (in ms). This is the inverse of getTimeElapsed.
*/
public long getTimeRemaining();
public long getMinimumTime();
public void setMinimumTime(long ms);
public void changeMinimumTime(long ms);
public long getMaximumTime();
public void setMaximumTime(long ms);
public void changeMaximumTime(long ms);
Expand Down Expand Up @@ -92,7 +89,6 @@ public enum Value implements PermanentProperty {
NUMBER(Integer.class, 0),
TIME(Long.class, 0L),
INVERTED_TIME(Long.class, 0L),
MINIMUM_TIME(Long.class, 0L),
MAXIMUM_TIME(Long.class, 0L),
DIRECTION(Boolean.class, false),
RUNNING(Boolean.class, false);
Expand Down
23 changes: 7 additions & 16 deletions src/com/carolinarollergirls/scoreboard/core/impl/ClockImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ public ClockImpl(ScoreBoard sb, String i) {
} else {
values.put(Value.NUMBER, 0);
}
setRecalculated(Value.TIME).addSource(this, Value.MAXIMUM_TIME).addSource(this, Value.MINIMUM_TIME);
setRecalculated(Value.MAXIMUM_TIME).addSource(this, Value.MINIMUM_TIME);
setRecalculated(Value.TIME).addSource(this, Value.MAXIMUM_TIME);
setRecalculated(Value.INVERTED_TIME).addSource(this, Value.MAXIMUM_TIME).addSource(this, Value.TIME);

sb.addScoreBoardListener(new ConditionalScoreBoardListener(Rulesets.class, Rulesets.Value.CURRENT_RULESET, rulesetChangeListener));
Expand All @@ -56,15 +55,15 @@ else if (flag != Flag.INTERNAL) {
if ((flag == Flag.RESET && isCountDirectionDown()) || (Long)value > getMaximumTime() + 500 && (!isCountDirectionDown() || flag != Flag.RECALCULATE)) {
return getMaximumTime();
}
if ((flag == Flag.RESET && !isCountDirectionDown()) || (Long)value < getMinimumTime() - 500) {
return getMinimumTime();
if ((flag == Flag.RESET && !isCountDirectionDown()) || (Long)value < 0 - 500) {
return Long.valueOf(0);
}
}
if (prop == Value.INVERTED_TIME) {
return getMaximumTime() - getTime();
}
if (prop == Value.MAXIMUM_TIME && (Long)value < getMinimumTime()) {
return getMinimumTime();
if (prop == Value.MAXIMUM_TIME && (Long)value < 0) {
return Long.valueOf(0);
}
if (prop == Value.NUMBER && (Integer)value < 0) {
return 0;
Expand Down Expand Up @@ -129,7 +128,6 @@ public void scoreBoardChange(ScoreBoardEvent event) {
// Get default values from current settings or use hardcoded values
Rulesets r = getScoreBoard().getRulesets();
setCountDirectionDown(Boolean.parseBoolean(r.get(Rulesets.Child.CURRENT_RULE, getId() + ".ClockDirection").getValue()));
setMinimumTime(DEFAULT_MINIMUM_TIME);
if (getId().equals(ID_PERIOD) || getId().equals(ID_JAM)) {
setMaximumTime(ClockConversion.fromHumanReadable(r.get(Rulesets.Child.CURRENT_RULE, getId() + ".Duration").getValue()));
} else if (getId().equals(ID_INTERMISSION)) {
Expand Down Expand Up @@ -216,12 +214,6 @@ protected boolean isDisplayChange(long current, long last) {
}
}

@Override
public long getMinimumTime() { return (Long)get(Value.MINIMUM_TIME); }
@Override
public void setMinimumTime(long ms) { set(Value.MINIMUM_TIME, ms); }
@Override
public void changeMinimumTime(long change) { set(Value.MINIMUM_TIME, change, Flag.CHANGE); }
@Override
public long getMaximumTime() { return (Long)get(Value.MAXIMUM_TIME); }
@Override
Expand All @@ -234,7 +226,7 @@ public boolean isTimeAtStart(long t) {
if (isCountDirectionDown()) {
return t == getMaximumTime();
} else {
return t == getMinimumTime();
return t == 0;
}
}
}
Expand All @@ -244,7 +236,7 @@ public boolean isTimeAtStart(long t) {
public boolean isTimeAtEnd(long t) {
synchronized (coreLock) {
if (isCountDirectionDown()) {
return t == getMinimumTime();
return t == 0;
} else {
return t == getMaximumTime();
}
Expand Down Expand Up @@ -308,7 +300,6 @@ protected boolean isSyncTime() {

public static UpdateClockTimerTask updateClockTimerTask = new UpdateClockTimerTask();

public static final long DEFAULT_MINIMUM_TIME = 0;
public static final long DEFAULT_MAXIMUM_TIME = 24 * 60 * 60 * 1000; // 1 day for long time to derby
public static final boolean DEFAULT_DIRECTION = false; // up

Expand Down
125 changes: 24 additions & 101 deletions tests/com/carolinarollergirls/scoreboard/core/impl/ClockImplTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,8 @@ public void tearDown() throws Exception {
public void testDefaults() {
assertEquals(0, clock.getNumber());

assertEquals(ClockImpl.DEFAULT_MINIMUM_TIME, clock.getMinimumTime());
assertEquals(ClockImpl.DEFAULT_MAXIMUM_TIME, clock.getMaximumTime());
assertEquals(ClockImpl.DEFAULT_MINIMUM_TIME, clock.getTime());
assertEquals(0, clock.getTime());

assertEquals(ID, clock.getId());
assertEquals(ID, clock.getName());
Expand All @@ -90,7 +89,6 @@ public void testReset() {
clock.reset();

assertFalse(clock.isCountDirectionDown());
assertEquals(ClockImpl.DEFAULT_MINIMUM_TIME, clock.getMinimumTime());
assertEquals(ClockImpl.DEFAULT_MAXIMUM_TIME, clock.getMaximumTime());
assertEquals(0, clock.getNumber());
assertTrue(clock.isTimeAtStart());
Expand All @@ -107,14 +105,14 @@ public void testRestoreSnapshot() {
clock.reset();
assertFalse(clock.isRunning());
assertEquals(0, clock.getNumber());
assertEquals(ClockImpl.DEFAULT_MINIMUM_TIME, clock.getTime());
assertEquals(0, clock.getTime());

//if IDs don't match no restore should be done
snapshot.id = "OTHER";
clock.restoreSnapshot(snapshot);
assertFalse(clock.isRunning());
assertEquals(0, clock.getNumber());
assertEquals(ClockImpl.DEFAULT_MINIMUM_TIME, clock.getTime());
assertEquals(0, clock.getTime());

snapshot.id = ID;
clock.restoreSnapshot(snapshot);
Expand Down Expand Up @@ -238,56 +236,6 @@ public void testChangeNumber() {
assertEquals(2, collectedEvents.size());
}

@Test
public void testSetMinimumTime() {
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.MINIMUM_TIME, listener));
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.MAXIMUM_TIME, listener));
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.TIME, listener));

clock.setMaximumTime(ClockImpl.DEFAULT_MINIMUM_TIME);
collectedEvents.clear();
clock.setMinimumTime(1000);

// validate constraint: max > min
assertEquals(1000, clock.getMinimumTime());
assertEquals(1000, clock.getMaximumTime());
assertEquals(1000, clock.getTime());

assertEquals(3, collectedEvents.size());
ScoreBoardEvent event;
while (!collectedEvents.isEmpty()) {
event = collectedEvents.poll();
assertEquals(1000, (long)event.getValue());
assertEquals(ClockImpl.DEFAULT_MINIMUM_TIME, (long)event.getPreviousValue());
}
}

@Test
public void testSetMinimumTime2() {
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.MINIMUM_TIME, listener));

clock.setMaximumTime(2000);
clock.setMinimumTime(2000);
clock.setMinimumTime(1000);

// validate constraint: reducing min time doesn't reset max or current time
assertEquals(1000, clock.getMinimumTime());
assertEquals(2000, clock.getMaximumTime());
assertEquals(2000, clock.getTime());
}

@Test
public void testSetMinimumTime3() {
clock.setMaximumTime(2000);
clock.setMinimumTime(1000);

// validate constraint: time cannot be less than min time
assertEquals(1000, clock.getMinimumTime());
assertEquals(2000, clock.getMaximumTime());
assertEquals(1000, clock.getTime());

}

@Test
public void testSetMaximumTime() {
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.MAXIMUM_TIME, listener));
Expand All @@ -297,8 +245,7 @@ public void testSetMaximumTime() {

clock.setMaximumTime(5000);

// validate constraint: increase max time doesn't reset min or current time
assertEquals(0, clock.getMinimumTime());
// validate constraint: increase max time doesn't reset current time
assertEquals(5000, clock.getMaximumTime());
assertEquals(0, clock.getTime());

Expand Down Expand Up @@ -326,13 +273,11 @@ public void testSetMaximumTime_countDown() {

@Test
public void testSetMaximumTime2() {
clock.setMinimumTime(2000);
clock.setMaximumTime(1000);
clock.setMaximumTime(-1000);

// validate constraint: cannot set a max that is < min
assertEquals(2000, clock.getMinimumTime());
assertEquals(2000, clock.getMaximumTime());
assertEquals(2000, clock.getTime());
assertEquals(0, clock.getMaximumTime());
assertEquals(0, clock.getTime());
}

@Test
Expand All @@ -344,7 +289,6 @@ public void testChangeMaximumTime() {

clock.changeMaximumTime(2000);

assertEquals(0, clock.getMinimumTime());
assertEquals(3000, clock.getMaximumTime());
assertEquals(0, clock.getTime());
assertEquals(1, collectedEvents.size());
Expand All @@ -353,32 +297,11 @@ public void testChangeMaximumTime() {
assertEquals(1000, (long)event.getPreviousValue());
}

@Test
public void testChangeMinimumTime() {
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.MINIMUM_TIME, listener));

clock.setMaximumTime(5000);
clock.setMinimumTime(5000);
collectedEvents.clear();

clock.changeMinimumTime(2000);

assertEquals(7000, clock.getMinimumTime());
assertEquals(7000, clock.getMaximumTime());
assertEquals(7000, clock.getTime());

assertEquals(1, collectedEvents.size());
ScoreBoardEvent event = collectedEvents.poll();
assertEquals(7000, (long)event.getValue());
assertEquals(5000, (long)event.getPreviousValue());
}

@Test
public void testChangeTime() {
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.TIME, listener));

clock.setMaximumTime(5000);
clock.setMinimumTime(1000);
collectedEvents.clear();

clock.setTime(2000);
Expand All @@ -387,28 +310,29 @@ public void testChangeTime() {
assertEquals(1, collectedEvents.size());
ScoreBoardEvent event = collectedEvents.poll();
assertEquals(2000, (long)event.getValue());
assertEquals(1000, (long)event.getPreviousValue());
assertEquals(0, (long)event.getPreviousValue());

clock.setTime(6000);
assertEquals(5000, clock.getTime());
assertEquals(0, clock.getInvertedTime());
assertEquals(1, collectedEvents.size());
assertEquals(5000, (long)collectedEvents.poll().getValue());

clock.setTime(400);
assertEquals(1000, clock.getTime());
assertEquals(4000, clock.getInvertedTime());
clock.setTime(-600);
assertEquals(0, clock.getTime());
assertEquals(5000, clock.getInvertedTime());
assertEquals(1, collectedEvents.size());
clock.start();
collectedEvents.clear();

clock.timerTick(200);
assertEquals(1200, clock.getTime());
assertEquals(3800, clock.getInvertedTime());
assertEquals(200, clock.getTime());
assertEquals(4800, clock.getInvertedTime());
assertEquals(0, collectedEvents.size());

clock.timerTick(-201);
assertEquals(999, clock.getTime());
assertEquals(-1, clock.getTime());
assertEquals(5001, clock.getInvertedTime());
assertEquals(1, collectedEvents.size());

clock.setCountDirectionDown(true);
Expand All @@ -425,30 +349,30 @@ public void testChangeTime() {

clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.INVERTED_TIME, listener));
clock.changeTime(-5000);
assertEquals(1000, clock.getTime());
assertEquals(4000, clock.getInvertedTime());
assertEquals(0, clock.getTime());
assertEquals(5000, clock.getInvertedTime());
assertEquals(2, collectedEvents.size());
Boolean firstEventInverted;
event = collectedEvents.poll();
if (event.getProperty() == Clock.Value.TIME) {
firstEventInverted = false;
assertEquals(1000, (long)event.getValue());
assertEquals(0, (long)event.getValue());
assertEquals(3200, (long)event.getPreviousValue());
} else {
firstEventInverted = true;
assertEquals(4000, (long)event.getValue());
assertEquals(5000, (long)event.getValue());
assertEquals(1800, (long)event.getPreviousValue());
}
event = collectedEvents.poll();
if (firstEventInverted) {
assertEquals(1000, (long)event.getValue());
assertEquals(0, (long)event.getValue());
assertEquals(3200, (long)event.getPreviousValue());
} else {
assertEquals(4000, (long)event.getValue());
assertEquals(5000, (long)event.getValue());
assertEquals(1800, (long)event.getPreviousValue());
}

clock.changeTime(4100);
clock.changeTime(5100);
assertEquals(5100, clock.getTime());
assertEquals(-100, clock.getInvertedTime());
}
Expand Down Expand Up @@ -526,14 +450,13 @@ public void testIsTimeAtStart_countDown() {
public void testResetTime() {
clock.addScoreBoardListener(new ConditionalScoreBoardListener(clock, Clock.Value.TIME, listener));
clock.setMaximumTime(5000);
clock.setMinimumTime(1000);

clock.setTime(3000);

clock.resetTime();

assertEquals(1000, clock.getTime());
assertEquals(3, collectedEvents.size());
assertEquals(0, clock.getTime());
assertEquals(2, collectedEvents.size());

clock.setTime(3000);
clock.setCountDirectionDown(true);
Expand Down

0 comments on commit 7a42704

Please sign in to comment.