| /******************************************************************************* |
| * 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)); |
| } |
| |
| } |