package com.intellij.codeInsight.editorActions.enter; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * @author Denis Zhdanov * @since 01/20/2011 */ public class EnterAfterJavadocTagHandlerTest { @Test public void textWithoutAsterisk() { String text = " <start>"; EnterAfterJavadocTagHandler.Context context = parse(text); assertEmpty(context); } @Test public void startTagOnly() { String text = " * <start>"; // Cursor after single tag EnterAfterJavadocTagHandler.Context context = parse(text); assertEquals(text.indexOf(">"), context.startTagEndOffset); assertTrue(context.endTagStartOffset < 0); // Cursor before context = parse(text, text.length() - 1); assertEmpty(context); } @Test public void nestedTags() { String text = " * <outer><inner> sdf </inner></outer>"; // Cursor before <outer>. EnterAfterJavadocTagHandler.Context context = parse(text, 0); assertEmpty(context); // Cursor at <outer>. int offset = text.indexOf("<outer>") + 2; context = parse(text, offset); assertEmpty(context); // Cursor between <outer> and <inner>. offset = text.indexOf("<inner>"); context = parse(text, offset); assertEquals(offset - 1, context.startTagEndOffset); assertEquals(text.indexOf("</outer>"), context.endTagStartOffset); // Cursor at <inner>. offset += 2; context = parse(text, offset); assertEmpty(context); // Cursor inside <inner>. offset = text.indexOf("sdf"); context = parse(text, offset); assertEquals(text.indexOf("<inner>") + "<inner>".length() - 1, context.startTagEndOffset); assertEquals(text.indexOf("</inner>"), context.endTagStartOffset); // Cursor at </inner>. offset = text.indexOf("</inner>") + 2; context = parse(text, offset); assertEmpty(context); // Cursor between </inner> and </outer>. offset = text.indexOf("</outer>"); context = parse(text, offset); assertEquals(text.indexOf("<inner>") - 1, context.startTagEndOffset); assertEquals(offset, context.endTagStartOffset); // Cursor at </outer>. offset += 2; context = parse(text, offset); assertEmpty(context); // Cursor at end. context = parse(text); assertEmpty(context); } @Test public void emptyTag() { EnterAfterJavadocTagHandler.Context context = parse("* <p/>"); assertEmpty(context); } private static EnterAfterJavadocTagHandler.Context parse(String text) { return parse(text, text.length()); } private static EnterAfterJavadocTagHandler.Context parse(String text, int offset) { return EnterAfterJavadocTagHandler.parse(text, 0, text.length(), offset); } private static void assertEmpty(EnterAfterJavadocTagHandler.Context context) { assertTrue(context.startTagEndOffset < 0); assertTrue(context.endTagStartOffset < 0); } }