summaryrefslogtreecommitdiff
path: root/platform/structuralsearch/testSource/com/intellij/structuralsearch/impl/matcher/compiler/StringToConstraintsTransformerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/structuralsearch/testSource/com/intellij/structuralsearch/impl/matcher/compiler/StringToConstraintsTransformerTest.java')
-rw-r--r--platform/structuralsearch/testSource/com/intellij/structuralsearch/impl/matcher/compiler/StringToConstraintsTransformerTest.java128
1 files changed, 128 insertions, 0 deletions
diff --git a/platform/structuralsearch/testSource/com/intellij/structuralsearch/impl/matcher/compiler/StringToConstraintsTransformerTest.java b/platform/structuralsearch/testSource/com/intellij/structuralsearch/impl/matcher/compiler/StringToConstraintsTransformerTest.java
new file mode 100644
index 000000000000..dc1cbc5802f2
--- /dev/null
+++ b/platform/structuralsearch/testSource/com/intellij/structuralsearch/impl/matcher/compiler/StringToConstraintsTransformerTest.java
@@ -0,0 +1,128 @@
+package com.intellij.structuralsearch.impl.matcher.compiler;
+
+import com.intellij.structuralsearch.MalformedPatternException;
+import com.intellij.structuralsearch.MatchOptions;
+import com.intellij.structuralsearch.MatchVariableConstraint;
+import com.intellij.structuralsearch.UnsupportedPatternException;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Bas Leijdekkers
+ */
+public class StringToConstraintsTransformerTest {
+
+ private MatchOptions myOptions;
+
+ @Before
+ public void setUp() throws Exception {
+ myOptions = new MatchOptions();
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testCharacterExpectedAfterQuote() {
+ test("' asdf");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testUnexpectedEndOfPattern() {
+ test("'_a{");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testDigitExpected() {
+ test("'a{a");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testDigitExpected2() {
+ test("'a{1,a}");
+ }
+
+ @Test
+ public void testZeroOccurs() {
+ test("'a{,}");
+ final MatchVariableConstraint constraint = myOptions.getVariableConstraint("a");
+ assertEquals(0, constraint.getMinCount());
+ assertEquals(0, constraint.getMaxCount());
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testOverflow() {
+ test("'a{2147483648}");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testMissingBrace() {
+ test("'a{1,3");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testNoOptions() {
+ test("'a:");
+ }
+
+ @Test
+ public void testColon() {
+ test("for('_t 'a : '_b) {}");
+ assertEquals("for($t$ $a$ : $b$) {}", myOptions.getSearchPattern());
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testNoOptions2() {
+ test("'a:+");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testUnclosedCondition() {
+ test("'a:[");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testClosedCondition() {
+ test("'a:[]");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testEmptyNegated() {
+ test("'a:[!]");
+ }
+
+ @Test(expected = UnsupportedPatternException.class)
+ public void testCondition() {
+ test("'a:[aap()]");
+ }
+
+ @Test(expected = UnsupportedPatternException.class)
+ public void testIncompleteCondition() {
+ test("'a:[regex(]");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testIncompleteCondition2() {
+ test("'a:[regex()]");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testIncompleteMultipleCondition() {
+ test("'a:[regex( a ) &&]");
+ }
+
+ @Test(expected = MalformedPatternException.class)
+ public void testInvalidRegularExpression() {
+ test("'a:x!(");
+ }
+
+ @Test
+ public void testMethodReference() {
+ test("'_a::'_b");
+ assertEquals("$a$::$b$", myOptions.getSearchPattern());
+ }
+
+ private void test(String pattern) {
+ myOptions.setSearchPattern(pattern);
+ StringToConstraintsTransformer.transformOldPattern(myOptions);
+ }
+}