Skip to content

Instantly share code, notes, and snippets.

@bytesandwich
Created August 12, 2012 23:30
Show Gist options
  • Save bytesandwich/3335307 to your computer and use it in GitHub Desktop.
Save bytesandwich/3335307 to your computer and use it in GitHub Desktop.
IntegrationTest.java
protected abstract static class ListComparer<T> {
protected abstract Comparable compareBy(T item);
protected boolean equalLists(List<T> result, List<T> expected) {
if (result == null || expected == null) {
return result == null && expected == null;
}
Comparator<T> comparator = new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
if (o1 == null || o2 == null) {
if (o1 == null && o2 == null) {
return 0;
} else if (o1 == null) {
return 1;
} else {
return -1;
}
}
return compareBy(o1).compareTo(compareBy(o2));
}
};
Collections.sort(result, comparator);
Collections.sort(expected, comparator);
Iterator<T> expectedIter = expected.iterator();
Iterator<T> resultIter = result.iterator();
T expectedT;
T resultT;
while(expectedIter.hasNext()) {
expectedT = expectedIter.next();
if (!resultIter.hasNext()) {
return false;
}
resultT = resultIter.next();
if (compareBy(expectedT).compareTo(compareBy(resultT)) != 0) {
return false;
}
}
return !resultIter.hasNext();
}
}
@bytesandwich
Copy link
Author

public boolean equalCourseListsById(Collection<Course> result, Collection<Course> expected) {
        return new CollectionComparer<Course>() {
            protected Comparable compareBy(Course item) {
                return item.getId();
            };
        }.equalLists(result, expected);
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment