1 /*******************************************************************************
2  * Copyright (c) 2000, 2014 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.text.tests.link;
15 
16 import static org.junit.Assert.assertEquals;
17 import static org.junit.Assert.assertFalse;
18 import static org.junit.Assert.assertSame;
19 import static org.junit.Assert.assertTrue;
20 
21 import org.junit.Test;
22 
23 import org.eclipse.jface.text.BadLocationException;
24 import org.eclipse.jface.text.Document;
25 import org.eclipse.jface.text.IDocument;
26 import org.eclipse.jface.text.link.LinkedModeModel;
27 import org.eclipse.jface.text.link.LinkedPosition;
28 import org.eclipse.jface.text.link.LinkedPositionGroup;
29 
30 
31 public class LinkedPositionGroupTest {
32 
33 	@Test
testIsEmpty()34 	public void testIsEmpty() {
35 		LinkedPositionGroup group= new LinkedPositionGroup();
36 		assertTrue(group.isEmpty());
37 	}
38 
39 	@Test
testIsNotEmtpy()40 	public void testIsNotEmtpy() throws BadLocationException {
41 		LinkedPositionGroup group= new LinkedPositionGroup();
42 		group.addPosition(new LinkedPosition(new Document(), 0, 0));
43 		assertFalse(group.isEmpty());
44 	}
45 
46 	@Test
testGetPositions()47 	public void testGetPositions() throws BadLocationException {
48 		LinkedPositionGroup group= new LinkedPositionGroup();
49 		group.addPosition(new LinkedPosition(new Document(), 0, 0));
50 		group.addPosition(new LinkedPosition(new Document(), 0, 0));
51 		assertEquals(2, group.getPositions().length);
52 	}
53 
54 	@Test
testAddPosition()55 	public void testAddPosition() throws BadLocationException {
56 		LinkedPositionGroup group= new LinkedPositionGroup();
57 		LinkedPosition p= new LinkedPosition(new Document(), 0, 0);
58 		group.addPosition(p);
59 		assertSame(p, group.getPositions()[0]);
60 	}
61 
62 	@Test
testAddIllegalState()63 	public void testAddIllegalState() throws BadLocationException {
64 		LinkedPositionGroup group= new LinkedPositionGroup();
65 		LinkedModeModel env= new LinkedModeModel();
66 		env.addGroup(group);
67 
68 		LinkedPosition p= new LinkedPosition(new Document(), 0, 0);
69 		try {
70 			group.addPosition(p);
71 		} catch (IllegalStateException e) {
72 			return;
73 		}
74 
75 		assertFalse(true);
76 	}
77 
78 	@Test
testAddBadLocation()79 	public void testAddBadLocation() throws BadLocationException {
80 		LinkedPositionGroup group= new LinkedPositionGroup();
81 		IDocument doc= new Document(GARTEN);
82 		group.addPosition(new LinkedPosition(doc, 1, 9));
83 		try {
84 			group.addPosition(new LinkedPosition(doc, 3, 9));
85 		} catch (BadLocationException e) {
86 			return;
87 		}
88 
89 		assertFalse(true);
90 	}
91 
92 	@Test
testAddEqualContent()93 	public void testAddEqualContent() {
94 		LinkedPositionGroup group= new LinkedPositionGroup();
95 		IDocument doc= new Document(GARTEN);
96 		try {
97 			group.addPosition(new LinkedPosition(doc, 1, 9));
98 			group.addPosition(new LinkedPosition(doc, 68, 9));
99 		} catch (BadLocationException e) {
100 			assertFalse(true);
101 		}
102 	}
103 
104 	@Test
testAddNotEqualContent()105 	public void testAddNotEqualContent() {
106 		LinkedPositionGroup group= new LinkedPositionGroup();
107 		IDocument doc= new Document(GARTEN);
108 		try {
109 			group.addPosition(new LinkedPosition(doc, GARTEN.indexOf("das"), 3));
110 			group.addPosition(new LinkedPosition(doc, GARTEN.indexOf("Das"), 3));
111 		} catch (BadLocationException e) {
112 			assertFalse(true);
113 		}
114 	}
115 
116 	private static final String GARTEN=
117 		"	MARGARETE:\n" +
118 		"	Versprich mir, Heinrich!\n" +
119 		"	 \n" +
120 		"	FAUST:\n" +
121 		"	Was ich kann!\n" +
122 		"	 \n" +
123 		"	MARGARETE:\n" +
124 		"	Nun sag, wie hast du\'s mit der Religion?\n" +
125 		"	Du bist ein herzlich guter Mann,\n" +
126 		"	Allein ich glaub, du haeltst nicht viel davon.\n" +
127 		"	 \n" +
128 		"	FAUST:\n" +
129 		"	Lass das, mein Kind! Du fuehlst, ich bin dir gut;\n" +
130 		"	Fuer meine Lieben liess\' ich Leib und Blut,\n" +
131 		"	Will niemand sein Gefuehl und seine Kirche rauben.\n" +
132 		"	 \n" +
133 		"	MARGARETE:\n" +
134 		"	Das ist nicht recht, man muss dran glauben.\n" +
135 		"	 \n" +
136 		"	FAUST:\n" +
137 		"	Muss man?\n" +
138 		"	 \n" +
139 		"	MARGARETE:\n" +
140 		"	Ach! wenn ich etwas auf dich konnte! Du ehrst auch nicht die heil\'gen Sakramente.\n" +
141 		"	 \n" +
142 		"	FAUST:\n" +
143 		"	Ich ehre sie.\n" +
144 		"	 \n" +
145 		"	MARGARETE:\n" +
146 		"	Doch ohne Verlangen. Zur Messe, zur Beichte bist du lange nicht gegangen.\n" +
147 		"	Glaubst du an Gott?\n" +
148 		"	 \n" +
149 		"	FAUST:\n" +
150 		"	Mein Liebchen, wer darf sagen: Ich glaub an Gott?\n" +
151 		"	Magst Priester oder Weise fragen,\n" +
152 		"	Und ihre Antwort scheint nur Spott\n" +
153 		"	Ueber den Frager zu sein.\n" +
154 		"	 \n" +
155 		"	MARGARETE:\n" +
156 		"	So glaubst du nicht?\n" +
157 		"	 \n" +
158 		"	FAUST:\n" +
159 		"	Misshoer mich nicht, du holdes Angesicht!\n" +
160 		"	Wer darf ihn nennen?\n" +
161 		"	Und wer bekennen:\n" +
162 		"	\"Ich glaub ihn!\"?\n" +
163 		"	Wer empfinden,\n" +
164 		"	Und sich unterwinden\n" +
165 		"	Zu sagen: \"Ich glaub ihn nicht!\"?\n" +
166 		"	Der Allumfasser,\n" +
167 		"	Der Allerhalter,\n" +
168 		"	Fasst und erhaelt er nicht\n" +
169 		"	Dich, mich, sich selbst?\n" +
170 		"	Woelbt sich der Himmel nicht da droben?\n" +
171 		"	Liegt die Erde nicht hier unten fest?\n" +
172 		"	Und steigen freundlich blickend\n" +
173 		"	Ewige Sterne nicht herauf?\n" +
174 		"	Schau ich nicht Aug in Auge dir,\n" +
175 		"	Und draengt nicht alles\n" +
176 		"	Nach Haupt und Herzen dir,\n" +
177 		"	Und webt in ewigem Geheimnis\n" +
178 		"	Unsichtbar sichtbar neben dir?\n" +
179 		"	Erfuell davon dein Herz, so gross es ist,\n" +
180 		"	Und wenn du ganz in dem Gefuehle selig bist,\n" +
181 		"	Nenn es dann, wie du willst,\n" +
182 		"	Nenn\'s Glueck! Herz! Liebe! Gott\n" +
183 		"	Ich habe keinen Namen\n" +
184 		"	Dafuer! Gefuehl ist alles;\n" +
185 		"	Name ist Schall und Rauch,\n" +
186 		"	Umnebelnd Himmelsglut.\n";
187 }
188