This repository has been archived on 2022-02-11. You can view files and clone it, but cannot push or open issues or pull requests.
undo-redo/core/src/test/java/dev/kske/undoredo/ChangeManagerTest.java

105 lines
2.0 KiB
Java
Raw Normal View History

2021-12-10 18:39:57 +01:00
package dev.kske.undoredo;
2021-12-11 13:51:12 +01:00
import static org.junit.jupiter.api.Assertions.*;
2021-12-10 18:39:57 +01:00
2021-12-11 13:51:12 +01:00
import org.junit.jupiter.api.*;
2021-12-10 18:39:57 +01:00
/**
* @author Kai S. K. Engelbart
* @since 0.0.1
*/
class ChangeManagerTest {
2021-12-11 13:51:12 +01:00
ChangeManager<IntChange> manager;
IntWrapper wrapper;
IntChange change;
2021-12-10 18:39:57 +01:00
2021-12-11 13:51:12 +01:00
@BeforeEach
void prepareChangeManager() {
manager = new UnlimitedChangeManager<>();
2021-12-11 13:51:12 +01:00
wrapper = new IntWrapper();
change = new IntChange(wrapper, 1);
2021-12-10 18:39:57 +01:00
}
/**
2021-12-11 13:51:12 +01:00
* Tests adding a change.
*
* @since 0.0.1
2021-12-10 18:39:57 +01:00
*/
@Test
2021-12-11 13:51:12 +01:00
@Order(1)
void testAddChange() {
assertSame(0, wrapper.value);
manager.addChange(change);
assertSame(1, wrapper.value);
2021-12-10 18:39:57 +01:00
}
2021-12-11 13:51:12 +01:00
2021-12-10 18:39:57 +01:00
/**
2021-12-11 13:51:12 +01:00
* Tests the consistency of the change list.
*
* @since 0.0.1
2021-12-10 18:39:57 +01:00
*/
@Test
2021-12-11 13:51:12 +01:00
@Order(2)
void testGetChanges() {
assertTrue(manager.getChanges().isEmpty());
manager.addChange(change);
assertSame(1, manager.getChanges().size());
assertEquals(change, manager.getChanges().get(0));
2021-12-10 18:39:57 +01:00
}
/**
2021-12-11 13:51:12 +01:00
* Test undoing a change.
*
* @since 0.0.1
2021-12-10 18:39:57 +01:00
*/
@Test
2021-12-11 13:51:12 +01:00
@Order(2)
void testUndo() {
assertFalse(manager.isUndoAvailable());
assertFalse(manager.undo());
manager.addChange(change);
assertTrue(manager.isUndoAvailable());
assertTrue(manager.undo());
assertFalse(manager.isUndoAvailable());
assertFalse(manager.undo());
2021-12-10 18:39:57 +01:00
}
/**
2021-12-11 13:51:12 +01:00
* Tests redoing a change.
*
* @since 0.0.1
2021-12-10 18:39:57 +01:00
*/
@Test
2021-12-11 13:51:12 +01:00
@Order(4)
void testRedo() {
assertFalse(manager.isRedoAvailable());
assertFalse(manager.redo());
manager.addChange(change);
assertFalse(manager.isRedoAvailable());
assertFalse(manager.redo());
manager.undo();
assertTrue(manager.isRedoAvailable());
assertTrue(manager.redo());
assertFalse(manager.isRedoAvailable());
assertFalse(manager.redo());
2021-12-10 18:39:57 +01:00
}
/**
2021-12-11 13:51:12 +01:00
* Tests marking a change.
*
* @since 0.0.1
2021-12-10 18:39:57 +01:00
*/
@Test
2021-12-11 13:51:12 +01:00
@Order(5)
void testMark() {
assertTrue(manager.isAtMarkedIndex());
manager.addChange(change);
assertFalse(manager.isAtMarkedIndex());
manager.mark();
assertTrue(manager.isAtMarkedIndex());
manager.undo();
assertFalse(manager.isAtMarkedIndex());
2021-12-10 18:39:57 +01:00
}
}