### Question:
ChecksumGeneratorImpl implements ChecksumGenerator { protected String getChecksumKey(String aggregatePath, String path) { if ("/".equals(aggregatePath) && "/".equals(path)) { return "/"; } else if ("/".equals(aggregatePath)) { return path; } String baseNodeName = Text.getName(aggregatePath); String relPath = StringUtils.removeStart(path, aggregatePath); return baseNodeName + relPath; }  Map<String, String> generateChecksums(Session session, String path); Map<String, String> generateChecksums(Session session, String path, ChecksumGeneratorOptions options);  }### Answer:
@Test public void testGetChecksumKey() { String expected = "jcr:content"; String actual = checksumGenerator.getChecksumKey("/content/page/jcr:content", "/content/page/jcr:content"); assertEquals(expected, actual); expected = "jcr:content/foo"; actual = checksumGenerator.getChecksumKey("/content/page/jcr:content", "/content/page/jcr:content/foo"); assertEquals(expected, actual); expected = "jcr:content/foo/bar"; actual = checksumGenerator.getChecksumKey("/content/page/jcr:content", "/content/page/jcr:content/foo/bar"); assertEquals(expected, actual); expected = "/"; actual = checksumGenerator.getChecksumKey("/", "/"); assertEquals(expected, actual); expected = "/etc/workflow"; actual = checksumGenerator.getChecksumKey("/", "/etc/workflow"); assertEquals(expected, actual); }