package com.codeaffine.extras.workingset.internal; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.eclipse.core.resources.IProject; import org.junit.Before; import org.junit.Test; import com.codeaffine.extras.workingset.internal.ProjectPatternMatcher; public class ProjectPatternMatcherTest { private IProject project; @Before public void setUp() { project = mock( IProject.class ); } @Test public void testMatchesWithEmptyPattern() { setProjectName( "com.codeaffine.foo" ); boolean matches = matchesProjectName( "" ); assertThat( matches ).isFalse(); } @Test public void testMatchesWithMatchingPattern() { setProjectName( "com.codeaffine.foo" ); boolean matches = matchesProjectName( "com.*" ); assertThat( matches ).isTrue(); } @Test public void testMatchesWithNonMatchingPattern() { setProjectName( "com.codeaffine.foo" ); boolean matches = matchesProjectName( "bar.*" ); assertThat( matches ).isFalse(); } @Test public void testMatchesWithInvalidPattern() { setProjectName( "com.codeaffine.foo" ); boolean matches = matchesProjectName( "*code" ); assertThat( matches ).isFalse(); } @Test public void testIsPatternValidWithInvalidPattern() { ProjectPatternMatcher patternMatcher = new ProjectPatternMatcher( "*code" ); boolean validPattern = patternMatcher.isPatternValid(); assertThat( validPattern ).isFalse(); } @Test public void testIsPatternValidWithValidPattern() { ProjectPatternMatcher patternMatcher = new ProjectPatternMatcher( ".*" ); boolean validPattern = patternMatcher.isPatternValid(); assertThat( validPattern ).isTrue(); } private boolean matchesProjectName( String pattern ) { return new ProjectPatternMatcher( pattern ).matches( project ); } private void setProjectName( String name ) { when( project.getName() ).thenReturn( name ); } }