@Override public int compare(Drug d1, Drug d2) { return compareDrugNamesIgnoringNumericals(d1, d2); }
/** * Compare drug names ignoring numericals and other characters. Using compareToIgnoreCase() * method to prevent a capital letter getting precedence over a simple letter which comes before * it in the alphabet. * * @param d1 the first Drug to be compared * @param d2 the second Drug to be compared * @return the int * @should return negative if name for drug1 comes before that of drug2 * @should return zero if name for drug1 comes before that of drug2 * @should return positive if name for drug1 comes before that of drug2 ignoring dashes * @should return positive if name for drug1 comes before that of drug2 ignoring numerics */ private int compareDrugNamesIgnoringNumericals(Drug d1, Drug d2) { String firstDrugName = remove(d1.getName()); String secondDrugName = remove(d2.getName()); return firstDrugName.compareToIgnoreCase(secondDrugName); }
/** * @see DrugsByNameComparator#compareDrugNamesIgnoringNumericals(Drug,Drug) */ @Test public void compareDrugNamesIgnoringNumericals_shouldReturnZeroIfNameForDrug1ComesBeforeThatOfDrug2() { Drug drug1 = new Drug(); drug1.setName("ABCD"); Drug drug2 = new Drug(); drug2.setName("abcd"); DrugsByNameComparator dComparator = new DrugsByNameComparator(); int actualValue = dComparator.compare(drug1, drug2); Assert.assertEquals(actualValue, 0); }
/** * @see DrugsByNameComparator#compareDrugNamesIgnoringNumericals(Drug,Drug) */ @Test public void compareDrugNamesIgnoringNumericals_shouldReturnPositiveIfNameForDrug1ComesBeforeThatOfDrug2IgnoringNumerics() { Drug drug1 = new Drug(); drug1.setName("AB1AB"); Drug drug2 = new Drug(); drug2.setName("ABAA"); DrugsByNameComparator dComparator = new DrugsByNameComparator(); int actualValue = dComparator.compare(drug1, drug2); Assert.assertEquals(actualValue, 1); }
/** * @see DrugsByNameComparator#compareDrugNamesIgnoringNumericals(Drug,Drug) */ @Test public void compareDrugNamesIgnoringNumericals_shouldReturnPositiveIfNameForDrug1ComesBeforeThatOfDrug2IgnoringDashes() { Drug drug1 = new Drug(); drug1.setName("AB-AB"); Drug drug2 = new Drug(); drug2.setName("ABAA"); DrugsByNameComparator dComparator = new DrugsByNameComparator(); int actualValue = dComparator.compare(drug1, drug2); Assert.assertEquals(actualValue, 1); }
/** * @see DrugsByNameComparator#compareDrugNamesIgnoringNumericals(Drug,Drug) */ @Test public void compareDrugNamesIgnoringNumericals_shouldReturnNegativeIfNameForDrug1ComesBeforeThatOfDrug2() { Drug drug1 = new Drug(); drug1.setName("ABCD"); Drug drug2 = new Drug(); drug2.setName("BCDE"); DrugsByNameComparator dComparator = new DrugsByNameComparator(); int actualValue = dComparator.compare(drug1, drug2); Assert.assertEquals(actualValue, -1); }