/******************************************************************************* * Copyright (c) 2000, 2007 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.text.tests; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.jface.text.BadPositionCategoryException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.Position; import org.eclipse.wst.sse.core.internal.ltk.modelhandler.IModelHandler; import org.eclipse.wst.sse.core.internal.modelhandler.ModelHandlerRegistry; import org.eclipse.wst.sse.core.internal.text.BasicStructuredDocument; public class PositionUpdatingCornerCasesTest extends TestCase { private IDocument fDocument; public PositionUpdatingCornerCasesTest(String name) { super(name); } protected void checkPositions(Position[] expected) throws BadPositionCategoryException { Position[] actual= fDocument.getPositions(IDocument.DEFAULT_CATEGORY); assertTrue("invalid number of positions", actual.length == expected.length); for (int i= 0; i < expected.length; i++) { assertEquals(print(actual[i]) + " != " + print(expected[i]), expected[i], actual[i]); } } protected String print(Position p) { return "[" + p.getOffset() + "," + p.getLength() + "]"; } protected void setUp() throws Exception { // fDocument= new Document("x-x-x-x-x-x-x-x-x-x-x"); fDocument= createDocument("x-x-x-x-x-x-x-x-x-x-x"); fDocument.addPosition(new Position(0, 0)); fDocument.addPosition(new Position(0, 1)); fDocument.addPosition(new Position(5, 0)); fDocument.addPosition(new Position(5, 3)); } private IDocument createDocument(String contents) { IModelHandler handler = ModelHandlerRegistry.getInstance().getHandlerForContentTypeId("org.eclipse.core.runtime.xml"); BasicStructuredDocument document = (BasicStructuredDocument) handler.getDocumentLoader().createNewStructuredDocument(); document.set(contents); return document; } public static Test suite() { return new TestSuite(PositionUpdatingCornerCasesTest.class); } protected void tearDown() { fDocument= null; } public void testInsert() throws Exception { fDocument.replace(0, 0, "yy"); Position[] positions= new Position[] { new Position( 2, 1), new Position( 2, 0), new Position( 7, 3), new Position( 7, 0) }; checkPositions(positions); } }