package org.springframework.roo.metadata; 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.metadata.MetadataIdentificationUtils.INSTANCE_DELIMITER; import static org.springframework.roo.metadata.MetadataIdentificationUtils.MID_PREFIX; import junit.framework.Assert; import org.junit.Test; /** * Unit test of {@link MetadataIdentificationUtils} * * @author Andrew Swan * @since 1.2.0 */ public class MetadataIdentificationUtilsTest { private static final String INSTANCE_CLASS = Integer.class.getName(); // normally private static final String METADATA_CLASS = MetadataItem.class.getName(); private static final String CLASS_MID = MID_PREFIX + METADATA_CLASS; private static final String INSTANCE_MID = MID_PREFIX + METADATA_CLASS + INSTANCE_DELIMITER + INSTANCE_CLASS; @Test public void testBlankMidIsNotValid() { assertFalse(MetadataIdentificationUtils.isValid("\t\n\r")); } @Test public void testClassIdFromBadlyFormedMetadataClassName() { assertNull(MetadataIdentificationUtils.create("foo#bar")); } @Test public void testClassIdFromEmptyMetadataClassName() { assertNull(MetadataIdentificationUtils.create("")); } @Test public void testClassIdFromNonNullMetadataClass() { assertEquals(CLASS_MID, MetadataIdentificationUtils.create(MetadataItem.class)); } @Test public void testClassIdFromNullMetadataClass() { assertNull(MetadataIdentificationUtils.create((Class<?>) null)); } @Test public void testClassIdFromNullMetadataClassName() { assertNull(MetadataIdentificationUtils.create((String) null)); } @Test public void testClassIdFromWellFormedMetadataClassName() { // Normally this would be a class that implements MetadataItem assertEquals(MID_PREFIX + METADATA_CLASS, MetadataIdentificationUtils.create(METADATA_CLASS)); } @Test public void testClassMidIsClassMid() { assertTrue(MetadataIdentificationUtils.isIdentifyingClass(CLASS_MID)); } @Test public void testClassMidIsNotInstanceMid() { assertFalse(MetadataIdentificationUtils.isIdentifyingInstance(CLASS_MID)); } @Test public void testClassMidIsValid() { assertTrue(MetadataIdentificationUtils.isValid(CLASS_MID)); } @Test public void testEmptyMidIsNotValid() { assertFalse(MetadataIdentificationUtils.isValid("")); } @Test public void testGetInstanceKey() { assertEquals(INSTANCE_CLASS, MetadataIdentificationUtils.getMetadataInstance(INSTANCE_MID)); } @Test public void testGetMetadataClassFromClassMid() { assertEquals(METADATA_CLASS, MetadataIdentificationUtils.getMetadataClass(CLASS_MID)); } @Test public void testGetMetadataClassFromEmptyMid() { assertNull(MetadataIdentificationUtils.getMetadataClass("")); } @Test public void testGetMetadataClassFromInstanceMid() { assertEquals(METADATA_CLASS, MetadataIdentificationUtils.getMetadataClass(INSTANCE_MID)); } @Test public void testGetMetadataClassFromMidPrefix() { assertNull(MetadataIdentificationUtils.getMetadataClass(MID_PREFIX)); } @Test public void testGetMetadataClassFromMidPrefixPlusDelimiter() { assertNull(MetadataIdentificationUtils.getMetadataClass(MID_PREFIX + INSTANCE_DELIMITER)); } @Test public void testGetMetadataClassFromNullMid() { assertNull(MetadataIdentificationUtils.getMetadataClass(null)); } @Test public void testGetMetadataClassIdFromClassMid() { assertEquals(MID_PREFIX + METADATA_CLASS, MetadataIdentificationUtils.getMetadataClassId(CLASS_MID)); } @Test public void testGetMetadataClassIdFromEmptyMid() { assertNull(MetadataIdentificationUtils.getMetadataClassId("")); } @Test public void testGetMetadataClassIdFromInstanceMid() { assertEquals(MID_PREFIX + METADATA_CLASS, MetadataIdentificationUtils.getMetadataClassId(INSTANCE_MID)); } @Test public void testGetMetadataClassIdFromMidPrefix() { assertNull(MetadataIdentificationUtils.getMetadataClassId(MID_PREFIX)); } @Test public void testGetMetadataClassIdFromMidPrefixPlusDelimiter() { assertNull(MetadataIdentificationUtils.getMetadataClassId(MID_PREFIX + INSTANCE_DELIMITER)); } @Test public void testGetMetadataClassIdFromNullMid() { assertNull(MetadataIdentificationUtils.getMetadataClassId(null)); } @Test public void testGetMetadataInstanceFromClassMid() { assertNull(MetadataIdentificationUtils.getMetadataInstance(CLASS_MID)); } @Test public void testGetMetadataInstanceFromEmptyMid() { assertNull(MetadataIdentificationUtils.getMetadataInstance("")); } @Test public void testGetMetadataInstanceFromInstanceMid() { assertEquals(INSTANCE_CLASS, MetadataIdentificationUtils.getMetadataInstance(INSTANCE_MID)); } @Test public void testGetMetadataInstanceFromMidPrefix() { assertNull(MetadataIdentificationUtils.getMetadataInstance(MID_PREFIX)); } @Test public void testGetMetadataInstanceFromMidPrefixPlusDelimiter() { assertNull(MetadataIdentificationUtils.getMetadataInstance(MID_PREFIX + INSTANCE_DELIMITER)); } @Test public void testGetMetadataInstanceFromNullMid() { assertNull(MetadataIdentificationUtils.getMetadataInstance(null)); } @Test public void testInstanceIdFromNullInstanceKey() { assertNull(MetadataIdentificationUtils.create(METADATA_CLASS, null)); } @Test public void testInstanceIdFromValidInputs() { assertEquals(MID_PREFIX + METADATA_CLASS + INSTANCE_DELIMITER + INSTANCE_CLASS, MetadataIdentificationUtils.create(METADATA_CLASS, INSTANCE_CLASS)); } @Test public void testInstanceMidIsInstanceMid() { assertTrue(MetadataIdentificationUtils.isIdentifyingInstance(INSTANCE_MID)); } @Test public void testInstanceMidIsNotClassMid() { assertFalse(MetadataIdentificationUtils.isIdentifyingClass(INSTANCE_MID)); } @Test public void testInstanceMidIsValid() { assertTrue(MetadataIdentificationUtils.isValid(CLASS_MID)); } @Test public void testMetadataIdentifierCreation() { Assert.assertEquals("MID:com.foo.Bar", MetadataIdentificationUtils.create("com.foo.Bar")); Assert.assertNull(MetadataIdentificationUtils.create((String) null)); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar#")); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar#foo")); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar # ")); Assert.assertNull(MetadataIdentificationUtils.create("")); Assert.assertNull(MetadataIdentificationUtils.create("#")); Assert.assertEquals("MID:com.foo.Bar#239", MetadataIdentificationUtils.create("com.foo.Bar", "239")); Assert.assertEquals("MID:com.foo.Bar#239 #40", MetadataIdentificationUtils.create("com.foo.Bar", "239 #40")); Assert.assertNull(MetadataIdentificationUtils.create(null, "239")); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar#", "239")); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar#foo", "239")); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar # ", "239")); Assert.assertNull(MetadataIdentificationUtils.create("", "239")); Assert.assertNull(MetadataIdentificationUtils.create("#", "239")); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar", null)); Assert.assertNull(MetadataIdentificationUtils.create("com.foo.Bar", "")); } @Test public void testMetadataIdentifierParsing() { Assert.assertFalse(MetadataIdentificationUtils.isIdentifyingInstance("MID:com.foo.Bar")); Assert.assertFalse(MetadataIdentificationUtils.isIdentifyingInstance("MID:com.foo.Bar#")); Assert.assertTrue(MetadataIdentificationUtils.isIdentifyingInstance("MID:com.foo.Bar#239")); Assert.assertTrue(MetadataIdentificationUtils.isIdentifyingClass("MID:com.foo.Bar")); Assert.assertFalse(MetadataIdentificationUtils.isIdentifyingClass("MID:com.foo.Bar#")); Assert.assertFalse(MetadataIdentificationUtils.isIdentifyingClass("MID:com.foo.Bar#239")); Assert.assertNull(MetadataIdentificationUtils.getMetadataClass("MID:")); Assert.assertNull(MetadataIdentificationUtils.getMetadataClass("MID:#")); Assert.assertEquals("com.foo.Bar", MetadataIdentificationUtils.getMetadataClass("MID:com.foo.Bar")); Assert.assertEquals("com.foo.Bar", MetadataIdentificationUtils.getMetadataClass("MID:com.foo.Bar#")); Assert.assertEquals("com.foo.Bar", MetadataIdentificationUtils.getMetadataClass("MID:com.foo.Bar#239")); Assert.assertEquals("239", MetadataIdentificationUtils.getMetadataInstance("MID:com.foo.Bar#239")); Assert.assertEquals("239", MetadataIdentificationUtils.getMetadataInstance("MID:#239")); Assert.assertEquals("239 #40", MetadataIdentificationUtils.getMetadataInstance("MID:#239 #40")); Assert.assertNull(MetadataIdentificationUtils.getMetadataInstance("MID:com.foo.Bar#")); Assert.assertNull(MetadataIdentificationUtils.getMetadataInstance("MID:com.foo.Bar 239")); } @Test public void testMidPrefixIsNotValid() { assertFalse(MetadataIdentificationUtils.isValid(MID_PREFIX)); } @Test public void testNullMidIsNotValid() { assertFalse(MetadataIdentificationUtils.isValid(null)); } @Test public void testUnprefixedMidIsNotValid() { assertFalse(MetadataIdentificationUtils.isValid(METADATA_CLASS)); } }