package net.bytebuddy.description.type;
import net.bytebuddy.description.annotation.AnnotationList;
import net.bytebuddy.test.visibility.Sample;
import net.bytebuddy.test.visibility.child.Child;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
public abstract class AbstractPackageDescriptionTest {
protected abstract PackageDescription describe(Class<?> type);
@Test
public void testTrivialPackage() throws Exception {
assertThat(describe(Child.class).getName(), is(Child.class.getPackage().getName()));
assertThat(describe(Child.class).getDeclaredAnnotations(), is((AnnotationList) new AnnotationList.Empty()));
}
@Test
public void testNonTrivialPackage() throws Exception {
assertThat(describe(Sample.class).getName(), is(Sample.class.getPackage().getName()));
assertThat(describe(Sample.class).getDeclaredAnnotations(),
is((AnnotationList) new AnnotationList.ForLoadedAnnotations(Sample.class.getPackage().getDeclaredAnnotations())));
}
@Test
public void testPackageContains() throws Exception {
assertThat(describe(Child.class).contains(new TypeDescription.ForLoadedType(Child.class)), is(true));
assertThat(describe(Object.class).contains(new TypeDescription.ForLoadedType(Child.class)), is(false));
}
@Test
public void testHashCode() throws Exception {
assertThat(describe(Child.class).hashCode(), is(Child.class.getPackage().hashCode()));
assertThat(describe(Child.class).hashCode(), is(describe(Child.class).hashCode()));
assertThat(describe(Child.class).hashCode(), not(describe(Sample.class).hashCode()));
assertThat(describe(Sample.class).hashCode(), is(Sample.class.getPackage().hashCode()));
assertThat(describe(Sample.class).hashCode(), is(describe(Sample.class).hashCode()));
assertThat(describe(Sample.class).hashCode(), not(describe(Child.class).hashCode()));
}
@Test
public void testEquals() throws Exception {
assertThat(describe(Child.class).toString(), not(equalTo(null)));
assertThat(describe(Child.class).toString(), not(new Object()));
assertThat(describe(Child.class).toString(), is(describe(Child.class).toString()));
assertThat(describe(Child.class).toString(), not(describe(Sample.class).toString()));
assertThat(describe(Sample.class).toString(), is(describe(Sample.class).toString()));
assertThat(describe(Sample.class).toString(), not(describe(Child.class).toString()));
}
@Test
public void testToString() throws Exception {
assertThat(describe(Child.class).toString(), is(Child.class.getPackage().toString()));
assertThat(describe(Child.class).toString(), is(describe(Child.class).toString()));
assertThat(describe(Child.class).toString(), not(describe(Sample.class).toString()));
assertThat(describe(Sample.class).toString(), is(Sample.class.getPackage().toString()));
assertThat(describe(Sample.class).toString(), is(describe(Sample.class).toString()));
assertThat(describe(Sample.class).toString(), not(describe(Child.class).toString()));
}
}