Add change manager unmarking
All checks were successful
zdm/undo-redo/pipeline/head This commit looks good

This commit is contained in:
2021-12-23 10:00:48 +02:00
parent fa5c2419bf
commit 0fc3577750
5 changed files with 55 additions and 21 deletions

View File

@ -55,11 +55,18 @@ public interface ChangeManager<C extends Change> {
*/
void mark();
/**
* Resets the marked index so that no change is marked.
*
* @since 0.0.1
*/
void unmark();
/**
* @return whether the current change is marked
* @since 0.0.1
*/
boolean isAtMarkedIndex();
boolean isAtMarkedChange();
/**
* @return whether a change is present that can be undone

View File

@ -53,7 +53,12 @@ public final class UnlimitedChangeManager<C extends Change> implements ChangeMan
}
@Override
public boolean isAtMarkedIndex() {
public void unmark() {
markedIndex = -1;
}
@Override
public boolean isAtMarkedChange() {
return markedIndex == index;
}

View File

@ -108,12 +108,28 @@ class ChangeManagerTest {
@Test
@Order(60)
void testMark() {
assertTrue(manager.isAtMarkedIndex());
assertTrue(manager.isAtMarkedChange());
manager.addChange(change);
assertFalse(manager.isAtMarkedIndex());
assertFalse(manager.isAtMarkedChange());
manager.mark();
assertTrue(manager.isAtMarkedIndex());
assertTrue(manager.isAtMarkedChange());
manager.undo();
assertFalse(manager.isAtMarkedIndex());
assertFalse(manager.isAtMarkedChange());
}
/**
* Tests unmarking a change.
*
* @since 0.0.1
*/
@Test
@Order(70)
void testUnmark() {
manager.addChange(change);
manager.mark();
manager.unmark();
assertFalse(manager.isAtMarkedChange());
manager.undo();
assertTrue(manager.isAtMarkedChange());
}
}