### Question:
DN implements Comparable<DN>, Serializable { public boolean isDescendantOf(DN dn) { int offset = numComponents - dn.numComponents; if (offset < 0) { return false; } for (int i=0; i < dn.numComponents; i++) { if (! rdnComponents[i+offset].equals(dn.rdnComponents[i])) { return false; } } return true; } DN();  DN(RDN[] rdnComponents);  DN(List<RDN> rdnComponents);  DN(RDN rdn, DN parentDN); static DN rootDN(); boolean isRootDN(); int size(); RDN rdn(); DN rename(final DN fromDN, final DN toDN); RDN getRDN(int pos); DN parent(); DN getParentDNInSuffix(); DN child(RDN rdn); DN concat(RDN[] rdnComponents); DN child(DN relativeBaseDN); boolean isDescendantOf(DN dn); boolean isAncestorOf(DN dn); boolean matchesBaseAndScope(DN baseDN, SearchScope scope); static DN decode(ByteSequence dnString); static DN valueOf(String dnString); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString(); void toString(StringBuilder buffer); String toNormalizedUrlSafeString(); ByteString toNormalizedByteString(); @Override int compareTo(DN other); static final DN NULL_DN; static final byte NORMALIZED_RDN_SEPARATOR; static final byte NORMALIZED_AVA_SEPARATOR; static final byte NORMALIZED_ESC_BYTE; }### Answer:
@Test(dataProvider = "createIsDescendantOfTestData") public void testIsDescendantOf(String s, String d, boolean e) throws Exception { DN dn = DN.valueOf(s); DN other = DN.valueOf(d); assertEquals(dn.isDescendantOf(other), e, s + " isDescendantOf " + d); }