Bug 563464 - Add test suite for DefaultTextDoubleClickStrategy

Add initial set of tests regarding underscore handling in typical
programming language kind of words.

Change-Id: I25eb171c0bcf7af1a02b0aa70b0965d7fc2cd39d
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultTextDoubleClickStrategyTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultTextDoubleClickStrategyTest.java
new file mode 100644
index 0000000..94e9966
--- /dev/null
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultTextDoubleClickStrategyTest.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2020 SAP SE and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *     SAP SE - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jface.text.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import org.eclipse.jface.text.DefaultTextDoubleClickStrategy;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+
+public class DefaultTextDoubleClickStrategyTest {
+
+	@Test
+	public void testUnderscoreHandling() throws Exception {
+		String content= "foo_bar foo__bar foo_1  foo1_bar foo_bar__baz___1 __aaaa a_aa___a   _asdf_  _____1";
+		IDocument document= new Document(content);
+		TestSpecificDefaultTextDoubleClickStrategy doubleClickStrategy= new TestSpecificDefaultTextDoubleClickStrategy();
+
+		for (String word : content.split(" ")) {
+			int offsetWordStart= content.indexOf(word);
+			for (int offset= offsetWordStart; offset < offsetWordStart + word.length(); offset++) {
+				IRegion selection= doubleClickStrategy.findWord(document, offset);
+				String actualWord= document.get(selection.getOffset(), selection.getLength());
+
+				assertEquals(word, actualWord);
+			}
+		}
+	}
+
+	private static final class TestSpecificDefaultTextDoubleClickStrategy extends DefaultTextDoubleClickStrategy {
+
+		@Override
+		public IRegion findWord(IDocument document, int offset) { // make visible
+			return super.findWord(document, offset);
+		}
+	}
+}
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java
index 08104d5..05f39a7 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/JFaceTextTestSuite.java
@@ -71,6 +71,8 @@
 		CodeMiningProjectionViewerTest.class,
 
 		TabsToSpacesConverterTest.class,
+
+		DefaultTextDoubleClickStrategyTest.class,
 })
 public class JFaceTextTestSuite {
 	// see @SuiteClasses