package com.navercorp.pinpoint.bootstrap.instrument; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.junit.Test; public class ClassFiltersTest { @Test public void name() { InstrumentClass clazz = mock(InstrumentClass.class); when(clazz.getName()).thenReturn("com.navercorp.mock.TestObjectNestedClass$InstanceInner"); assertTrue(ClassFilters.name("com.navercorp.mock.TestObjectNestedClass$InstanceInner").accept(clazz)); assertFalse(ClassFilters.name("com.navercorp.mock.InvalidClassName").accept(clazz)); assertFalse(ClassFilters.name((String[]) null).accept(clazz)); assertFalse(ClassFilters.name(null, null).accept(clazz)); } @Test public void enclosingMethod() { InstrumentClass clazz = mock(InstrumentClass.class); when(clazz.hasEnclosingMethod("call", "int")).thenReturn(Boolean.TRUE); assertTrue(ClassFilters.enclosingMethod("call", "int").accept(clazz)); assertFalse(ClassFilters.enclosingMethod("invalid", "int").accept(clazz)); } @Test public void interfaze() { InstrumentClass clazz = mock(InstrumentClass.class); when(clazz.getInterfaces()).thenReturn(new String[] { "java.util.concurrent.Callable" }); assertTrue(ClassFilters.interfaze("java.util.concurrent.Callable").accept(clazz)); assertFalse(ClassFilters.interfaze("java.lang.Runnable").accept(clazz)); } @Test public void chain() { InstrumentClass clazz = mock(InstrumentClass.class); when(clazz.hasEnclosingMethod("call", "int")).thenReturn(Boolean.TRUE); when(clazz.getInterfaces()).thenReturn(new String[] { "java.util.concurrent.Callable" }); assertTrue(ClassFilters.chain(ClassFilters.enclosingMethod("call", "int"), ClassFilters.interfaze("java.util.concurrent.Callable")).accept(clazz)); assertFalse(ClassFilters.chain(ClassFilters.enclosingMethod("invalid", "int"), ClassFilters.interfaze("java.lang.Runnable")).accept(clazz)); } }