package file; import static org.junit.Assert.assertTrue; import java.util.Objects; import org.junit.*; public class FilePositionTrackerTest { public static final String FILE_NAME = "testFile"; private FilePositionTracker trackerUnderTest; private FilePosition createFilePosition(int lineNumber, int columnNumber) { FilePosition position = new FilePosition(FILE_NAME); position.setLineNumber(lineNumber); position.setColumnNumber(columnNumber); return position; } private void assertTrackerPositionEquals(FilePosition expectedPosition) { assertTrue(arePositionsEqual(expectedPosition, trackerUnderTest.getCurrentPosition())); } private boolean arePositionsEqual(FilePosition position1, FilePosition position2) { return Objects.equals(position1.getFileName(), position2.getFileName()) && Objects.equals(position1.getLineNumber(), position2.getLineNumber()) && Objects.equals(position1.getColumnNumber(), position2.getColumnNumber()); } @Before public void setUp() { trackerUnderTest = new FilePositionTracker(FILE_NAME); } @Test public void noMovement_ReturnsInitialPosition() { assertTrackerPositionEquals(createFilePosition(1, 0)); } @Test public void advanceOneColumn_ReturnsCorrectPosition() { trackerUnderTest.incrementColumn(); assertTrackerPositionEquals(createFilePosition(1, 1)); } @Test public void advanceOneLine_ReturnsCorrectPosition() { trackerUnderTest.incrementLine(); assertTrackerPositionEquals(createFilePosition(2, 0)); } @Test public void advanceOneLine_ResetsColumn() { trackerUnderTest.incrementColumn(); trackerUnderTest.incrementLine(); assertTrackerPositionEquals(createFilePosition(2, 0)); } }