blob: 802189ddff837da68fe903da18f7ff22b98862f1 [file] [log] [blame]
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij;
import com.intellij.openapi.diagnostic.Logger;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Collections;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class TestClassesFilterTest {
private static final Logger LOG = Logger.getInstance("#com.intellij.TestClassesFilterTest");
@Test
public void test() throws Exception {
LOG.info("test");
String filterText = "[Group1]\n" +
"com.intellij.package1.*\n" +
"com.intellij.package2.ExcludedTest\n" +
"com.intellij.package3.*package4\n" +
"[Group2]\n" +
"com.intellij.package5.*\n" +
"com.intellij.package6.ExcludedTest\n" +
"com.intellij.package7.*package8";
TestClassesFilter classesFilter = GroupBasedTestClassFilter.createOn(getReader(filterText), Collections.singletonList("Group1"));
assertTrue(classesFilter.matches("com.intellij.package1.Test"));
assertTrue(classesFilter.matches("com.intellij.package1.Test2"));
assertFalse(classesFilter.matches("com.intellij.package2.Test"));
assertTrue(classesFilter.matches("com.intellij.package2.ExcludedTest"));
assertTrue(classesFilter.matches("com.intellij.package3.package4"));
assertTrue(classesFilter.matches("com.intellij.package3.package5.package4"));
assertFalse(classesFilter.matches("com.intellij.package3"));
assertFalse(classesFilter.matches("com.intellij"));
assertFalse(classesFilter.matches("com.intellij.Test"));
assertFalse(classesFilter.matches("com.intellij.package5.Test"));
assertFalse(classesFilter.matches("com.intellij.package5.Test2"));
assertFalse(classesFilter.matches("com.intellij.package6.Test"));
assertFalse(classesFilter.matches("com.intellij.package6.ExcludedTest"));
assertFalse(classesFilter.matches("com.intellij.package7.package8"));
assertFalse(classesFilter.matches("com.intellij.package7.package5.package8"));
assertFalse(classesFilter.matches("com.intellij.package7"));
classesFilter = GroupBasedTestClassFilter.createOn(getReader(filterText), Collections.singletonList("Group2"));
assertFalse(classesFilter.matches("com.intellij.package1.Test"));
assertFalse(classesFilter.matches("com.intellij.package1.Test2"));
assertFalse(classesFilter.matches("com.intellij.package2.Test"));
assertFalse(classesFilter.matches("com.intellij.package2.ExcludedTest"));
assertFalse(classesFilter.matches("com.intellij.package3.package4"));
assertFalse(classesFilter.matches("com.intellij.package3.package5.package4"));
assertFalse(classesFilter.matches("com.intellij.package3"));
assertFalse(classesFilter.matches("com.intellij"));
assertFalse(classesFilter.matches("com.intellij.Test"));
assertTrue(classesFilter.matches("com.intellij.package5.Test"));
assertTrue(classesFilter.matches("com.intellij.package5.Test2"));
assertFalse(classesFilter.matches("com.intellij.package6.Test"));
assertTrue(classesFilter.matches("com.intellij.package6.ExcludedTest"));
assertTrue(classesFilter.matches("com.intellij.package7.package8"));
assertTrue(classesFilter.matches("com.intellij.package7.package5.package8"));
assertFalse(classesFilter.matches("com.intellij.package7"));
classesFilter = GroupBasedTestClassFilter.createOn(getReader(filterText),
Collections.singletonList(GroupBasedTestClassFilter.ALL_EXCLUDE_DEFINED));
checkForAllExcludedDefinedGroup(classesFilter);
classesFilter = GroupBasedTestClassFilter.createOn(getReader(filterText), Collections.<String>emptyList());
checkForAllExcludedDefinedGroup(classesFilter);
classesFilter = GroupBasedTestClassFilter.createOn(getReader(filterText), Arrays.asList("Group1", "Group2"));
assertTrue(classesFilter.matches("com.intellij.package1.Test"));
assertTrue(classesFilter.matches("com.intellij.package5.Test"));
assertFalse(classesFilter.matches("com.intellij.package4.Test"));
classesFilter = GroupBasedTestClassFilter.createOn(getReader(filterText), Arrays.asList("Group1", GroupBasedTestClassFilter.ALL_EXCLUDE_DEFINED));
assertTrue(classesFilter.matches("com.intellij.package1.Test"));
assertFalse(classesFilter.matches("com.intellij.package5.Test"));
assertTrue(classesFilter.matches("com.intellij.package4.Test"));
}
private static InputStreamReader getReader(String filterText) throws UnsupportedEncodingException {
return new InputStreamReader(new ByteArrayInputStream(filterText.getBytes("UTF-8")));
}
private static void checkForAllExcludedDefinedGroup(TestClassesFilter classesFilter) {
assertFalse(classesFilter.matches("com.intellij.package1.Test"));
assertFalse(classesFilter.matches("com.intellij.package1.Test2"));
assertTrue(classesFilter.matches("com.intellij.package2.Test"));
assertFalse(classesFilter.matches("com.intellij.package2.ExcludedTest"));
assertFalse(classesFilter.matches("com.intellij.package3.package4"));
assertFalse(classesFilter.matches("com.intellij.package3.package5.package4"));
assertTrue(classesFilter.matches("com.intellij.package3"));
assertTrue(classesFilter.matches("com.intellij"));
assertTrue(classesFilter.matches("com.intellij.Test"));
assertFalse(classesFilter.matches("com.intellij.package5.Test"));
assertFalse(classesFilter.matches("com.intellij.package5.Test2"));
assertTrue(classesFilter.matches("com.intellij.package6.Test"));
assertFalse(classesFilter.matches("com.intellij.package6.ExcludedTest"));
assertFalse(classesFilter.matches("com.intellij.package7.package8"));
assertFalse(classesFilter.matches("com.intellij.package7.package5.package8"));
assertTrue(classesFilter.matches("com.intellij.package7"));
}
}