@Test
public void epithetQualifiers() throws Exception {

  pn.setGenus("Abies");
  pn.setSpecificEpithet("alba");
  pn.setEpithetQualifier(NamePart.SPECIFIC, "aff.");
  assertEquals("Abies alba", NameFormatter.canonicalMinimal(pn));
  assertEquals("Abies aff. alba", pn.canonicalName());
  assertEquals("Abies aff. alba", pn.canonicalNameComplete());

  pn.getEpithetQualifier().clear();
  pn.setEpithetQualifier(NamePart.INFRASPECIFIC, "cf.");
  pn.setInfraspecificEpithet("alpina");
  pn.setRank(Rank.VARIETY);
  pn.setCombinationAuthorship(Authorship.yearAuthors("1887", "Mill."));
  pn.setBasionymAuthorship(Authorship.authors("Carl."));
  pn.setNotho(NamePart.GENERIC);
  pn.setNomenclaturalNote("nom. illeg.");
  
  assertEquals("Abies alba alpina", NameFormatter.canonicalMinimal(pn));
  assertEquals("× Abies alba cf. var. alpina (Carl.) Mill., 1887", NameFormatter.canonical(pn));
  assertEquals("× Abies alba cf. var. alpina (Carl.) Mill., 1887, nom. illeg.", NameFormatter.canonicalComplete(pn));
}