### Question:
DefaultPhysicalTypeMetadata extends AbstractMetadataItem implements
    PhysicalTypeMetadata { public String getItdCanonicalPath(final ItdMetadataProvider metadataProvider) { Validate.notNull(metadataProvider, "Metadata provider required"); final int dropFrom = physicalLocationCanonicalPath.lastIndexOf(".java"); Validate.isTrue(dropFrom > -1, "Unexpected governor filename format '" + physicalLocationCanonicalPath + "'"); return physicalLocationCanonicalPath.substring(0, dropFrom) + "_Roo_" + metadataProvider.getItdUniquenessFilenameSuffix() + ".aj"; } DefaultPhysicalTypeMetadata(final String metadataIdentificationString,
      final String physicalLocationCanonicalPath, final ClassOrInterfaceTypeDetails cid); String getItdCanoncialPath(final ItdMetadataProvider metadataProvider); String getItdCanonicalPath(final ItdMetadataProvider metadataProvider); JavaType getItdJavaType(final ItdMetadataProvider metadataProvider); ClassOrInterfaceTypeDetails getMemberHoldingTypeDetails(); String getPhysicalLocationCanonicalPath(); JavaType getType(); @Override String toString();  }### Answer:
@Test public void testGetItdCanonicalPath() { final ItdMetadataProvider mockItdMetadataProvider = mock(ItdMetadataProvider.class); when(mockItdMetadataProvider.getItdUniquenessFilenameSuffix()).thenReturn("MySuffix"); final String itdCanonicalPath = metadata.getItdCanonicalPath(mockItdMetadataProvider); assertEquals("/usr/bob/projects/foo/Foo_Roo_MySuffix.aj", itdCanonicalPath); }