package testcases.generator; import java.lang.reflect.Modifier; import org.testng.annotations.Test; import de.jpaw.bonaparte.core.BonaPortable; import de.jpaw.bonaparte.pojos.access.*; public class TestAccessTypes { static private final int ACCESS_MODIFIERS = Modifier.PRIVATE | Modifier.PROTECTED | Modifier.PUBLIC; static private void testClass(Class<? extends BonaPortable> clazz, int defaultType) throws NoSuchFieldException, SecurityException { assert (clazz.getDeclaredField("isDefault").getModifiers() & ACCESS_MODIFIERS) == defaultType; assert (clazz.getDeclaredField("isPrivate").getModifiers() & ACCESS_MODIFIERS) == Modifier.PRIVATE; assert (clazz.getDeclaredField("isProtected").getModifiers() & ACCESS_MODIFIERS) == Modifier.PROTECTED; assert (clazz.getDeclaredField("isPublic").getModifiers() & ACCESS_MODIFIERS) == Modifier.PUBLIC; } @Test public void testAccessTypes() throws Exception { testClass(NoDefaults.class, 0); testClass(DefaultPrivate.class, Modifier.PRIVATE); testClass(DefaultProtected.class, Modifier.PROTECTED); testClass(DefaultPublic.class, Modifier.PUBLIC); } @Test public void testAccessTypesWT() throws Exception { testClass(NoDefaultsWT.class, 0); testClass(DefaultPrivateWT.class, Modifier.PRIVATE); testClass(DefaultProtectedWT.class, Modifier.PROTECTED); testClass(DefaultPublicWT.class, Modifier.PUBLIC); } @Test public void testTypeAccess() throws Exception { assert ((Inherited.class.getDeclaredField("shouldBeDefault").getModifiers() & ACCESS_MODIFIERS) == 0); assert ((Inherited.class.getDeclaredField("shouldBePrivate").getModifiers() & ACCESS_MODIFIERS) == Modifier.PRIVATE); } }