package net.bytebuddy.description.modifier;
import net.bytebuddy.test.utility.ObjectPropertyAssertion;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.Collection;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@RunWith(Parameterized.class)
public class ModifierContributorTest {
private final Class<? extends ModifierContributor> type;
public ModifierContributorTest(Class<? extends ModifierContributor> type) {
this.type = type;
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][]{
{EnumerationState.class},
{FieldManifestation.class},
{MethodArguments.class},
{MethodManifestation.class},
{MethodStrictness.class},
{Ownership.class},
{ParameterManifestation.class},
{ProvisioningState.class},
{SynchronizationState.class},
{SyntheticState.class},
{TypeManifestation.class},
{Visibility.class}
});
}
@Test
public void testRange() throws Exception {
ModifierContributor[] modifierContributor = (ModifierContributor[]) type.getDeclaredMethod("values").invoke(null);
int mask = 0;
for (ModifierContributor contributor : modifierContributor) {
mask |= contributor.getMask();
}
for (ModifierContributor contributor : modifierContributor) {
assertThat(mask, is(contributor.getRange()));
}
}
@Test
public void testObjectProperties() throws Exception {
ObjectPropertyAssertion.of(type).apply();
}
}