/******************************************************************************* * Copyright (c) 2015 David Green. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * David Green - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.wikitext.commonmark.internal; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.eclipse.mylyn.wikitext.parser.Locator; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import com.google.common.base.Strings; public class LineTest { @Rule public final ExpectedException thrown = ExpectedException.none(); @Test public void requiresText() { thrown.expect(NullPointerException.class); assertNotNull(new Line(0, 0, null)); } @Test public void requiresNonNegativeLineOffset() { thrown.expect(IllegalArgumentException.class); assertNotNull(new Line(1, -1, "test")); } @Test public void requiresNonNegativeLineNumber() { thrown.expect(IllegalArgumentException.class); assertNotNull(new Line(-1, 1, "test")); } @Test public void isEmpty() { assertEmpty(""); assertEmpty("\t"); assertEmpty(" "); assertNotEmpty("a"); assertNotEmpty(" a"); assertNotEmpty("a "); } @Test public void getText() { assertEquals("abc", new Line(1, 0, "abc").getText()); } @Test public void getLineNumber() { assertEquals(0, new Line(0, 1, "abc").getLineNumber()); assertEquals(1, new Line(1, 1, "abc").getLineNumber()); } @Test public void getOffset() { assertEquals(0, new Line(1, 0, "abc").getOffset()); assertEquals(1, new Line(1, 1, "abc").getOffset()); } @Test public void toStringTest() { assertEquals("Line{lineNumber=1, offset=15, text=1}", new Line(1, 15, "1").toString()); assertEquals("Line{lineNumber=2, offset=0, text=\\t\\r\\nabc}", new Line(2, 0, "\t\r\nabc").toString()); assertEquals("Line{lineNumber=0, offset=0, text=aaaaaaaaaaaaaaaaaaaa...}", new Line(0, 0, Strings.repeat("a", 100)).toString()); } @Test public void segment() { Line segment = new Line(2, 15, "0123456789").segment(3, 5); assertNotNull(segment); assertEquals(2, segment.getLineNumber()); assertEquals(15 + 3, segment.getOffset()); assertEquals("34567", segment.getText()); } @Test public void toLocator() { Line line = new Line(2, 15, "0123456789"); Locator locator = line.toLocator(); assertNotNull(locator); assertEquals(3, locator.getLineNumber()); assertEquals(15, locator.getLineDocumentOffset()); } private void assertNotEmpty(String string) { assertFalse(string, new Line(0, 0, string).isEmpty()); } private void assertEmpty(String string) { assertTrue(string, new Line(0, 0, string).isEmpty()); } }