blob: e482c8f8008afc153e32f668afbdd20ec8604ecf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2017 xored software, Inc. and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.core.tests.utils;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import org.eclipse.dltk.core.builder.ISourceLineTracker;
import org.eclipse.dltk.utils.TextUtils;
import org.junit.Test;
public class SourceLineTrackerTests {
@Test
public void testNotTerminatedSingleLine() {
String input = "1234567890";
ISourceLineTracker tracker = TextUtils.createLineTracker(input);
assertEquals(1, tracker.getNumberOfLines());
assertEquals(input.length(), tracker.getLength());
assertNull(tracker.getLineDelimiter(0));
assertEquals(0, tracker.getLineOffset(0));
assertEquals(input.length(), tracker.getLineLength(0));
}
@Test
public void testTerminatedSingleLine() {
String input = "1234567890\r\n";
ISourceLineTracker tracker = TextUtils.createLineTracker(input);
assertEquals(1, tracker.getNumberOfLines());
assertEquals(input.length(), tracker.getLength());
assertEquals("\r\n", tracker.getLineDelimiter(0));
assertEquals(0, tracker.getLineOffset(0));
assertEquals(input.length(), tracker.getLineLength(0));
}
@Test
public void testTwoLines() {
final String line0 = "1234567890\r\n";
final String line1 = "1234567890";
final String input = line0 + line1;
ISourceLineTracker tracker = TextUtils.createLineTracker(input);
assertEquals(2, tracker.getNumberOfLines());
assertEquals(input.length(), tracker.getLength());
assertEquals("\r\n", tracker.getLineDelimiter(0));
assertNull(tracker.getLineDelimiter(1));
assertEquals(0, tracker.getLineOffset(0));
assertEquals(line0.length(), tracker.getLineOffset(1));
assertEquals(line0.length(), tracker.getLineLength(0));
assertEquals(line1.length(), tracker.getLineLength(1));
}
@Test
public void testLineOffsetLastLineNoLineDelimiter() {
final ISourceLineTracker lineTracker = TextUtils
.createLineTracker("123" + "\n" + "456");
assertEquals(2, lineTracker.getNumberOfLines());
assertNotNull(lineTracker.getLineDelimiter(0));
assertNull(lineTracker.getLineDelimiter(1));
assertEquals(ISourceLineTracker.WRONG_OFFSET, lineTracker
.getLineOffset(2));
}
@Test
public void testLineOffsetLastLineWithLineDelimiter() {
final ISourceLineTracker lineTracker = TextUtils
.createLineTracker("123" + "\n" + "456" + "\n");
assertEquals(2, lineTracker.getNumberOfLines());
assertNotNull(lineTracker.getLineDelimiter(0));
assertNotNull(lineTracker.getLineDelimiter(1));
assertEquals(lineTracker.getLength(), lineTracker.getLineOffset(2));
}
}