blob: b9ba868e3a4a7147228540cb47feb21b3201d501 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2013 David Green and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* David Green - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.wikitext.parser.css;
import java.util.regex.Pattern;
import junit.framework.TestCase;
/**
* @author David Green
*/
public class SparseCharSequenceTest extends TestCase {
private SparseCharSequence sequence;
private String testData;
@Override
protected void setUp() throws Exception {
super.setUp();
configureTest("one /* two\n\n three */ four\n/* five */");
}
private void configureTest(String testData) {
this.testData = testData;
sequence = new SparseCharSequence(testData, Pattern.compile("/\\*.*?\\*/", Pattern.MULTILINE | Pattern.DOTALL));
}
public void testLength() {
assertEquals(10, sequence.length());
}
public void testCharAt() {
for (int x = 0; x < 4; ++x) {
char c = sequence.charAt(x);
assertEquals(testData.charAt(x), c);
}
for (int x = 4; x < 10; ++x) {
char c = sequence.charAt(x);
assertEquals(testData.charAt(x + 17), c);
}
}
public void testOriginalOffsetOf() {
for (int x = 0; x < sequence.length(); ++x) {
int originalOffset = x;
if (x >= 4) {
originalOffset += 17;
}
assertEquals(originalOffset, sequence.originalOffsetOf(x));
}
}
public void testSubSequence() {
assertEquals("", sequence.subSequence(0, 0).toString());
assertEquals("one ", sequence.subSequence(0, 4).toString());
assertEquals("ne ", sequence.subSequence(1, 5).toString());
assertEquals(" fou", sequence.subSequence(3, 8).toString());
assertEquals(" four", sequence.subSequence(4, 9).toString());
assertEquals("four\n", sequence.subSequence(5, 10).toString());
}
public void testToString() {
assertEquals("one four\n", sequence.toString());
}
public void testCharAtOutOfBounds() {
for (int x = -1; x < (testData.length() + 2); ++x) {
if (x < 0 || x >= sequence.length()) {
try {
sequence.charAt(x);
fail("expected exception on index " + x);
} catch (IndexOutOfBoundsException e) {
// expected
}
}
}
}
}