package org.springframework.roo.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.springframework.roo.model.JavaType.BOOLEAN_OBJECT; import static org.springframework.roo.model.JavaType.BOOLEAN_PRIMITIVE; import static org.springframework.roo.model.JavaType.BYTE_ARRAY_PRIMITIVE; import static org.springframework.roo.model.JavaType.INT_OBJECT; import static org.springframework.roo.model.JavaType.OBJECT; import static org.springframework.roo.model.JavaType.STRING; import static org.springframework.roo.model.JavaType.listOf; import org.junit.Test; public class JavaTypeTest { @Test public void testArrayTypeIsMultiValued() { assertTrue(BYTE_ARRAY_PRIMITIVE.isMultiValued()); } @Test public void testBooleanObjectIsBoolean() { assertTrue(BOOLEAN_OBJECT.isBoolean()); } @Test public void testBooleanPrimitiveIsBoolean() { assertTrue(BOOLEAN_PRIMITIVE.isBoolean()); } @Test public void testCollectionTypesAreMultiValued() { assertTrue(listOf(INT_OBJECT).isMultiValued()); } @Test public void testCoreTypeIsCoreType() { assertTrue(STRING.isCoreType()); } @Test public void testEnclosingTypeDetection() { // No enclosing types assertNull(new JavaType("BarBar").getEnclosingType()); assertNull(new JavaType("com.foo.Car").getEnclosingType()); assertNull(new JavaType("foo.Sar").getEnclosingType()); assertNull(new JavaType("bob").getEnclosingType()); // Enclosing type in default package assertEquals(new JavaType("Bob"), new JavaType("Bob.Smith").getEnclosingType()); assertEquals(new JavaPackage(""), new JavaType("Bob.Smith").getEnclosingType().getPackage()); // Enclosing type in declared package assertEquals(new JavaType("foo.My"), new JavaType("foo.My.Sar").getEnclosingType()); // Enclosing type in declared package several levels deep assertEquals(new JavaType("foo.bar.My"), new JavaType("foo.bar.My.Sar").getEnclosingType()); assertEquals("com.foo._MyBar", new JavaType("com.foo._MyBar").getFullyQualifiedTypeName()); assertEquals(new JavaType("com.Foo.Bar"), new JavaType("com.Foo.Bar.My").getEnclosingType()); assertEquals(new JavaType("com.foo.BAR"), new JavaType("com.foo.BAR.My").getEnclosingType()); // Enclosing type us explicitly specified assertEquals(new JavaPackage("com.foo"), new JavaType("com.foo.Bob.Smith", new JavaType( "com.foo.Bob")).getEnclosingType().getPackage()); assertEquals(new JavaType("com.foo.Bob"), new JavaType("com.foo.Bob.Smith", new JavaType( "com.foo.Bob")).getEnclosingType()); } @Test public void testGetBaseTypeForNonCollectionType() { assertEquals(STRING, STRING.getBaseType()); } @Test public void testGetBaseTypeForParameterisedCollectionType() { assertEquals(STRING, JavaType.listOf(STRING).getBaseType()); } @Test public void testGetBaseTypeForUnparameterisedCollectionType() { assertNull(JdkJavaType.LIST.getBaseType()); } @Test public void testObjectIsNotBoolean() { assertFalse(OBJECT.isBoolean()); } @Test public void testSingleValuedTypeIsNotMultiValued() { assertFalse(STRING.isMultiValued()); } @Test public void testTypeInRootPackage() { assertEquals("", new JavaType("MyRootClass").getPackage().getFullyQualifiedPackageName()); } @Test public void testUserTypeIsNonCoreType() { assertFalse(new JavaType("com.example.Thing").isCoreType()); } }