/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.testframework; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyList; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import org.junit.Test; import net.sourceforge.pmd.Report; import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; public class RuleTstTest { @Test public void shouldCallStartAndEnd() { RuleTst ruleTester = new RuleTst() { }; LanguageVersion languageVersion = LanguageRegistry.findLanguageByTerseName("dummy").getDefaultVersion(); Report report = new Report(); Rule rule = mock(Rule.class); when(rule.getLanguage()).thenReturn(languageVersion.getLanguage()); when(rule.getName()).thenReturn("test rule"); ruleTester.runTestFromString("the code", rule, report, languageVersion, false); verify(rule).start(any(RuleContext.class)); verify(rule).end(any(RuleContext.class)); verify(rule, times(4)).getLanguage(); verify(rule).usesDFA(); verify(rule).usesTypeResolution(); verify(rule, times(2)).usesRuleChain(); verify(rule).getMinimumLanguageVersion(); verify(rule).getMaximumLanguageVersion(); verify(rule).apply(anyList(), any(RuleContext.class)); verify(rule, times(2)).getName(); verify(rule).getPropertiesByPropertyDescriptor(); verifyNoMoreInteractions(rule); } }